Помощь в написание кода Ардуино мега 2560 + шилд

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Аватара пользователя
mazahaka7sk
Сообщения: 54
Зарегистрирован: Сб фев 20, 2016 8:46 am
Откуда: Усть-Каменогорс
Благодарил (а): 8 раз
Поблагодарили: 10 раз
Контактная информация:

Помощь в написание кода Ардуино мега 2560 + шилд

Сообщение mazahaka7sk » Пт апр 14, 2017 10:05 am

Добрый день друзья товарищи) среди нас есть кто сможет написать код для ардуино мега с интернет шилдом.
раньше пользовался через USB и программой arduino_gw но она зависает часто купил себе интернет шилд вот теперь не могу подобрать код для своих нужд.
вот раньше мой код
СпойлерПоказать
int cycle_counter=0;
char val = 0;
int old_SensorSpalnaD=0;
int old_SensorZalD=0;
int old_SensorKyxnaD=0;
int old_SensorKoridorD=0;
int old_SensorTyaletD=0;
int old_SensorvodiKyx=0;
int soundPin = 13;
int old_movement_1=0;
int old_SensorVodiSpalna=0;

unsigned int sensorValue = 0;
char buf[80];

// Функция отправки HTTP-запроса на сервер
void sendHTTPRequest() {
Serial.println(buf);
}


void setup()
{

pinMode(2, INPUT); // Датчик движение спальня 2 пин
old_SensorSpalnaD=digitalRead(2);

pinMode(3, INPUT); // Датчик движение зал 3 пин
old_SensorZalD=digitalRead(3);

pinMode(4, INPUT); // Датчик движение кухня 4 пин
old_SensorKyxnaD=digitalRead(4);

pinMode(5, INPUT); // Датчик движение коридор 5 пин
old_SensorKoridorD=digitalRead(5);

pinMode(6, INPUT); // Датчик движение туалет 6 пин
old_SensorTyaletD=digitalRead(6);

pinMode(7, OUTPUT); // реле света спальня 7 пин

pinMode(8, OUTPUT); // реле подсветки кухня 8 пин

pinMode(9, INPUT); // Датчик движения 1
old_movement_1=digitalRead(9);

pinMode(10, INPUT); // сенсор воды кухня 10 пин
old_SensorvodiKyx=digitalRead(10);

pinMode(11, OUTPUT); // реле звука туалет 11 пин


pinMode(12, OUTPUT); // ЛАЗЕР пин 12

pinMode(soundPin, OUTPUT); // Пищалка пин 13

Serial.begin(115200); // Скорость консольного порта 9600 (пригодится для отладки)

pinMode(A1, INPUT); // протечка спальня

}

void loop()
{
{
if (Serial.available() > 0) {
val = Serial.read();
if (val=='B') digitalWrite(7,HIGH); // выключить Свет Спальня пин 7
if (val=='V') digitalWrite(7,LOW); // включить Свет Спальня пин 7

if (val=='Z') digitalWrite(8,HIGH); // выключить Свет кухня пин 8
if (val=='X') digitalWrite(8,LOW); // включить Свет кухня пин 8

if (val=='S') digitalWrite(12,LOW); // выключить ЛАЗЕР пин 12
if (val=='D') digitalWrite(12,HIGH); // включить ЛАЗЕР пин 12

if (val=='F') tone(soundPin, 500); // включаем звук частотой 500 Гц
if (val=='G') noTone(soundPin); // выключаем звук Пищалка пин 13


}
}


int valid_sensor=0;
delay(1000); // задержка в 0.1 сек.
cycle_counter++;

if (cycle_counter>600) {
cycle_counter=0;
}

//движение спальня
Serial.println("G");
int current_SensorSpalnaD=digitalRead(2);
//Serial.println(current_SensorSpalnaD);
if (current_SensorSpalnaD!=(int)old_SensorSpalnaD) {
old_SensorSpalnaD=(int)current_SensorSpalnaD;
sprintf(buf, "GET /objects/?object=SensorSpalnaD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorSpalnaD);
sendHTTPRequest();
}

//Движение зал
Serial.println("H");
int current_SensorZalD=digitalRead(3);
//Serial.println(current_SensorZalD);
if (current_SensorZalD!=(int)old_SensorZalD) {
old_SensorZalD=(int)current_SensorZalD;
sprintf(buf, "GET /objects/?object=SensorZalD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorZalD);
sendHTTPRequest();
}

//Движение кухня
Serial.println("T");
int current_SensorKyxnaD=digitalRead(4);
//Serial.println(current_SensorKyxnaD);
if (current_SensorKyxnaD!=(int)old_SensorKyxnaD) {
old_SensorKyxnaD=(int)current_SensorKyxnaD;
sprintf(buf, "GET /objects/?object=SensorKyxnaD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorKyxnaD);
sendHTTPRequest();
}

//Движение коридор
Serial.println("N");
int current_SensorKoridorD=digitalRead(5);
//Serial.println(current_SensorKoridorD);
if (current_SensorKoridorD!=(int)old_SensorKoridorD) {
old_SensorKoridorD=(int)current_SensorKoridorD;
sprintf(buf, "GET /objects/?object=SensorKoridorD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorKoridorD);
sendHTTPRequest();
}

//Движение туалет
Serial.println("O");
int current_SensorTyaletD=digitalRead(6);
//Serial.println(current_SensorTyaletD);
if (current_SensorTyaletD!=(int)old_SensorTyaletD) {
old_SensorTyaletD=(int)current_SensorTyaletD;
sprintf(buf, "GET /objects/?object=SensorTyaletD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorTyaletD);
sendHTTPRequest();

}


// Протечка кухня
Serial.println("P");
int current_SensorvodiKyx=digitalRead(10);
//Serial.println(current_SensorvodiKyx);
if (current_SensorvodiKyx!=(int)old_SensorvodiKyx) {
old_SensorvodiKyx=(int)current_SensorvodiKyx;
sprintf(buf, "GET /objects/?object=SensorvodiKyx&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorvodiKyx);
sendHTTPRequest();
}

//протечка спальня
Serial.println("P11");
int current_SensorVodiSpalna=analogRead(A1);
//Serial.println(current_SensorVodiSpalna);
if (current_SensorVodiSpalna!=(int)old_SensorVodiSpalna) {
old_SensorVodiSpalna=(int)current_SensorVodiSpalna;
sprintf(buf, "GET /objects/?object=SensorVodiSpalna&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorVodiSpalna);
sendHTTPRequest();

}
}
работал нормально
еще есть новые модули


у меня подключено 5 датчиков движения
6 реле для управления нагрузкой
звукой димер
1 датчик температуры
2 датчика дыма газа
Ультразвуковой датчик измерения расстояния HC-SR04
5 кнопок
ИК приемник для пульта
2 датчика пламени
Датчик света

вот кто поможет эти все датчики подключить точнее написать код чтоб все работали вместе?? в за ранние спасибо...

вот еще нашел код только там малая часть есть
СпойлерПоказать
/**
* Контроллер-исполнительное устройство (к проекту http://smartliving.ru/)
* Platform: Arduino MEGA + EthernetShield W5100
* IDE: Arduino 1.0.1
* RGB лента (или шим) пины 44 , 45 ,46
* DHt 19 21
* DS18B20 пин 2
* исполнительные устройства (реле) подключены к Digital 3 - 9
* управляющие кнопки 14 - 18
* обращение по http://xx.xx.xx.xx/ выдаст справочную информацию по этому устройству (нужно для того, чтобы когда обращаешься
* по IP к устройству понять что это за контроллер и пр.)
*
* /state - состояние всех портов
* /command - выполнение команды
* команды можно вызывать серией в 1 запросе. Например http://xx.xx.xx.xx/command?3=CLICK&4=CLICK&5=ON&6=OFF
* только длинна строки запроса не должна привышать maxLength
* /getdev - получить список всех устройст на 1-wire
* формат вывода:
* T<номер устройства на шине>:<HEX адрес устройства>:<текущая температура в градусах цельсия>;[...]
* (пример T0:1060CF59010800E3:24.06;T1:109ABE59010800FE:24.56;)
*
**/
#include "DHT.h"
#include <Ethernet.h>
#include <SPI.h>
#include <Arduino.h>
#include "WebServer.h" // Webduino (https://github.com/sirleech/Webduino)
#include <OneWire.h>
#include <DallasTemperature.h>
#include <math.h>
#define DHTPIN 19 // what pin we're connected to
#define DHTPIN_1 21
#define DHTTYPE DHT22 // DHT 22 (AM2302)


DHT dht(DHTPIN, DHTTYPE);
DHT dht1(DHTPIN_1, DHTTYPE);

const int analogPin = 8;
int sensorValue = 0;
int old_temperature1=0;
int old_tempKith = 0;
int old_tempLiv = 0;
int old_humKith = 0;
int old_humLiv = 0;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xE0, 0xDE, 0x33 }; // MAC-адрес нашего устройства
byte ip[] = { 192, 168, 100, 222 };
byte subnet[] = { 255, 255, 255, 0 };
byte gateway[] = { 192, 168, 100, 1 };
byte dns_server[] = { 192, 168, 100, 1 };
// ip-адрес удалённого сервера
byte server[] = { 192, 168, 100, 100 }; //Адрес сервера MAJORDOMO
char buf[80];
char ipbuff[16];

EthernetClient rclient;
// Функция отправки HTTP-запроса на сервер
void sendHTTPRequest() {
Serial.println(buf);
if (rclient.connect(server, 80)) {
rclient.print(buf);
rclient.println(" HTTP/1.0");
Serial.println("Send http get request");
Serial.println(buf);
rclient.print("Host: ");
sprintf(ipbuff, "%u.%u.%u.%u", ip[0], ip[1], ip[2], ip[3]);
rclient.println(ipbuff); // ip адрес нашего контроллера в текстовом виде
rclient.print("Content-Type: text/html\n");
rclient.println("Connection: close\n");
delay(1000);
rclient.stop();
} else {
Serial.println("FAILED");
}
}

void sendAPin(int a) {
int DPin = a-11;
if (digitalRead(a)==LOW){//если кнопка нажата и перемення flag равна 0 , то ...
digitalWrite(DPin,!digitalRead(DPin)); //Инвертируем выход
Serial.print("Button: ");
Serial.print(a);
Serial.print(" Pin: ");
Serial.print(DPin);
Serial.print(" = ");
Serial.println(digitalRead(DPin));
sprintf(buf, "GET /objects/?object=sensor222%i&op=m&m=st&status=%i", DPin, digitalRead(DPin));//Готовим запрос на сервер
sendHTTPRequest();

}
}


// Настройки выходов
int startPin=3;
int endPin=9;

// Настройки входов
int startAPin=14;
int endAPin=18;


// Pin controller for connection data pin DS18S20
#define ONE_WIRE_BUS 2 // Digital 2 pin Arduino (куда подключен выход с шины датчиков DS18X20
#define TEMPERATURE_PRECISION 9

#define VERSION_STRING "0.2"
#define COMPILE_DATE_STRING "2015-11-14"

P(Page_info) = "<html><head><title>" COMPILE_DATE_STRING" " VERSION_STRING "</title></head><body>\n";
P(location_info) = "NA";
P(pin_info) = "D2 - 1-wire";
P(version_info) = VERSION_STRING " " COMPILE_DATE_STRING;

String url = String(25);
int maxLength=25; // Максимальная длинна строки запроса

#define delayClick 1000 // задержка при обычном CLICK
#define delayLClick 3000 // задержка при длинном LCLICK
#define MAX_COMMAND_LEN (10)
#define MAX_PARAMETER_LEN (10)
#define COMMAND_TABLE_SIZE (8)
#define PREFIX ""

WebServer webserver(PREFIX, 80);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

// Для поиска
DeviceAddress Termometers;
float tempC;
float humKith;
float tempKith;
float humLiv;
float tempLiv;

#define NAMELEN 32
#define VALUELEN 32

char gCommandBuffer[MAX_COMMAND_LEN + 1];
char gParamBuffer[MAX_PARAMETER_LEN + 1];
long gParamValue;

typedef struct {
char const *name;
void (*function)(WebServer &server);
} command_t;

command_t const gCommandTable[COMMAND_TABLE_SIZE] = {
// {"LED", commandsLed, },
{"HELP", commandsHelp, }, // Выводит список комманд (вызов http://xx.xx.xx.xx/command?8=HELP )
{"ON", commandsOn, }, // Устанавливает "1" на заданном цифровом порту (вызов http://xx.xx.xx.xx/command?8=ON )
{"OFF", commandsOff, }, // Устанавливает "0" на заданном цифровом порту (вызов http://xx.xx.xx.xx/command?8=OFF )
{"STATUS", commandsStatus, }, // Получить состояние цифрового порта (1 или 0) (вызов http://xx.xx.xx.xx/command?8=STATUS ),
// если вместо номера порта передать ALL (вызов http://xx.xx.xx.xx/command?ALL=STATUS ), то получим состояние всех портов (Пример вывода P3=0;P4=0;P5=0;P6=0;P7=0;P8=1;P9=1;)
{"CLICK", commandsClick, }, // Кратковременная "1" на порту 1сек (время настраивается) (вызов http://xx.xx.xx.xx/command?8=CLICK )
{"LCLICK", commandsLClick, }, // Кратковременная "1" на порту 3сек (время настраивается) (вызов http://xx.xx.xx.xx/command?8=LCLICK )
{NULL, NULL }
};

/**********************************************************************************************************************
*
* Function: cliProcessCommand
*
* Description: Look up the command in the command table. If the
* command is found, call the command's function. If the
* command is not found, output an error message.
*
* Notes:
*
* Returns: None.
*
**********************************************************************/
void cliProcessCommand(WebServer &server)
{
int bCommandFound = false;
int idx;

gParamValue = strtol(gParamBuffer, NULL, 0); // Convert the parameter to an integer value. If the parameter is empty, gParamValue becomes 0.
for (idx = 0; gCommandTable[idx].name != NULL; idx++) { // Search for the command in the command table until it is found or the end of the table is reached. If the command is found, break out of the loop.
if (strcmp(gCommandTable[idx].name, gCommandBuffer) == 0) {
bCommandFound = true;
break;
}
}

if (bCommandFound == true) { // Если команда найдена (в массиве команд), то выполняем ее. Если нет - игнорируем
(*gCommandTable[idx].function)(server);
}
else { // Command not found
server.print("Command not found");
}
}


/**********************************************************************************************************************/
/* Обработчики команд */

void commandsOn(WebServer &server) {
if (gParamValue>=startPin && gParamValue<=endPin) {
digitalWrite(gParamValue,LOW);
} else ErrorMessage(server);
}

void commandsOff(WebServer &server) {
if (gParamValue>=startPin && gParamValue<=endPin) {
digitalWrite(gParamValue,HIGH);
} else ErrorMessage(server);
}

void commandsClick(WebServer &server) {
if (gParamValue>=startPin && gParamValue<=endPin) {
digitalWrite(gParamValue,LOW);
delay(delayClick);
digitalWrite(gParamValue,HIGH);
} else ErrorMessage(server);
}

void commandsLClick(WebServer &server) {
if (gParamValue>=startPin && gParamValue<=endPin) {
digitalWrite(gParamValue,LOW);
delay(delayLClick);
digitalWrite(gParamValue,HIGH);
} else ErrorMessage(server);
}

void commandsStatus(WebServer &server) {
if (strcmp(gParamBuffer, "ALL") == 0) { // выдать состояние всех пинов
for(int i=startPin;i<=endPin;i++) {
int st=digitalRead(i);
char my_st[5];
itoa(st,my_st,10);
server.print("P");
server.print(i);
server.print("=");
server.print(my_st);
server.print(";");
}
} else { // выдать состояние только 1 пина
if (gParamValue>=startPin && gParamValue<=endPin) {
server.print("P");
server.print(gParamValue);
server.print("=");
server.print(digitalRead(gParamValue));
} else ErrorMessage(server);
}
}

void commandsHelp(WebServer &server) {
int idx;
for (idx = 0; gCommandTable[idx].name != NULL; idx++) {
server.print(gCommandTable[idx].name);
server.print("<br>");
}
}

/**********************************************************************************************************************/

void ErrorMessage(WebServer &server) {
server.print("This Pin is not I/O");
}

/**********************************************************************************************************************
* Разбор запроса
**/
void parsedRequest(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
URLPARAM_RESULT rc;
char name[NAMELEN];
int name_len;
char value[VALUELEN];
int value_len;

server.httpSuccess(); // this line sends the standard "we're all OK" headers back to the browser

/* if we're handling a GET or POST, we can output our data here.
For a HEAD request, we just stop after outputting headers. */
if (type == WebServer::HEAD)
return;

if (strlen(url_tail))
{
while (strlen(url_tail)) // Разбор URI на составные части (выборка параметров)
{
rc = server.nextURLparam(&url_tail, name, NAMELEN, value, VALUELEN);
if (rc == URLPARAM_EOS) {
// server.printP(Params_end);
}
else // Получили параметр (name) и его значение (value)
{
// Выполняем команды
strcpy (gCommandBuffer, value); // параметры (значение)
strcpy (gParamBuffer, name); // команда
cliProcessCommand(server);
}
}
}
/*
if (type == WebServer::POST)
{
server.printP(Post_params_begin);
while (server.readPOSTparam(name, NAMELEN, value, VALUELEN))
{
server.print(name);
server.printP(Parsed_item_separator);
server.print(value);
server.printP(Tail_end);
}
}
*/

}

void get1wireDevices(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
//TODO получить все устройства на шине и выдать на страницу
int numberOfDevices = sensors.getDeviceCount();
sensors.begin();
sensors.requestTemperatures();
for(int i=0;i<numberOfDevices; i++) {
if(sensors.getAddress(Termometers, i))
{
server.print("T");
server.print(i);
server.print(":");
for (uint8_t i = 0; i < 8; i++) {
if (Termometers < 16) server.print("0");
server.print(Termometers, HEX);
}
float tempC = sensors.getTempC(Termometers);
server.print(":");
server.print(tempC);
server.print(";");
} else {
// not found
server.print("NOT FOUND");
}
}
}


void rgbCmd(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
URLPARAM_RESULT rc;
char name[32];
char value[32];
int pin;
int r = 0;
int g = 0;
int b = 0;

server.httpSuccess();
if (type == WebServer::HEAD)
return;

if (strlen(url_tail))
{
while (strlen(url_tail))
{
rc = server.nextURLparam(&url_tail, name, 32, value, 32);
if (rc == URLPARAM_EOS)
Serial.println("RGB");
else
{
if (String(name) == "r")
{
r = atoi(value);
}
if (String(name) == "g")
{
g = atoi(value);
}
if (String(name) == "b")
{
b = atoi(value);
}
}
analogWrite(44, r);
analogWrite(45, g);
analogWrite(46, b);
}
}
}

void stateRequest(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
strcpy (gParamBuffer, "ALL");
commandsStatus(server);
}

/**********************************************************************************************************************
* Генерация и вывод информации об устройстве
**/
void infoRequest(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
server.printP(Page_info);
server.print("IP:");
server.print(Ethernet.localIP());
server.print("<br>State: ");
strcpy (gParamBuffer, "ALL");
commandsStatus(server);
server.print("<br><a href='/getdev'>getdev</a>");
server.print("<hr>Commands:<br>");
commandsHelp(server);
server.print("<hr>Version: ");
server.printP(version_info);

}



/**********************************************************************************************************************
* Поиск устройств (датчиков температуры на шине 1-wire)
**/
void searchDevices() {
Serial.println("Search on 1-wire");
int numberOfDevices = sensors.getDeviceCount();
sensors.begin();

for(int i=0;i<numberOfDevices; i++) {
if(sensors.getAddress(Termometers, i))
{
Serial.print("Device ");
Serial.print(i, DEC);
Serial.print(" address: ");
for (uint8_t i = 0; i < 8; i++) {
if (Termometers < 16) Serial.print("0");
Serial.print(Termometers, HEX);
}

// Serial.print(" Resolution actually set to: ");
Serial.print(" Set to: ");
Serial.print(sensors.getResolution(Termometers), DEC);
Serial.println();
float tempC = sensors.getTempC(Termometers);

Serial.print(tempC);
Serial.println("C");

} else {
// not found
}
}
}


/**********************************************************************************************************************/

void setup() {
// Для дебага будем выводить отладочные сообщения в консоль
//TODO Убрать вывод в консоль "за дабаг" (т.е. вывод только если скимпилированно с поддержкой дебага)
Serial.begin(9600);
Serial.println("Start");
Ethernet.begin(mac, ip, dns_server, gateway, subnet); // Инициализируем Ethernet Shield
sprintf(buf, "GET /objects/?script=controller_widget&dev=%u.%u.%u.%u&code=start",ip[0], ip[1], ip[2], ip[3]);//Готовим запрос на сервер
sendHTTPRequest();
dht.begin();
dht1.begin();
webserver.setDefaultCommand(&infoRequest); // дефолтная страница вывода (информация о контроллере)
webserver.addCommand("command", &parsedRequest); // команды
webserver.addCommand("state", &stateRequest); // выдать состояния всех устройств
webserver.addCommand("rgb", &rgbCmd); // RGB
webserver.addCommand("getdev", &get1wireDevices); // получить список устройств на 1-wire
webserver.begin();

Serial.print("IP ");
Serial.println(Ethernet.localIP());

// Настройка портов
for (int thisAPin = startAPin; thisAPin <=endAPin; thisAPin++) {
pinMode(thisAPin, INPUT);
}
// Настройка портов
for (int thisPin = startPin; thisPin <=endPin; thisPin++) {/////////////////////////////////////////////////////////////////////////////////////////////////////////
digitalWrite(thisPin, HIGH);
pinMode(thisPin, OUTPUT);
digitalWrite(thisPin, HIGH);
}
// Настройки 1-wire
sensors.begin(); // Инициализация шины 1-wire (для датчиков температуры)
sensors.requestTemperatures(); // Перед каждым получением температуры надо ее запросить

searchDevices();

}


/**********************************************************************************************************************/
void loop() {
char buff[64];
int len = 64;

/**********************************************************************************************************************

/* Работа с выключателями
*/


int valid_sensor=0;



// TEMP SENSOR 1 --------------------------------------
float current_temp1=0;
tempC = sensors.getTempC(Termometers); // Получим температуру от датчика (или ошибку)
{
// Устройство отдало реальное значение температуры (или осталось старое)

current_temp1 = tempC; // получаем температуру

if ((old_temperature1!=(int)current_temp1) && (current_temp1<79) && (current_temp1>5)) {
int temp1 = (current_temp1 - (int)current_temp1) * 100; // выделяем дробную часть
sprintf(buf, "GET /objects/?object=sensorKomnata&op=m&m=tempChanged&t=%0d.%d", (int)current_temp1, abs(temp1));
sendHTTPRequest();
}
old_temperature1=(int)current_temp1;
}


//dth...................1*****************************************************************************************



float current_tempKith=0;
tempKith = dht.readTemperature();// Получим температуру от датчика (или ошибку)
{
// Устройство отдало реальное значение температуры (или осталось старое)

Serial.print("TemperatureKITH: ");
Serial.print(tempKith);
Serial.println(" *C");
current_tempKith = tempKith; // получаем температуру

if ((old_tempKith!=(int)current_tempKith) && (current_tempKith<100) && (current_tempKith>1)) {
int tempKith = (current_tempKith - (int)current_tempKith) * 100; // выделяем дробную часть
sprintf(buf, "GET /objects/?object=sensorKith&op=m&m=tempChanged&t=%0d.%d", (int)current_tempKith, abs(tempKith));
sendHTTPRequest();
}
old_tempKith=(int)current_tempKith;
}




//*****hum1

float current_humKith=0;
humKith = dht.readHumidity();// Получим температуру от датчика (или ошибку)
{
Serial.print("HumidityKith: ");
Serial.print(humKith);
Serial.print(" %\t");
// Устройство отдало реальное значение температуры (или осталось старое)

current_humKith = humKith; // получаем температуру

if (old_humKith!=(int)current_humKith) {

sprintf(buf, "GET /objects/?object=humKith&op=m&m=humChanged&h=%i", (int)current_humKith);
sendHTTPRequest();
}
old_humKith=(int)current_humKith;
}

//dth..............................................2******************************************************

float current_tempLiv=0;
tempLiv = dht1.readTemperature();// Получим температуру от датчика (или ошибку)
{
// Устройство отдало реальное значение температуры (или осталось старое)
Serial.print("TemperatureLIV: ");
Serial.print(tempLiv);
Serial.println(" *C");
current_tempLiv = tempLiv; // получаем температуру

if (old_tempLiv!=(int)current_tempLiv ) {
int tempLiv = (current_tempLiv - (int)current_tempLiv) * 100; // выделяем дробную часть
sprintf(buf, "GET /objects/?object=tematem&op=m&m=tempChanged&t=%0d.%d", (int)current_tempLiv, abs(tempLiv));
sendHTTPRequest();
}
old_tempLiv=(int)current_tempLiv;
}
//****hum2


float current_humLiv=0;

humLiv = dht1.readHumidity();// Получим температуру от датчика (или ошибку)
{
// Устройство отдало реальное значение температуры (или осталось старое)
Serial.print("HumidityLiv: ");
Serial.print(humLiv);
Serial.print(" %\t");
current_humLiv = humLiv; // получаем температуру

if (old_humLiv!=(int)current_humLiv) {


sprintf(buf, "GET /objects/?object=humLiv&op=m&m=humChanged&h=%i", (int)current_humKith);
sendHTTPRequest();
}
old_humLiv=(int)current_humLiv;
}
//****************************************датчик движения

sensorValue = analogRead(analogPin);

if(sensorValue > 500){
sprintf(buf, "GET /objects/?object=sensorMovKith&op=m&m=statusChanged&status=1");
sendHTTPRequest();

}
delay(200);





//**************************************************************************

for(int i=startAPin;i<=endAPin;i++) {

int st=digitalRead(i);
char my_st[5];
itoa(st,my_st,10);
if (st==1)
{
sendAPin(i);
}
}

webserver.processConnection(buff, &len); // process incoming connections one at a time forever
sensors.requestTemperatures();
}
CONNECT |Группа в VK| ЮТУБ КАНАЛ
Система стоит на Raspberry pi 3b v3.31
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
kabir
Сообщения: 3
Зарегистрирован: Ср апр 12, 2017 8:19 am
Благодарил (а): 0
Поблагодарили: 0

Re: Помощь в написание кода Ардуино мега 2560 + шилд

Сообщение kabir » Вс апр 16, 2017 8:09 pm

Который день экспериментирую, но никак не могу получить температуру в MDM, скеч такой же
Аватара пользователя
mazahaka7sk
Сообщения: 54
Зарегистрирован: Сб фев 20, 2016 8:46 am
Откуда: Усть-Каменогорс
Благодарил (а): 8 раз
Поблагодарили: 10 раз
Контактная информация:

Re: Помощь в написание кода Ардуино мега 2560 + шилд

Сообщение mazahaka7sk » Пн апр 17, 2017 10:11 am

kabir писал(а):Который день экспериментирую, но никак не могу получить температуру в MDM, скеч такой же
температурные датчики я подключил к ESP8266 с прошивкой от этого сайта https://wifi-iot.com/p/esp8266/
работает идеально а вот все остальное тоже мучаюсь уже больше пол года не могу все в одно обьеденить
CONNECT |Группа в VK| ЮТУБ КАНАЛ
Система стоит на Raspberry pi 3b v3.31
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
Аватара пользователя
shemnik69
Сообщения: 590
Зарегистрирован: Пн дек 24, 2012 3:01 pm
Откуда: Саратов Saratov
Благодарил (а): 67 раз
Поблагодарили: 63 раза

Re: Помощь в написание кода Ардуино мега 2560 + шилд

Сообщение shemnik69 » Чт апр 20, 2017 6:57 am

kabir писал(а):Который день экспериментирую, но никак не могу получить температуру в MDM, скеч такой же
Посмотрите вот тут: http://arduino.ru/forum/proekty/sistema ... s18?page=4
Реализовано практически все основные идеи.
Аватара пользователя
mazahaka7sk
Сообщения: 54
Зарегистрирован: Сб фев 20, 2016 8:46 am
Откуда: Усть-Каменогорс
Благодарил (а): 8 раз
Поблагодарили: 10 раз
Контактная информация:

Re: Помощь в написание кода Ардуино мега 2560 + шилд

Сообщение mazahaka7sk » Чт апр 20, 2017 1:03 pm

Неужели не кто не подключал эти все датчики через ардуино мега и шилд???
CONNECT |Группа в VK| ЮТУБ КАНАЛ
Система стоит на Raspberry pi 3b v3.31
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Помощь в написание кода Ардуино мега 2560 + шилд

Сообщение serghei » Чт апр 20, 2017 7:33 pm

Ну почему же. Есть такой проект на форуме - Ардуино Мега Сервер. В дистрибутиве практически всё это реализовано: 3 температуры , 6 датчиков движения , две кнопки , 5 реле + радио модуль NRF24. К нему дописал код для измерения двух далласов, двух счетчиков и влажности с DHT. Если правильно настроить IDE, то установка займет 5 минут. К тому же всё сливается на МД. Если иметь представление как дописать код для ардуины, то можно прикрутить любое железо.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
mazahaka7sk
Сообщения: 54
Зарегистрирован: Сб фев 20, 2016 8:46 am
Откуда: Усть-Каменогорс
Благодарил (а): 8 раз
Поблагодарили: 10 раз
Контактная информация:

Re: Помощь в написание кода Ардуино мега 2560 + шилд

Сообщение mazahaka7sk » Вс апр 23, 2017 8:03 pm

Вот именно я тот человек который не понимает как дописать этот код и как подключить все это оборудование!
CONNECT |Группа в VK| ЮТУБ КАНАЛ
Система стоит на Raspberry pi 3b v3.31
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Помощь в написание кода Ардуино мега 2560 + шилд

Сообщение serghei » Вс апр 23, 2017 8:36 pm

Год назад я сам не знал, что такое Ардуино, ЕСП и МД. Пол года просил людей объяснить как подключить АМС к МД ( при готовом то коде!). И сейчас очень много не понимаю. Как же тогда управлять всем этим хозяйством? Для начала просто запустите АМС из готовых сборок. А понимание придет в процессе ползания по страницам и форуму. На заказ скетч не напишу (не умею) , но по тихоньку парк серверов разрастается. И если честно , напрягает меня мысль доверить управление домом любительским конструкциям. Измерять и отображать параметры - пожалуйста , а управлять.....
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
kamerons
Сообщения: 15
Зарегистрирован: Сб апр 08, 2017 11:25 am
Благодарил (а): 6 раз
Поблагодарили: 3 раза

Re: Помощь в написание кода Ардуино мега 2560 + шилд

Сообщение kamerons » Пн май 15, 2017 5:49 pm

Посмотрите программу flprog.
За это сообщение автора kamerons поблагодарил:
prmres (Сб фев 17, 2018 1:57 pm)
Рейтинг: 1.16%
Ответить