Синхронизация часов чараз Serial
- Войдите на сайт для отправки комментариев
Втр, 24/04/2018 - 21:24
Добрый день!
У меня есть датчик реального времени. Я хочу сделать так, чтобы пользователь мог его настроить через Serial порт. Т. Е. Пользователь вводить данные типа 01.01.2018 9:23:15 и эти данные шли в настройку часов. Я пробовал сделать как-то с помощью функции sscanf, но не очень получалось. Помогите, пожалуйста)
Приложите сюда рабочий и нерабочий вариант. Код вставьте правильно, желательно с комментариями. Тогда рассчитывайте на помощь
void setTime() { // January 21, 2014 at 3am you would call: // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); DateTime now = rtc.now(); int newYear; int newMounth; int newDay; int newHour; int newMinute; int newSecond; Serial.println(" > Enter time (January 21, 2014 at 3am = 2014, 1, 21, 3, 0, 0)"); Serial.println(" > Enter YEAR"); while(! (Serial.available() > 0)); newYear = Serial.readString().toInt(); Serial.println(" > Enter MOUNTH"); while(! (Serial.available() > 0)); newMounth = Serial.readString().toInt(); Serial.println(" > Enter DAY"); while(! (Serial.available() > 0)); newDay = Serial.readString().toInt(); Serial.println(" > Enter HOUR"); while(! (Serial.available() > 0)); newHour = Serial.readString().toInt(); Serial.println(" > Enter MINUTE"); while(! (Serial.available() > 0)); newMinute = Serial.readString().toInt(); Serial.println(" > Enter SECOND"); while(! (Serial.available() > 0)); newSecond = Serial.readString().toInt(); Serial.println(" > Change time? (Y/N)"); while(! (Serial.available() > 0)); if (Serial.readString() == "Y"){ rtc.adjust(DateTime(newYear, newMounth, newDay, newHour, newMinute, newSecond)); Serial.print(" > Time set to "); DateTime now = rtc.now(); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(' '); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); Serial.println(" Sucsesfull!"); } else { Serial.println(" > Canceled"); } }У меня сейчас так. Но я хотел одний строкой. По типу етого - http://litser.net/stati/arduino/31-sinhronizaciya-vremeni-rtc-modulya-s-vremenem-na-kompyutere.html
Помогите понять, как ето работает. Прошу удочку, не рыбу.
https://github.com/olikraus/ds1307new/blob/master/examples/DS1307_Monito...