Close

hodiny

Zvolené téma obsahuje celkem 2 odpovědi. Do diskuze (2 účastníci) se naposledy zapojil uživatel  Petr99 a poslední změna je stará 6 měsíců.

Aktuálně jsou na stránce zobrazeny 3 příspěvky - 1. až 3. (z celkem 3)
  • Autor
    Příspěvky
  • #9680

    Petr99
    Participant

    Zdravím,
    Nemám s programováním moc zkušeností, a tak bych prosil o pomoc.
    Nahraju program a otevřu seriový monitor, tak prvním číslem nastavím hodiny, druhym minuty a třetím sekundy. Funguje to ale pouze s jednociferným číslem.
    Problém nastává, když zadám dvojciferné čislo. např. 22 tak mi to místo 22 hodin nastaví 2 hodiny a 2 minuty.
    Děkuji

    int s = 0;
    int m = 0;
    int h = 0;
    char znak;

    void setup() {
    Serial.begin(9600);
    Serial.println(„Hodiny“);
    while(h==0){
    if (Serial.available() > 0) {znak= Serial.read();
    h = znak-48;
    Serial.println(h);}

    }
    Serial.println(„Minuty: „);
    while(m==0)
    { if (Serial.available() > 0) {znak= Serial.read();

    m = znak-48;
    Serial.println(m);}
    }
    Serial.println(„Sekundy „);
    while(s==0){
    if (Serial.available() > 0) {znak = Serial.read();
    s = znak-48;
    Serial.println(s);}

    }
    }

    void loop() {

    s++;

    if (s > 59){s=0 ; m++;}
    if (m > 59){m=0 ; h++;}
    if (h > 23){h =0;}
    if (h<10) {Serial.print(„0“);}; Serial.print(h); Serial.print(„:“); if (m<10){Serial.print(„0“);}; Serial.print(m); Serial.print(„:“); if (s<10) {Serial.print(„0“);};Serial.println(s);
    delay(1000);
    }

    #9681
    BlindP
    BlindP
    Participant

    Ahoj, serial.read přečte jeden byte. Zkus to takhle:

    while(Serial.available() > 0) { hodiny = Serial.parseInt(); minuty = Serial.parseInt(); sekundy = Serial.parseInt(); if(Serial.read() == '\n') { break; } } 

    Čas potom nastavíš posláním 22:23:24.
    https://www.arduino.cc/en/Reference/ParseInt
    BP

    #9684

    Petr99
    Participant

    Díky, funguje 🙂

Aktuálně jsou na stránce zobrazeny 3 příspěvky - 1. až 3. (z celkem 3)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.