Načtení více hodnot ze SL

Odpovědět
Lukas
Příspěvky: 1
Registrován: 07 čer 2018, 19:21
Reputation: 0

Načtení více hodnot ze SL

Příspěvek od Lukas » 07 čer 2018, 19:37

Ahoj, začínám s Arduinem a chtěl bych vás požádat o pomoc. Možná jde o banalitu ale už nevím...
Potžebuju ze seriové linky načíst např. 3 hodnoty a ty uložit do proměných typu int...a dále spracovat(myslím že to je v poho)
Řeším to následujícím způsobem(viz dole), ale stihnu pouze zadat první číslo a třetí....Existuje neco jako v c++ cin.get(); ???
Nebo jak mám udělat, aby se mi načetli všechny hodnoty? díky.

Kód: Vybrat vše

if(Serial.available()){
		a = Serial.readString().toInt();
		Serial.print("Zadej B: \t");
		Serial.println();
		b = Serial.readString().toInt();
		Serial.print("Zadej C: \t");
		c = Serial.readString().toInt();
		Serial.println();
		....

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Načtení více hodnot ze SL

Příspěvek od AstroMiK » 07 čer 2018, 20:30

Kód: Vybrat vše


int cislo[3];                  // 3 cisla se budou zadavat do tohoto pole (cislo[1], cislo[2], cislo[3])
byte index_cisla = 1;          // aktualni index zadavaneho cisla (ukazatel na aktualni bunku v poli)


void setup()
  {
    Serial.begin(9600);
  }

void loop()
  {
    Serial.print ("Zadej ");
    Serial.print (index_cisla);
    Serial.println (". cislo");

    while (Serial.available() == false)         // dokud neni na seriove lince zadny znak, cekej
      {}

    delay(10);                                  // kdyz se prvni znak objevi, pockej jeste chvili, nez do bufferu prijde i zbytek cisla

    cislo[index_cisla] = Serial.readString().toInt();  // to, co prislo po seriove lince preved na int a uloz do prislusne bunky v poli cislo[]



    index_cisla ++;                        // posun ukazatel na dalsi pozici bunky v poli
    if (index_cisla == 4)                  // pri prekroceni poctu zadavanych cisel ...
      {
        index_cisla = 1;                   // ... se ukazatel vynuluje

        Serial.println(' ');               // a vsechny tri zadana cisla se vypisou.
        Serial.println("Zadana cisla: ");
        for (byte i= 1; i<4 ; i++)
          {
            Serial.print (i);
            Serial.print (". cislo = ");
            Serial.println (cislo[i]);
          }    
        Serial.println("-------------------");              // konec jednoho zadavaciho cyklu
      }


  }

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 9 hostů