Stránka 1 z 1

odeslání a příjimání čísla seriový monitor

Napsal: 17 zář 2020, 11:00
od Martin666
Dobrý den
Mám problém, dělám pokus s arduinem a posílám celá čísla přes sériový monitor do arduina MEGA 2560. V programu s ním chci matematicky pracovat, ale nedaří se mi data přijmout v potřebném typu. zkoušel jsem to přes 2 příkazy.
1)Serial.parseFloat()
To však funguje jen do 6 řádu a pak z toho lezou změněná čísla.
2)Serial.readString()
Toto mi sice příjme i vrátí cokoliv v nezměněné podobě, ale matematicky s tím nejde pracovat.
Výstupní datový typ bych potřeboval float, nebo alespoň long.
Jsem teda začátečník, tak se omlouvám za možná triviální otázku.

Re: odeslání a příjimání čísla seriový monitor

Napsal: 17 zář 2020, 11:29
od KamilV

Kód: Vybrat vše

buff = Serial.readString();

long n1 = (long) buff;
long n2 = atol(buff);
long n3 = atof(buff);
Zkusil bych něco z toho. Nevím teď z hlavy, jak a v čem přesně se Wiring liší od AnsiC.

Re: odeslání a příjimání čísla seriový monitor

Napsal: 17 zář 2020, 11:31
od AstroMiK
Float je nepřesný formát a dochází u něj někdy i k nečekanému zaokrouhlování.

Funkce Serial.parseInt() dokáže přijímat i long velikost čísla.

Kód: Vybrat vše

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

void loop()
  {
    if (Serial.available())
      {
        unsigned long cislo = Serial.parseInt();
        Serial.println(cislo);
      }

  }

Re: odeslání a příjimání čísla seriový monitor

Napsal: 17 zář 2020, 12:30
od ondraN
Martin666 píše:
17 zář 2020, 11:00
Dobrý den
.....
2)Serial.readString()
Toto mi sice příjme i vrátí cokoliv v nezměněné podobě, ale matematicky s tím nejde pracovat.
Výstupní datový typ bych potřeboval float, nebo alespoň long.
Jsem teda začátečník, tak se omlouvám za možná triviální otázku.
Čísla ze stringu nebo textového pole lze dostat celkem jednoduše

http://www.cplusplus.com/reference/string/stoi/