Купили аквариум, и появилась необходимость управлять светом. Режим работы такой: 5 часов горит, 4 часа -темно, 7 часов опять горит и опять темно, до следующего утра. Вот только опыта у меня мало. Подскажите, пожалуйста, как лучше устанавливать периоды работы лампы? Моих познаний хватило только на "delay(18000000)".
На самом деле часы можно брать любые, но я бы посоветовал на ds3231 Для них я уже предлагал стандартное решение. http://forum.amperka.ru/threads/Часы-ds-3231.4688/#post-37252
... так, с часами вроде разобрался, всё работает. Но ни как не могу показания вывести на четырёхразрядный индикатор (Troyka-модуль)... Код (Text): // Подключаем библиотеку #include <QuadDisplay.h> #define LIGHT 13 #define PIN 8 #include <Wire.h> #include "DS1307.h" DS1307 clock;//define a object of DS1307 class void setup() { Serial.begin(9600); clock.begin(); //clock.fillByYMD(2015,4,14);//Jan 19,2013 //clock.fillByHMS(14,21,10);//15:28 30" //clock.fillDayOfWeek(TUE);//Saturday //clock.setTime();//write time to the RTC chip pinMode(LIGHT, OUTPUT); } void loop() { printTime(); if (clock.hour >= 7 && clock.hour >= 12) { digitalWrite(LIGHT, HIGH); } else if (clock.hour >= 16 && clock.hour >= 23) { digitalWrite(LIGHT, HIGH); } else { digitalWrite(LIGHT, LOW); } } /*Function: Display time on the serial monitor*/ void printTime() { clock.getTime(); Serial.print(clock.hour, DEC); Serial.print(":"); Serial.print(clock.minute, DEC); Serial.print(":"); Serial.print(clock.second, DEC); Serial.print(" "); Serial.print(clock.month, DEC); Serial.print("/"); Serial.print(clock.dayOfMonth, DEC); Serial.print("/"); Serial.print(clock.year+2000, DEC); Serial.print(" "); Serial.print(clock.dayOfMonth); Serial.print("*"); switch (clock.dayOfWeek)// Friendly printout the weekday { case MON: Serial.print("MON"); break; case TUE: Serial.print("TUE"); break; case WED: Serial.print("WED"); break; case THU: Serial.print("THU"); break; case FRI: Serial.print("FRI"); break; case SAT: Serial.print("SAT"); break; case SUN: Serial.print("SUN"); break; } Serial.println(" "); displayFloat(PIN, (clock.hour), 2); } ...могу вывести либо часы, либо минуты, а всё вместе ни как
Простите великодушно, а в чем смысл проверки: if (clock.hour >= 7 && clock.hour >= 12) ведь это значит: если час больше 7 И больше 12... но если час больше 12, он и подавно больше 7! то же и с: if (clock.hour >= 16 && clock.hour >= 23)...
Код (Text): const static uint8_t qadNumerals[] = {QD_0, QD_1, QD_2, QD_3, QD_4, QD_5, QD_6, QD_7, QD_8, QD_9}; void displayTime(int hour,int minute){ displayDigits(QUAD_DATA,qadNumerals[hour/10],qadNumerals[hour%10],qadNumerals[minute/10]&QD_DOT,qadNumerals[minute%10]); }
Ой, точно... проверял на минутах, видать пока правил на часы знаки перепутал Должно быть так: if (clock.hour >= 7 && clock.hour <= 12) и т.д. Спасибо, что заметили