Close

Odpověď na: identifikace proměnných

Úvodní stránka Fórum Hardware Arduino identifikace proměnných Odpověď na: identifikace proměnných

#2977
Zbyšek Voda
Správce

Dobrý den,

když pošlete po sériové lince například:

Serial.println(hodnotaA)
Serial.println(hodnotaB) 

tak zařízení, které tyto hodnoty čte nemá šanci poznat, že se jednalo ho proměnné hodnotaA a hodnotaB. Přijatá data jsou to pro něj jenom série nul a jedniček (resp. bytů).

Při sériové komunikaci se většinou postupuje tak, že za číslem vždy následuje nějaký nečíselný znak. Na tento znak čeká program přijímající data. Podle toho pozná, že už číslo přišlo celé a z přijatých bytů poté poskládá přijaté číslo.

Druhou (a jednodušší) možností je použití Serial.parseInt(). Z Arduina, které data odesílá se pošle např.

Serial.print(hodnotaA);
Serial.print('a')
Serial.print(hodnotaB);
Serial.print('a')

Kdy na místě ‚a‘ může být libovolný nečíselný znak.
Funkce Serial.parseInt() čeká, dokud neobdrží nějaký nečíselný znak a po jeho přijetí poskládá číslo z bytů přijatých před ním. Tedy v programu Arduina, které data přijímá by mělo být něco jako:

int hodnotaA = Serial.parseInt()
int hodnotaB = Serial.parseInt()

Každopádně bych ale asi zvážil, jestli je opravdu vhodné použití sériové linky v případě, když budete mít propojeno více Arduin než dvě. Někdy to nemusí vadit, ale mohlo by to dělat problémy. Možná by bylo lepší použít sběrnici i2c. Ta umožňuje přímé adresování jednotlivých desek.