Close

hodiny

Zvolené téma obsahuje celkem 2 odpovědi. Do diskuze (2 hlasy) se naposledy zapojil uživatel  Petr99 a poslední změna proběhla před 12 měsíců.

Prohlížíte 3 příspěvky - 1 ze 3 (z 3 celkově)
  • Autor
    Příspěvky
  • #9680

    Petr99
    Účastník

    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
    Účastník

    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
    Účastník

    Díky, funguje 🙂

Prohlížíte 3 příspěvky - 1 ze 3 (z 3 celkově)

Pro reakci na tento článek se musíte přihlásit.