Začíname s Arduinom: #4 Serial monitor

Publikoval Stanislav Jochman

Pri práci so snímačmi potrebuješ vedieť presné čísla, hodnoty aké ti na analógový vstup prichádzajú. Či už si potrebuješ nastaviť vzdialenosť od prekážky alebo vedieť na akú farbu sa robot práve pozerá.

V tomto prípade využijeme zapojenie z predošlého príkladu. Kód však doplníme tak, aby sme vedeli akou rýchlosťou LEDka bliká.

Zapojenie pre LED a potenciometra pre ukážku serial monitoru

V setup() inicializujeme sériovú komunikáciu a nastavíme akou rýchlosťou má prebiehať možné rýchlosti sú :300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200 baudov/s (štandardne sa používa 9600 baudov za sekundu).

Serial.begin(9600);

Taktiež nastavíme pin 13 ako výstup

pinMode(13,OUTPUT);

V loope už budeme čítať hodnotu z analógového vstupu A0 a ukladať ju do premennej hodnota_prevodnika. Táto hodnota nám bude udávať interval blikania led, ktorú máme zapojenú na pin 13. Následne cez funkciu map zmeníme hodnotu z rozmedzia 0-1023 na rozmedzie 100-1000

map(hodnota_prevodnika, 0, 1023, 100, 1000); // prepočítaj hodnotu z premennej hodnota_prevodnika, ktorá je v rozsahu 0-1023 a zmeň na nový rozsah 100-1000

Takto prepočítanú hodnotu uložíme do premennej cas_cakania. Zapneme ledku a počkáme čas v milisekundách podľa premennej cas_cakania. Následne ledku zhasneme a počkáme čas v milisekundach podľa premennej cas_cakania. Na konci vypíšeme hodnotu ktorá sa nachádza v premennej cas_cakania pomocou príkazu Serial.println() ktorý automaticky vypisuje do nového riadku. V prípade, že chceme vypisovať do 1 riadku urobíme tak príkazom Serial.print().

Keď si otvoríš serial monitor uvidíš pod sebou behať čísla. Tie sú celé pretože premenná, kde hodnotu ukladáme, je celočíselný dátový typ (integer). Rozsah, v ktorom sa pohybujú je 100-1000. To je však už premapovaná hodnota, ktorú premapovala funkcia map(). Prevodník vo vnútri procesora má 10 bitové rozlišenie(to určuje číslo 0-1023 -->2^10), ktoré udáva citlivosť prevodníka. To znamená že prevodník vie rozlíšit 1024 úrovni napätia v rozmedzí 0-5V. V prípade, že si chces nechať vypisovať hodnotu prevodníka a nie času čakania tak si zmeň Serial.println(cas_cakania); na Serial.println(hodnota_prevodnika);



Celý program bude vyzerať takto:

 

Celý program na stiahnutie.


Zdieľať tento článok



← Staršie príspevky Novšie príspevky →