Помогите доделать код

Maxim81
Offline
Зарегистрирован: 13.02.2020

Помогите с кодом!! имеется код астротаймера, нужно добавить дисплей SSD1306 и выводить на него общее время и время включения таймера и время выключения таймера!! 

Я в ардуино новичек , сильно не пинайте обьясните с чего начать доработку скетча???

Вот скетч:

Moderator : пожалуйста, вставьте код правильно (возможно, новым сообщением в тему), 
 
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Maxim81 пишет:

Я в ардуино новичек , сильно не пинайте обьясните с чего начать доработку скетча???

С изучения предмета.

Список литературы в прикрепленной теме раздела "Песочница".

Maxim81
Offline
Зарегистрирован: 13.02.2020

ясно.....там беда))))

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

На Вашем месте я бы начал с этого, а затем четко, по пунктам, сформулировал задачу на изменение программы.

Maxim81
Offline
Зарегистрирован: 13.02.2020
// Астротаймер лайт - для управления освещением по времени заката и восхода солнца
// До использования настроить в модуле 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) );}

 

Maxim81
Offline
Зарегистрирован: 13.02.2020

в этот скетч нужно итегрировать lcd ssd 1306 и вывод на индикатор 3 строки

текущее время дата, время включения , время отключения таймера.

приер:

1)12.00 14.02.2020 время дата

2)вкл 18.57  время включения таймера

3)выкл 7.15  время выключения таймера

RG22EM
Offline
Зарегистрирован: 27.08.2016

а в чём подвох? возьмите подключите библиотеку и выводите, только время в часах я бы устанавливал по системному времени компьютера на стадии прошивки, здесь есть примеры как это сделать

Maxim81
Offline
Зарегистрирован: 13.02.2020

ссылку скиньте??

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Maxim81 пишет:

ссылку скиньте??

Какую ссылку? Это стандартная библиотека IDE - LiquidCrystal.h. Там же куча примеров

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А к автору кода обращались?

Maxim81
Offline
Зарегистрирован: 13.02.2020

автор сказал я сам не особо волоку, да и проект расчитывался только как астрореле , а не как полноценный прибор/

Еслм хотите допиливайте сами