Topic: Умный аквариум
Здравствуйте Вот решил сделать управление аквариумами более удобным и наглядным получилось почти все, кроме одного момента. http://remotexy.com/ru/editor/f71a5a1fb … b3dd9b9c9/ это ссылка на проект, а вот скетч:
// определение режима соединения и подключение библиотеки RemoteXY
#define REMOTEXY_MODE__SOFTSERIAL
#include <SoftwareSerial.h>
#include <RemoteXY.h>
#include "DHT.h"
#define DHTPIN 5 // номер пина, к которому подсоединен датчик
DHT dht(DHTPIN, DHT11);
#include "OneWire.h"
#include "DallasTemperature.h"
#define ONE_WIRE_BUS 7
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress sensor1 = { 0x28, 0xFF, 0x7C, 0x5B, 0xB2, 0x17, 0x1, 0x67 };
DeviceAddress sensor2 = { 0x28, 0xAA, 0x7F, 0xA0, 0x53, 0x14, 0x1, 0x30 };
#define DHTPIN 2 // номер пина, к которому подсоединен датчик
// настройки соединения
#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 9600
// конфигурация интерфейса
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
{ 255,13,0,44,0,190,1,10,207,1,
130,1,2,61,59,37,179,130,1,2,
27,59,32,179,130,1,2,2,59,23,
137,67,5,4,13,22,8,2,26,11,
67,5,4,33,22,8,2,26,11,129,
0,23,3,16,4,25,208,186,208,190,
208,188,208,189,208,176,209,130,208,176,
0,129,0,10,29,38,4,25,208,145,
208,190,208,187,209,140,209,136,208,190,
208,185,32,208,176,208,186,208,178,208,
176,209,128,208,184,209,131,208,188,0,
67,5,32,13,22,8,2,26,11,129,
0,4,7,50,4,25,209,130,208,181,
208,188,208,191,208,181,209,128,208,176,
209,130,209,131,209,128,208,176,32,32,
32,208,178,208,187,208,176,208,182,208,
189,208,190,209,129,209,130,209,140,0,
67,5,4,67,22,8,2,26,11,129,
0,10,63,38,4,25,208,156,208,176,
208,187,208,181,208,189,209,140,208,186,
208,184,208,185,32,208,176,208,186,208,
178,208,176,209,128,208,184,209,131,208,
188,0,2,0,4,51,18,6,2,26,
31,31,79,78,0,79,70,70,0,129,
0,7,45,9,4,25,208,161,208,178,
208,181,209,130,0,2,0,4,80,18,
6,2,26,31,31,79,78,0,79,70,
70,0,2,0,4,90,18,6,2,26,
31,31,79,78,0,79,70,70,0,129,
0,4,76,22,4,25,209,129,208,178,
208,181,209,130,32,208,177,208,181,208,
187,209,139,208,185,0,129,0,4,86,
22,4,25,209,129,208,178,208,181,209,
130,32,209,129,208,184,208,189,208,184,
208,185,0,2,0,37,51,18,6,2,
26,31,31,79,78,0,79,70,70,0,
129,0,35,46,23,4,25,208,146,208,
181,208,189,209,130,208,184,208,187,209,
143,209,130,208,190,209,128,0,2,0,
38,90,18,6,2,26,31,31,79,78,
0,79,70,70,0,129,0,35,85,23,
4,25,208,146,208,181,208,189,209,130,
208,184,208,187,209,143,209,130,208,190,
209,128,0,7,45,32,34,24,6,2,
26,2,3,7,45,33,68,24,6,2,
26,2,3 };
// структура определяет все переменные и события вашего интерфейса управления
struct {
// input variables
uint8_t light1; // =1 если переключатель включен и =0 если отключен
uint8_t light2; // =1 если переключатель включен и =0 если отключен
uint8_t light3; // =1 если переключатель включен и =0 если отключен
uint8_t cool1; // =1 если переключатель включен и =0 если отключен
uint8_t cool2; // =1 если переключатель включен и =0 если отключен
float edit_1;
float edit_2;
// output variables
char outtemp[11]; // =строка UTF8 оканчивающаяся нулем
char intemp1[11]; // =строка UTF8 оканчивающаяся нулем
char hum[11]; // =строка UTF8 оканчивающаяся нулем
char intemp2[11]; // =строка UTF8 оканчивающаяся нулем
// other variable
uint8_t connect_flag; // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
#define PIN_LIGHT1 A0
#define PIN_LIGHT2 A2
#define PIN_LIGHT3 A4
#define PIN_COOL1 A1
#define PIN_COOL2 A3
void setup()
{
RemoteXY_Init ();
pinMode (PIN_LIGHT1, OUTPUT);
pinMode (PIN_LIGHT2, OUTPUT);
pinMode (PIN_LIGHT3, OUTPUT);
pinMode (PIN_COOL1, OUTPUT);
pinMode (PIN_COOL2, OUTPUT);
// TODO you setup code
dht.begin();
sensors.begin();
}
void loop()
{
RemoteXY_Handler ();
digitalWrite(PIN_LIGHT1, (RemoteXY.light1==0)?LOW:HIGH);
digitalWrite(PIN_LIGHT2, (RemoteXY.light2==0)?LOW:HIGH);
digitalWrite(PIN_LIGHT3, (RemoteXY.light3==0)?LOW:HIGH);
digitalWrite(PIN_COOL1, (RemoteXY.cool1==0)?LOW:HIGH);
digitalWrite(PIN_COOL2, (RemoteXY.cool2==0)?LOW:HIGH);
// используйте структуру RemoteXY для передачи данных
// не используйте функцию delay()
float hum = dht.readHumidity();
dtostrf(hum, 0, 1, RemoteXY.hum);
float t = dht.readTemperature();
dtostrf(t, 0, 1, RemoteXY.outtemp);
sensors.requestTemperatures();
dtostrf(sensors.getTempC(sensor1), 0, 1, RemoteXY.intemp1);
dtostrf(sensors.getTempC(sensor2), 0, 1, RemoteXY.intemp2);
все хорошо и удобно, но не могу допилить один момент, изначально проект был без полей ввода, сейчас хочу сделать вот что: 1) вводим в поле ввода значение например 25, и вентилятор 1 при достижении 25 градусов включается, при 24 выключается, можно даже без возможности менять значение гестерезиса.
2) как то нужно сделать так, чтоб датчики sensor1 и sensor2 опрашивались 1 раз в минуту, но не знаю как это сделать без функции delay...
Нужно чтоб температура в аквариумах поддерживалась при помощи вентиляторов, а то прихожу вечером с работы, а там почти уха))) на улице жарища, даже рыбам плохо, помогите создать рыбкам комфортные условия)))
я не опытный программист и С++ не изучал, помогите допилить скетч, всю голову сломал как это правильно сделать, и интернет ковырял... безуспешно...
если получится доделать проект, обещаю выложить окончательную версию проекта с фото как все реализовано...