Здравствуйте. Никак не получается устанавливать время на модуль RTC DS3231 отправкой сообщений через Serial-порт. Идея такая: отправляю команду "settime" и выводится сообщение "Укажите часы". Вписываем число, оно кладется в специальную переменную, предназначенную для часов. Далее выводится сообщение "Укажите минуты". Также пишем число, оно кладется в переменную, отведенную минутам. То же самое делаем с секундами. После задаем время таким образом: time.setTime(s,m,h). Но ни черта не получается.
Вот скетч: #include <OneWire.h> #include <string.h> #include <iarduino_RTC.h> #include <LiquidCrystal.h> int h; int m; int s; String b; String c; iarduino_RTC time(RTC_DS3231); LiquidCrystal lcd(4, 5, 10, 11, 12, 13); OneWire oneWire(ONE_WIRE_BUS); void setup() { lcd.begin(16, 2); Serial.begin(9600); time.begin(); //time.settime(30,39,16,28,11,16,1); } void loop(){ if(millis()%1000==0){ lcd.setCursor(4, 0); lcd.print(time.gettime("H:i:s")); } if (Serial.available() > 0) { b = Serial.readString(); if (b == "settime") { Serial.println("Are you sure? Write 'yes' or 'no'"); while (!Serial.available()){ delay(10); } c = Serial.readString(); if (c == "yes"){ Serial.println("Write hours..."); while (!Serial.available()){ delay(10); } h = Serial.read(); Serial.println("Write minutes..."); while (!Serial.available()){ delay(10); } m = Serial.read(); Serial.println("Write seconds..."); while (!Serial.available()){ delay(10); } s = Serial.read(); time.settime(s,m,h); } } b=""; c=""; h=0; m=0; s=0; } }
Зачем так сложно? Команда вида "settime 12:30" гораздо эргономичнее. P.S. оформляйте код правильно, иначе вас просто будут игнорировать.