Синхронизация часов чараз Serial

DeLy
Offline
Зарегистрирован: 23.04.2018

Добрый день!
У меня есть датчик реального времени. Я хочу сделать так, чтобы пользователь мог его настроить через Serial порт. Т. Е. Пользователь вводить данные типа 01.01.2018 9:23:15 и эти данные шли в настройку часов. Я пробовал сделать как-то с помощью функции sscanf, но не очень получалось. Помогите, пожалуйста)

 

BuonanotteMasha
BuonanotteMasha аватар
Offline
Зарегистрирован: 02.01.2018

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

DeLy
Offline
Зарегистрирован: 23.04.2018
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

Помогите понять, как ето работает. Прошу удочку, не рыбу.

 
 
 

 

nik182
Онлайн
Зарегистрирован: 04.05.2015