Image
11.6.2015 0 Comments

ARDUINO - zasielanie znakov do Arduina z počítača /5.časť

Späť na úvod >> Späť na programovanie >> Späť na seriál

Komunikácia do Arduina

V predchádzajúcich príkladoch sme realizovali komunikáciu z Arduina do počítača. Bolo to jednoduché – po nastavení komunikácie sme iba jednoducho príkazom Serial.println odoslali text do počítača. Teraz ukážeme opačný postup – odoslanie textu z počítača do Arduina a jeho následné spracovanie Arduinom  (vopred naznačíme, že tento postup môže mať niekoľko spôsobov podľa toho, či odosielame čísla, znaky alebo celé texty – takzvané reťazce).

Prvý príklad

Pozrime sa na výpis prvého dnešného programu:

byte prijate;
 
void setup() {
  // sem vlož kód, ktorý sa vykoná iba raz:
  Serial.begin(9600);
}
 
void loop() {
  // sem vlož hlavný kód, ktorý sa vykonáva cyklicky:
 
  if (Serial.available() > 0) {
    prijate = Serial.read();
    Serial.write(prijate);
  }
}

Klasicky sa skladá z troch častí. V prvej  časti hneď v úvode programu sa definujú takzvané premenné.   Všeobecne je premenná malý úsek dátovej pamäte mikrokontroléra, do ktorej sa ukladajú určité hodnoty. Každá premenná je charakterizovaná svojím menomtypom uložených dát. Premennú si môžeme predstaviť ako škatuľku, ktorá má na vrchnáku napísaný názov, napríklad Na zmrzlinu, pričom sa v nej budú nachádzať eurá a centíky na túto pochúťku (typom dát sú v tomto prípade peniaze). V našom príklade sa v tejto časti nachádza iba jedna premenná s menom prijate, ktorá je typu byte (bajt). Bajt je číslo, ktoré môže dosahovať 256 hodnôt – od nuly po 255.

V druhej časti sa v sekcii setup() nachádza nám už známy príkaz Serial.begin(9600), ktorý nastavuje sériovú komunikáciu s rýchlosťou 9600 baudov (čítaj „bódov“ , čo je približne 9600 bitov za sekundu)

V tretej výkonnej časti loop() sa nachádza pre nás nový, takzvaný podmienený príkaz. Všeobecný úplný syntaktický zápis podmieneného príkazu je takýto:

if (podmienka) {
    príkaz1;
      .
      .
    príkazn;
  }
else {
    iný_príkaz;
  }

Podmienený príkaz sa vždy začína slovom if (z angl. ak) a v guľatých zátvorkách obsahuje podmienku, ktorá určuje, či sa príkaz (alebo  viac príkazov) v prvých zložených zátvorkách vykoná (vykonajú) alebo nie. Ak je podmienka splnená, príkaz (príkazy) sa vykoná (vykonajú), ak podmienka splnená nie je, príkaz sa preskočí a vykonajú sa príkazy uložené v zátvorkách za slovom else (z angl. inak).  Po preložení do slovenčiny podmienený príkaz znie: Ak (if) je splnená podmienka, vykonaj príkazy príkaz1príkazn, inak (else) vykonaj iný_príkaz. Samozrejme, aj v časti za else možno napísať viac ako jeden príkaz.

Poznámka:

Sekcia so slovom else nie je povinná a môže sa v prípade potreby vynechať. Tak sa v prípade nesplnenia podmienky nevykoná žiadny príkaz.

V našom prípade je podmienkou zápis (Serial.available() > 0), ktorý sa skladá z funkcie (Serial.available), z porovnávacieho operátora (>) a z čísla nula (0). Funkcia Serial.available vracia počet bajtov (znakov), dostupných na prečítanie zo sériového portu. Celý zápis podmienky teda značí: ak je počet znakov dostupných na sériovom porte väčší ako nula, vykonaj príkazy na riadkoch uvedených v zložených zátvorkách.

A v zložených zátvorkách sú tieto riadky:

prijate = Serial.read();

Serial.write(prijate);

Prvý riadok obsahuje funkciu Serial.read(). Tá načíta dáta (jeden bajt) prichádzajúce po sériovej linke a uloží ho do premennej prijate. V druhom riadku príkazom Serial.write vyšleme naspäť po sériovej linke obsah premennej prijate. Príkaz Serial.write je veľmi podobný príkazu Serial.print, ktorý už poznáme. Serial.write však odošle iba jeden bajt (na rozdiel od príkazu Serial.print).

Ale my chceme odosielať a prijímať znaky, nie bajty, však? Všetko je v poriadku – musíme si uvedomiť, že znaky sú v počítačovej technike reprezentované ako bajty v takzvanej tabuľke ASCII, teda čo jeden znak, to jeden bajt! Obsah tabuľky ASCII si môžeme nájsť na internete, napríklad veľké písmeno A je v  tabuľke ASCII uložené ako bajt s hodnotou 65.

Spustenie a opis činnosti programu

Program napíšeme, skompilujeme a nahráme do Arduina. Program sa v Arduine spustí a začne cyklicky vykonávať. Keďže sme ešte neposlali do Arduina žiadne znaky, funkcia v podmienke Serial.available obsahuje nulu (žiadny dostupný znak na sériovej linke), a tak podmienka nie je splnená. Preto sa príkazy v zátvorkách preskočia a cyklus sa začína odznova. Spusťme teraz nám už známy Serial Monitor (prípadne v dolnom okienku nastavme prenosovú rýchlosť na 9600 baudov). Texty, ktoré chceme do Arduina odosielať, sa zapisujú do dlhého horného riadka (obrázok č. 1).

Napíšme ľubovoľný text, napríklad „Ahoj“. Kliknime na tlačidlo Send (alebo odklepnime kláves Enter na klávesnici). Tým odošleme text do Arduina. Arduino text (znak po znaku) prijme (prečíta funkciou Serial.read), počet dostupných znakov je teda väčší ako nula, a tak sa znak (jeden po druhom) uloží do premennej prijate a následne sa ten istý znak (príkazom Serial.write) odošle späť do počítača. Ten ho prijme a následne zobrazí v dolnom veľkom okne Serial Monitora. Po výpise posledného znaku (v tomto prípade po písmene j) sa príjem a následné zobrazovanie ukončí a Arduino očakáva vstup nových znakov z počítača. Keď potom zadáme z klávesnice ďalšie znaky, napríklad „Ako sa máš?“, Arduino ich prijme a odošle späť počítaču. Ako si môžeme všimnúť na obrázku č. 2, s Arduinom môžeme komunikovať aj znakmi s diakritikou (nie vždy, vysvetlíme to neskôr).

Nabudúce si vytvoríme interaktívny program, kde Arduinu zadáme z počítača vhodné údaje (hodnoty). Po ich spracovaní Arduino odošle naspäť do počítača vypočítané výsledky vrátane doplňujúcich textov.

 

Zobrazit Galériu

Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Ako na to

Tipy a triky: Ako na snímku obrazovky na akomkoľvek počítači s Windows?

02.12.2016 00:13

Ak snímky obrazovky robíte často apotrebujete napríklad funkcie na posun stránok alebo snímanie zobrazenia pri vyššom rozlíšení displeja, zrejme používate nejakú špecializovanú aplikáciu. Väčšina použ ...

Ako na to 1

Tipy a triky: Ako aplikácii prednastaviť spúšťanie s administrátorskými právami?

30.11.2016 00:10

Väčšina aspoň trochu skúsenejších používateľov vie, že aj keď máte na operačnom systéme Windows vytvorený administrátorský účet, aplikácie pre bezpečnosť nefungujú vždy splnými administrátorskými práv ...

Ako na to 2

Tipy a triky: Ako vypnúť uzamykaciu obrazovku vo Windows 10?

29.11.2016 00:10

Rozčuľuje vás, že pred každým prihlásením doúčtu vášho počítača musíte prejsť uzamykacou obrazovkou? Windows 10 na tejto obrazovke ukazuje čas,dátum anejakú zaujímavú fotografiu zrôznych kútov sveta. ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá