Проблема с таймером
- Войдите на сайт для отправки комментариев
Ср, 09/04/2014 - 21:27
Добрый день, не подскажите почем плохо работает данный скетч. Требуеться что бы светодиод на пин 13 загарался и гас в указанное время. По таймеру включаеться, но при первом таймере горит очень тускло,а при втором горит как надо. Вопрос что дописать или переписать что бы светодиод при обоих таймерах горел как надо и почему вообще он тусклее горит? #include "Arduino.h" #include <Wire.h> #include <DS1307.h> #define light 13 void setup() { pinMode(light, OUTPUT); } void loop() { int Hour = RTC.get(DS1307_HR, true); int Minute = RTC.get(DS1307_MIN, false); int Second = RTC.get(DS1307_SEC, false); int FullMinutes = Hour * 60 + Minute; int lightOn = 20 * 60 + 35; int lightOff = 20 * 60 + 36; if(FullMinutes >= lightOn && FullMinutes <= lightOff){ digitalWrite(light, HIGH); } else{ digitalWrite(light, LOW); } int lightOn1 = 20 * 60 + 45; int lightOff1 = 20 * 60 + 46; if(FullMinutes >= lightOn1 && FullMinutes <= lightOff1){ digitalWrite(light, HIGH); } else{ digitalWrite(light, LOW); } }
Потому что пин светодиода получает ВКЛ от первого таймера но ВЫКЛ от второго. Получаем типа ШИМ 50%.
Соответственно во втором случае никто ВЫКЛ не делает и все путем.
А ещё расскажите как вы собираетесь отразить состояние двух таймеров одним светодиодом? Имхо текущий вариант лучший.
Подозреваю что тут хотели сделать "два временных интервала когда горит, в остально время - выключен"
Если условие включения короткие и "в глазах не путаеются", то можно не разбивать на два if-а, а объеденить в одно через ||
Если кроме включения нам ничего не нужно (выводить там отчет в сериал, засекать время "когда включили" и т.п.), то можно еще больше свернуть