Помогите доделать код
- Войдите на сайт для отправки комментариев
Чт, 13/02/2020 - 08:11
Помогите с кодом!! имеется код астротаймера, нужно добавить дисплей SSD1306 и выводить на него общее время и время включения таймера и время выключения таймера!!
Я в ардуино новичек , сильно не пинайте обьясните с чего начать доработку скетча???
Вот скетч:
Moderator : пожалуйста, вставьте код правильно (возможно, новым сообщением в тему),
Я в ардуино новичек , сильно не пинайте обьясните с чего начать доработку скетча???
С изучения предмета.
Список литературы в прикрепленной теме раздела "Песочница".
ясно.....там беда))))
На Вашем месте я бы начал с этого, а затем четко, по пунктам, сформулировал задачу на изменение программы.
// Астротаймер лайт - для управления освещением по времени заката и восхода солнца // До использования настроить в модуле RTC текущее время: Примеры->DS1307RTC->SetTime // При использовании настроить в TimeLord текущую дату, часовой пояс и географические координаты // Прописать выход управления нагрузкой в #define REL // Создано в Arduino 1.6.10 by chaloc 2016 #include <Time.h> // время и текущая дата #include <TimeLord.h> // вычисление времени заката и рассвета #include <DS1307RTC.h> // библиотека RTC возвращает time как time_t, работает как с DS1307 так и с DS3231 #define REL 7 // выход управления реле #define DEBUG 0 // 1 включает сообщения отладки в монитор серийного порта. Скорость 115200 const int TIMEZONE = +3; // установка часового пояса const float LATITUDE = 47.80, LONGITUDE = 40.10; // установка координат: широта, долгота TimeLord myLord; // переменные TimeLord byte sunTime[] = {0,0,12,13,02,20}; // вместо 30 07 16 поставить свою дату число/месяц/год int minNow, minLast = -1, hourNow, hourLast = -1, minOfDay; // -1 отрабатывает при первом запуске int mSunrise, mSunset; //время рассвета и заката в минутах от начала дня (0-1439) // настройка void setup() { Serial.begin(115200); // старт соединенияи и установка скорости pinMode(REL, OUTPUT); // инициализируем порт для канала реле как выход digitalWrite(REL ,HIGH); // устанавливаем на входе релейного модуля высокий уровень - реле выключено myLord.TimeZone(TIMEZONE * 60); myLord.Position(LATITUDE, LONGITUDE); setSyncProvider(RTC.get); // синхронизация времени с RTC if (timeStatus() != timeSet) Serial.println("Unable to sync, load time to RTC"); else Serial.println("RTC has set the system time"); } // основной цикл void loop() { if (timeStatus()!= timeNotSet) { minNow = minute(); if (minNow != minLast) { minLast = minNow; hourNow = hour(); minOfDay = hourNow * 60 + minNow; //текущая минута дня 0-1439 #if DEBUG == 1 Serial.print("TimeNow: "); Serial.print(hourNow); Serial.print("-"); Serial.print(minNow); Serial.print(" minOfDay:"); Serial.print(minOfDay); Serial.print(" minLast:"); Serial.print(minLast); Serial.print(" hourLast:"); Serial.print(hourLast); Serial.println(); #endif if (hourNow != hourLast) // расчет времени рассвета и заката при изменении часа (раз в час) { //Время рассвета и заката в минутах от начала дня sunTime[3] = day(); // текущая дата от библиотеки Time sunTime[4] = month(); sunTime[5] = year()-2000; myLord.SunRise(sunTime); // расчетные данные рассвета из TimeLord mSunrise = sunTime[2] * 60 + sunTime[1] - 33; // где "-33" задержка выключения реле утром в минутах myLord.SunSet(sunTime); // расчетные данные заката из TimeLord mSunset = sunTime[2] * 60 + sunTime[1] + 35; // +35 задержка вкл реле вечером #if DEBUG == 1 Serial.print("DATE: "); Serial.print( sunTime[3]); Serial.print("/"); Serial.print( sunTime[4]); Serial.print("/"); Serial.print( sunTime[5]); Serial.print(" SUNRISE OFF:"); Serial.print(mSunrise); Serial.print(" SUNSET ON:"); Serial.print(mSunset); Serial.println(); #endif hourLast = hourNow; } //управляем реле if (minOfDay < mSunrise || minOfDay >= mSunset) // если минут с начала суток меньше, чем время рассвета , но больше, чем время заката digitalWrite(REL,LOW); // то устанавливаем на входе релейного модуля низкий уровень уровень - реле срабатывает else // во всех остальных случаях digitalWrite(REL,HIGH); // устанавливаем на входе релейного модуля высокий уровень - реле выключается #if DEBUG == 1 Serial.print("RELE:"); Serial.print(minOfDay < mSunrise || minOfDay >= mSunset); Serial.println(); #endif } // End: if (minNow != minLast) } // End: if (timeStatus()!= timeNotSet) } // End loop() byte decToBcd(byte val){ return ( (val/10*16) + (val%10) );}в этот скетч нужно итегрировать lcd ssd 1306 и вывод на индикатор 3 строки
текущее время дата, время включения , время отключения таймера.
приер:
1)12.00 14.02.2020 время дата
2)вкл 18.57 время включения таймера
3)выкл 7.15 время выключения таймера
а в чём подвох? возьмите подключите библиотеку и выводите, только время в часах я бы устанавливал по системному времени компьютера на стадии прошивки, здесь есть примеры как это сделать
ссылку скиньте??
ссылку скиньте??
Какую ссылку? Это стандартная библиотека IDE - LiquidCrystal.h. Там же куча примеров
А к автору кода обращались?
автор сказал я сам не особо волоку, да и проект расчитывался только как астрореле , а не как полноценный прибор/
Еслм хотите допиливайте сами