Добрый день, в Ардуино новичок. Возникла проблема с датчиком 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); }`
Вы ошибаетесь, так быть не может.
Вероятно, то, что Вы называете “сбрасывается” происходит не при выключении, а при повторном включении в 17-й строке скетча.
если действовать совсем правильно, то сначала откалибровать DS3231, на это уйдёт месячишко, одновременно там будет установлена правильная дата и, уже откалиброванный модуль подсоединить в нужный нам девайс