RTC DS3231 + LCD + Serial

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Ricochet, 28 ноя 2016.

  1. Ricochet

    Ricochet Нуб

    Здравствуйте. Никак не получается устанавливать время на модуль RTC DS3231 отправкой сообщений через Serial-порт. Идея такая: отправляю команду "settime" и выводится сообщение "Укажите часы". Вписываем число, оно кладется в специальную переменную, предназначенную для часов. Далее выводится сообщение "Укажите минуты". Также пишем число, оно кладется в переменную, отведенную минутам. То же самое делаем с секундами. После задаем время таким образом: time.setTime(s,m,h). Но ни черта не получается.
     
  2. Ricochet

    Ricochet Нуб

    Вот скетч:

    #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;
    }
    }
     
  3. Tomasina

    Tomasina Сушитель лампочек Модератор

    Зачем так сложно? Команда вида "settime 12:30" гораздо эргономичнее.

    P.S. оформляйте код правильно, иначе вас просто будут игнорировать.
     
  4. Ricochet

    Ricochet Нуб

    Не подскажите, как это организовать? Я про установку времени сообщением вида "settime 12:00"