Код для sd3231

Добрый день, в Ардуино новичок. Возникла проблема с датчиком ds3231, в частности с кодом.
Не совсем понимаю как в моем коде сделать так, чтобы время считалось без включенной платы (код рабочий, просто не знаю как перестроить его так, чтобы время выводилось с момента начала работы скетча).
`#include <DS3231.h>
#include <Wire.h>
#include <LiquidCrystal.h>
DS3231 rtc(SDA, SCL);
const int rs = 6, en = 7, d4 = 11, d5 = 10, d6 = 9, d7 = 8;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int soilMoistureValue = 0;
int soilmoisturepercent = 0; ;
unsigned int recv_size = 0;
unsigned long prev, interval = 1000;
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
pinMode(soilMoistureValue, INPUT);
Serial.begin(115200);
rtc.begin();
rtc.setTime(14, 54,20); // Установить время 16:29:00 (формат 24 часа)
}
void loop() {
if (Serial.available())
delay(100);
//lcd.clear();
while (Serial.available() > 0)
lcd.write(Serial.read());
const int AirValue = 513; // Максимальное значение сухого датчика
const int WaterValue = 215; // Минимальное значение погруженного датчика
soilMoistureValue = analogRead(A0); // Считываем данные с порта A0 и записываем их в переменную
soilmoisturepercent = map(soilMoistureValue, AirValue, WaterValue, 0, 100);
lcd.setCursor(0,0);
lcd.print(“Humidity:”);
lcd.print(soilmoisturepercent);
lcd.print(“%”);
lcd.print(" ");
lcd.setCursor(11,1);
lcd.println(rtc.getTimeStr()); // Отправляем время

delay (1000); // Задержка в одну секунду
lcd.setCursor(0,1);
lcd.print(“T:”);
lcd.print(rtc.getTemp());
lcd.print(“\x99\x43”);
delay (800); }`

Для начала правильно встаить код.

секунду

#include <DS3231.h> 
#include <Wire.h>
#include <LiquidCrystal.h>         
DS3231  rtc(SDA, SCL);  
const int rs = 6, en = 7, d4 = 11, d5 = 10, d6 = 9, d7 = 8;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int soilMoistureValue = 0;
int soilmoisturepercent = 0; ;
unsigned int recv_size = 0;
unsigned long prev, interval = 1000;
void setup() {     
  lcd.begin(16, 2);
  Serial.begin(9600);
  pinMode(soilMoistureValue, INPUT);
  Serial.begin(115200);              
  rtc.begin();                                          
  rtc.setTime(14, 54,20);              //  Установить время 16:29:00 (формат 24 часа)
}
void loop() {
  if (Serial.available()) 
    delay(100);
    //lcd.clear();
    while (Serial.available() > 0) 
      lcd.write(Serial.read());  
  const int AirValue = 513;             // Максимальное значение сухого датчика
  const int WaterValue = 215;           // Минимальное значение погруженного датчика         
  soilMoistureValue = analogRead(A0);   // Считываем данные с порта A0 и записываем их в переменную
  soilmoisturepercent = map(soilMoistureValue, AirValue, WaterValue, 0, 100);  
  lcd.setCursor(0,0);
  lcd.print("Humidity:");
  lcd.print(soilmoisturepercent);
  lcd.print("%");
  lcd.print("  ");
  lcd.setCursor(11,1);
  lcd.println(rtc.getTimeStr());    // Отправляем время
  
  delay (1000);                        // Задержка в одну секунду
  lcd.setCursor(0,1);
  lcd.print("T:");
  lcd.print(rtc.getTemp());
  lcd.print("\x99\x43");
  delay (800); }
#include <DS3231.h> 
#include <Wire.h>
#include <LiquidCrystal.h>         
DS3231  rtc(SDA, SCL);  
const int rs = 6, en = 7, d4 = 11, d5 = 10, d6 = 9, d7 = 8;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int soilMoistureValue = 0;
int soilmoisturepercent = 0; ;
unsigned int recv_size = 0;
unsigned long prev, interval = 1000;
void setup() {     
  lcd.begin(16, 2);
  Serial.begin(9600);
  pinMode(soilMoistureValue, INPUT);
  Serial.begin(115200);              
  rtc.begin();                                          
  rtc.setTime(14, 54,20);              //  Установить время 16:29:00 (формат 24 часа)
}
void loop() {
  if (Serial.available()) 
    delay(100);
    //lcd.clear();
    while (Serial.available() > 0) 
      lcd.write(Serial.read());  
  const int AirValue = 513;             // Максимальное значение сухого датчика
  const int WaterValue = 215;           // Минимальное значение погруженного датчика         
  soilMoistureValue = analogRead(A0);   // Считываем данные с порта A0 и записываем их в переменную
  soilmoisturepercent = map(soilMoistureValue, AirValue, WaterValue, 0, 100);  
  lcd.setCursor(0,0);
  lcd.print("Humidity:");
  lcd.print(soilmoisturepercent);
  lcd.print("%");
  lcd.print("  ");
  lcd.setCursor(11,1);
  lcd.println(rtc.getTimeStr());    // Отправляем время
  
  delay (1000);                        // Задержка в одну секунду
  lcd.setCursor(0,1);
  lcd.print("T:");
  lcd.print(rtc.getTemp());
  lcd.print("\x99\x43");
  delay (800); }
Код```

А теперь внятно изложить:

  1. Чего хочется добиться.
  2. Что вместо этого происходит.
  3. Чем 1 отличается от 2.
  1. хочется, чтобы при выключении питания время шло дальше, а при включении на дисплее высвечивалось верное время
  2. при вкл питании время идет, при выключении сбрасывается до заданных значней
  3. это один и тот же код, просто повторно отправил

ТС свои проблемы решил, можно модераторов попросить - снесите эту дубль тему !!!

Вы ошибаетесь, так быть не может.
Вероятно, то, что Вы называете “сбрасывается” происходит не при выключении, а при повторном включении в 17-й строке скетча.

Да йолки-иголки !!!
Говорю же - решил он свои проблемы.

если действовать совсем правильно, то сначала откалибровать DS3231, на это уйдёт месячишко, одновременно там будет установлена правильная дата и, уже откалиброванный модуль подсоединить в нужный нам девайс

уже все сделал

Можно по подробнее? Как именно калибровать?

ну сколько можно об одном и том же, была тема на старом форуме, есть на гитхабе, забыл?

Как я мог забыть, ты мне тогда так толком и не ответил :slight_smile:
Спасибо.