Всем доброго времени суток. Есть скетчик для теплички который не желает работать адекватным образом. Наставьте на путь истинный нуба) Часы настраивал http://forum.amperka.ru/threads/Часы-ds-3231.4688/ Код (Text): #include <DS3231.h> DS3231 rtc(SDA, SCL); Time RTC_T; int lumenPin1 = 46; // Лампа люмен 1 int lumenPin2 = 47; // Лампа люмен 2 int lumenPin3 = 48; // Лампа люмен 3 int lumenPin4 = 49; // Лампа люмен 4 int diodPin = 50; // Диоды int pompPin = 51; // насос int circulationPin = 52; // цыркуляция int ventilationPin = 53; // проветривание int heatingPin = 14; // обогрев int coolingPin = 15; // охлождение int flapPin = 17; // Заслонка int pot01 = 22; // Горшок 01 int pot02 = 23; // Горшок 02 int pot03 = 24; // Горшок 03 int pot04 = 25; // Горшок 04 int pot05 = 26; // Горшок 05 int pot06 = 27; // Горшок 06 int pot07 = 28; // Горшок 07 int pot08 = 29; // Горшок 08 int pot09 = 30; // Горшок 09 int pot10 = 31; // Горшок 10 int pot11 = 32; // Горшок 11 int pot12 = 33; // Горшок 12 int pot13 = 34; // Горшок 13 int pot14 = 35; // Горшок 14 int pot15 = 36; // Горшок 15 int pot16 = 37; // Горшок 16 int pot17 = 38; // Горшок 17 int pot18 = 39; // Горшок 18 int pot19 = 40; // Горшок 19 int pot20 = 41; // Горшок 20 int pot21 = 42; // Горшок 21 int pot22 = 43; // Горшок 22 int pot23 = 44; // Горшок 23 int pot24 = 45; // Горшок 24 void setup() { rtc.begin(); Serial.begin(115200); pinMode(lumenPin1, OUTPUT); pinMode(lumenPin2, OUTPUT); pinMode(lumenPin3, OUTPUT); pinMode(lumenPin4, OUTPUT); pinMode(diodPin, OUTPUT); pinMode(pompPin, OUTPUT); pinMode(circulationPin, OUTPUT); pinMode(ventilationPin, OUTPUT); pinMode(heatingPin, OUTPUT); pinMode(coolingPin, OUTPUT); pinMode(flapPin, OUTPUT); pinMode(pot01, INPUT); pinMode(pot02, INPUT); pinMode(pot03, INPUT); pinMode(pot04, INPUT); pinMode(pot05, INPUT); pinMode(pot06, INPUT); pinMode(pot07, INPUT); pinMode(pot08, INPUT); pinMode(pot09, INPUT); pinMode(pot10, INPUT); pinMode(pot11, INPUT); pinMode(pot12, INPUT); pinMode(pot13, INPUT); pinMode(pot14, INPUT); pinMode(pot15, INPUT); pinMode(pot16, INPUT); pinMode(pot17, INPUT); pinMode(pot18, INPUT); pinMode(pot19, INPUT); pinMode(pot20, INPUT); pinMode(pot21, INPUT); pinMode(pot22, INPUT); pinMode(pot23, INPUT); pinMode(pot24, INPUT); } void loop() { RTC_T = rtc.getTime(); // // Присваем значения с датчиков горшков // pot01 = digitalRead(pot01); pot02 = digitalRead(pot02); pot03 = digitalRead(pot03); pot04 = digitalRead(pot04); pot05 = digitalRead(pot05); pot06 = digitalRead(pot06); pot07 = digitalRead(pot07); pot08 = digitalRead(pot08); pot09 = digitalRead(pot09); pot10 = digitalRead(pot10); pot11 = digitalRead(pot11); pot12 = digitalRead(pot12); pot13 = digitalRead(pot13); pot14 = digitalRead(pot14); pot15 = digitalRead(pot15); pot16 = digitalRead(pot16); pot17 = digitalRead(pot17); pot18 = digitalRead(pot18); pot19 = digitalRead(pot19); pot20 = digitalRead(pot20); pot21 = digitalRead(pot21); pot22 = digitalRead(pot22); pot23 = digitalRead(pot23); pot24 = digitalRead(pot24); /* //////////////////////////////////////////////////// ////////////////////Освещение////////////////////// //////////////////////////////////////////////////// */ //Лампа 1 if ((RTC_T.hour, DEC) >= 5 && RTC_T.hour <= 16) { // LOW (потому как без платы управления свет должен быть активен пока не отключим автоматы) digitalWrite(lumenPin1, LOW); Serial.print(RTC_T.hour, DEC); Serial.println("."); } else { // HIGH digitalWrite(lumenPin1, HIGH); Serial.print(RTC_T.hour, DEC); Serial.println("."); } //Лампа 2 if ((RTC_T.hour, DEC) >= 7 && (RTC_T.hour, DEC) <= 17) { // LOW (потому как без платы управления свет должен быть активен пока не отключим автоматы) digitalWrite(lumenPin2, LOW); Serial.print(RTC_T.hour, DEC); Serial.println("."); } else { // HIGH digitalWrite(lumenPin2, HIGH); Serial.print(RTC_T.hour, DEC); Serial.println("."); } //Лампа 3 if ((RTC_T.hour, DEC) >= 9 && (RTC_T.hour, DEC) <= 19) { // LOW (потому как без платы управления свет должен быть активен пока не отключим автоматы) digitalWrite(lumenPin3, LOW); Serial.print(RTC_T.hour, DEC); Serial.println("."); } else { // HIGH digitalWrite(lumenPin3, HIGH); Serial.print(RTC_T.hour, DEC); Serial.println("."); } //Лампа 4 if ((RTC_T.hour, DEC) >= 12 && (RTC_T.hour, DEC) <= 20) { // LOW (потому как без платы управления свет должен быть активен пока не отключим автоматы) digitalWrite(lumenPin4, LOW); Serial.print(RTC_T.hour, DEC); Serial.println("."); } else { // HIGH digitalWrite(lumenPin4, HIGH); Serial.print(RTC_T.hour, DEC); Serial.println("."); } //Диоды if ((RTC_T.hour, DEC) >= 5 && (RTC_T.hour, DEC) <= 20) { // Включить digitalWrite(diodPin, HIGH); } else { // Выключить digitalWrite(diodPin, LOW); } /* //////////////////////////////////////////////////// ////////////////////Вентиляция////////////////////// //////////////////////////////////////////////////// */ // //Цыркуляция // if ((RTC_T.hour, DEC) >= 5 && (RTC_T.hour, DEC) <= 0) { // Включить digitalWrite(circulationPin, LOW); } else { // Выключить digitalWrite(circulationPin, HIGH); } // //Проветривание // if (rtc.getTemp() >= 38) { // Включить проветривание и охлождение // Открыть заслонки для проветривания digitalWrite(ventilationPin, HIGH); digitalWrite(coolingPin, HIGH); digitalWrite(flapPin, HIGH); } if (rtc.getTemp() <= 27) { // Выключить проветривание и охлождение // Закрыть заслонки для проветривания digitalWrite(ventilationPin, LOW); digitalWrite(coolingPin, LOW); digitalWrite(flapPin, LOW); } if ((RTC_T.hour, DEC) >= 12) { // Включить digitalWrite(ventilationPin, HIGH); digitalWrite(flapPin, HIGH); } else { // Выключить digitalWrite(ventilationPin, LOW); digitalWrite(flapPin, LOW); } if ((RTC_T.hour, DEC) >= 20) { // Включить digitalWrite(ventilationPin, HIGH); digitalWrite(flapPin, HIGH); } else { // Выключить digitalWrite(ventilationPin, LOW); digitalWrite(flapPin, LOW); } // //Обогрев // if (rtc.getTemp() <= 20) { // Включить обогрев digitalWrite(heatingPin, HIGH); } if (rtc.getTemp() >= 37) { // Выключить обогрев digitalWrite(heatingPin, LOW); } /* //////////////////////////////////////////////////// //////////////////////Полив://////////////////////// //////////////////////////////////////////////////// */ } Это только часть скрипта но суть такова: по идее если время больше или равно положенному то включаем или же выключаем. Весь скетч завязан на часах но почему не работает я не знаю. Это только часть того что должно быть (остальная часть работает исправно но только те места где нет проверки на время)
Заменяю (RTC_T.hour, DEC) на RTC_T.hour получаю на выходе полное отключение и дикое гудение от походу реле.
Прикол в том что оно не должно срабатывать, а наоборот просто быть не активным. Если ардуиновская плата по какой то причине не работает (мало ли здохла в очередной раз) вся система будет работать кроме вентиляции заслонок и подогрева с охлаждением.
Я только показал неправильный синтаксис оператора, кстати таких кусков много. А что там еще есть мне не ведомо. Это "лампа 1" так через реле срабатывает?
Питание подаётся 5в с БП от компа на 700 ват (меньше не было просто) - кажись 15А выдаёт в пике Управляет всей конструкцией дистанционно fujitsu lifebook p1000 чутка допиленный под мои нужды (SSD 30гб) USB модем мегафон для дистанционного управления и сигнализации если что то не так. Ну естесно сосед алкаш) За бутылку присмотрит чтоб пожара не было в тепличке.
Весь код переписавыю сразу а не только 1 элемент. Пробовал вот так: if ((RTC_T.hour) >= 9 && (RTC_T.hour) <= 19) Жузжит зараза И вот так: if (RTC_T.hour >= 9 && RTC_T.hour <= 19) Так же жузжит Отключается свет (следовательно на реле подали питание) Циркуляция работает, диодные панели не подключены как и обогрев с охлаждением и заслонками. Как направить проклятую ардуину на путь истинный?
http://www.aliexpress.com/snapshot/6675037902.html?orderId=67295662743054 вместо рогатки в земле решил использовать старые гвозди 100 http://www.aliexpress.com/snapshot/6675037906.html?orderId=67295662703054 это у нас сами часики http://www.aliexpress.com/snapshot/6675037898.html?orderId=67295662723054 2 шт - релейные модули http://www.aliexpress.com/snapshot/6675037900.html?orderId=67295662733054 чтоб не поять а просто воткнуть (на работе пайки хватает) http://www.aliexpress.com/snapshot/6675037904.html?orderId=67295662713054 в резервуар с водой (на экстренный полив - мало ли воды не будет) Время кажет такое же как и на ноуте с которого сейчас пишу
Кстати да если в терминал выдовать (********, DEC) то время показывает как положено, но если без то получаем крокозявры всякие
Видима, надо проверять сборку конструкции, особенно контакты. И кстати время передается в виде буков или цифер? Если в виде буков, то оно еще 30 прибавит.
буквы\цыфры - йкаждый раз разное значение почему и решил использовать DEC Правильность соединения можно не проверять) Там всё как на заводе с небольшими отклонениями в плане соединения проводов между собой и каждый провод подписан в месте соединения с чем либо + конструкция проверялась на премитивном скетче так что в железо можно не совать нос.
Значит нужно отладочных сообщений расставить, чтобы посмотреть куда программа заходит. А то так все выглядит одинаково.