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

Odpovědět
Martin666
Příspěvky: 1
Registrován: 01 zář 2020, 06:24
Reputation: 0

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

Příspěvek od Martin666 » 17 zář 2020, 11:00

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.

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

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

Příspěvek od KamilV » 17 zář 2020, 11:29

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.

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

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

Příspěvek od AstroMiK » 17 zář 2020, 11:31

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);
      }

  }

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

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

Příspěvek od ondraN » 17 zář 2020, 12:30

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/

Odpovědět

Kdo je online

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