Ostatné IO funkcie

U Arduina je možné generovať i zvuk, ale iba v najjednoduchšej podobe. Neumožňuje totiž generovať analógové hodnoty. Rozlišuje teda iba 0V a 5V. Výsledná vlna nazývaná squarewave vychádzajúca z Arduina vyzerá takto:

squarewave, štvorcová vlna

Výška tónu závisí na frekvencii, to je počet opakovania “vrcholov” vlny za jednu sekundu. U Arduina to znamená počet zmien z 0 na 5V za sekundu. Jednotkou frekvencie je hertz (Hz). Ľudské ucho je schopné rozlíšiť približne tóny medzi 20Hz až 20.000Hz. Rozsah sa však líši medzi jedincami.

tone(pin, frekvencia, čas)

Funkcia tone() slúži na generovanie tónu. Má dva povinné a jeden nepovinný parameter. Prvým z nich je pin, na ktorom bude pripojený reproduktor alebo piezobzučiak, druhým parametrom je frekvencia tónu a nepovinný parameter je dĺžka tónu v milisekundách (inak tón pokračuje až do volania noTone()). Strieda vlny je 50%. Frekevenčný rozsah je cca 31Hz až 65535Hz. Naraz môže znieť iba jeden tón. Ak už znie na jednom pine jeden tón, volanie funkcie tone() na inom pine neurobí nič. Ak sa funkcia zavolá na tom istom pine, zmení jeho frekvenciu. Pozor, použitie funkcie tone() bude ovplyvňovať generovanie PWM signálov.

void tone(uint8_t pin, unsigned int frequency, unsigned long duration=0);

noTone(pin)

Touto funkciou sa vypne generovaný tón na danom pine. Používa sa vtedy, keď nie je nastavená dĺžka tónu vo funkcii tone().

void noTone(uint8_t pin);

shiftOut(dataPin, clockPin, bitOrder, hodnota)

Funkcia shiftOut() vykonáva postupné odosielanie jednotlivých bitov (hodnota) na výstupný pin (dataPin). Funkcia postupuje podľa nastavenia poradia bitov (bitOrder) tak, že najprv nastaví hodnotu bitu na dataPin a potom urobí krátky impulz hodín na clockPin. Toto je softvérová implementácia rovnakej funkcionality ako vykonáva rozhranie SPI. SPI je síce voči tejto funkcii rýchlejšie, ale nemôže zase odosielať bity na ľubovoľnom pine. DataPin a clockPin musia byť už nakonfigurované ako výstupy pomocou volania pinMode().

void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t value);

Nastavenie poradia bitov bitOrder je:

  • MSBFIRST – Most Significant Bit First. Najvýznamnejšie bity idú ako prvé
  • LSBFIRST – Least Significant Bit First. Najmenej významné bity idú ako prvé.

Táto funkcia shiftOut() sa spravidla používa s externým hardvérom, napr. s posuvným registrom 74HC595. Takto vieme Arduino rozšíriť o ďalšie výstupné piny napr. pre LED. Tieto obvody sa dajú samozrejme reťaziť a rozširovať tak o ďalšie a ďalšie výstupné piny.


shiftIn(dataPin, clockPin, bitOrder)

Funkcia shiftIn() vykonáva postupné prečítanie jednotlivých bitov na vstupnom pine (dataPin). Funkcia postupuje podľa nastavenia poradia bitov (bitOrder – MSBFIRST alebo LSBFIRST) tak, že urobí krátky pulz hodín na clockPin a potom prečíta hodnotu bitu na dataPin. Hodinový signál je signalizáciu pre druhú stranu, aby poslala ďalší bit.

uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder);

Táto funkcia shiftIn() sa spravidla používa s externým hardvérom, napr. s posuvným registrom 74HC165. Takto vieme Arduino rozšíriť o ďalšie vstupné piny napr. pre tlačítka. Tieto obvody sa dajú samozrejme reťaziť a rozširovať tak o ďalšie a ďalšie vstupné piny.


pulseIn(pin, hodnota, limit)

Funkcia pulseIn() je určená pre meranie dĺžky impulzu na pine. Nastavením začiatku sledovania na úroveň HIGH (alebo LOW) sa časovač spustí pri detekovaní signálu HIGH (LOW) na danom pine. Po jeho zmene na LOW (HIGH) sa časovač zastaví. Funkcia následne vráti dĺžku impulzu v mikrosekundách alebo 0, ak nebol prijatý žiadny úplný impulz v časovom limite. Voliteľný parameter limit je štandardne nastavený na jednu sekundu alebo na zadanú hodnotu ideálne v rozmedzí 10ms až 3 minúty.

unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout);

Príklad: sledovanie impulzu na pine 7, výsledok sa uloží do premennej trvanie

int pin = 7;
unsigned long trvanie;

void setup() {
  pinMode(pin, INPUT);
}

void loop() {
  trvanie = pulseIn(pin, HIGH);
}

Tento text je preložený a upravený zo stránok arduino.cc pod licenciou Creative Commons Attribution-ShareAlike 3.0.

Výber na čítanie...

Arduino Nano
Arduino Nano

Arduino Nano je založené na procesore ATmega328. Má rovnakú funkčnosť ako Arduino UNO, ale je menšie a je kompatibilné s nepájivím kontaktným polom (breadboard). Chýba mu DC napájací konektor a pracuje s mini-USB káblom namiesto štandardného. Tento typ dosky používam veľmi...

Čítať viac...

Výpočet predradného rezistoru pre LED
Výpočet predradného rezistoru pre LED

Výpočet predradného rezistoru pre LED diódu pre bežného elektrotechnika nie je nič zložité. Tým ostatným, čo nevedia ako na to, sa to pokúsim vysvetliť v nasledujúcich riadkoch s niekoľkými obrázkami a kalkulačkou. Pôvodne bol nápad uviesť sem tabuľku s farbami LED diód, no pri vzhliadnutí niekoľkých katalógov som dospel k...

Čítať viac...

Eclipse Neon návod na inštaláciu
Eclipse Neon – návod na inštaláciu

Eclipse je ďalšie z mnoha IDE, v ktorom píšeme zdrojový kód a ladíme programy. Tento nástroj, ktorý okrem iného ponúka príjemné pracovné prostredie, debuger a nemalé množstvo rozširujúcich pluginov, je možné používať bezplatne. V tomto článku popisujem, ako sa ...

Čítať viac...

Obľúbené produkty...

Keyestudio 3 in 1 Beetlebot Robot Car

81.47 EUR

81.47 EUR

Keyestudio Ultimate IOT Super Starter Kit

52.99 EUR

52.99 EUR

Keyestudio MEGA 2560 R3 Development Board

34.07 EUR

26.24 EUR

Vyhľadať články
Programovanie...
  • Konštanty

    Konštanty sú symboly reprezentujúce nemennú číselnú alebo inú hodnotu. Prekladač jazyka im prirad...

  • Aritmetické operátory

    Aritmetické operátory vykonávajú matematické operácie dvoch výrazov jednej alebo viacerých typov ...

  • Goniometrické funkcie

    Goniometrické funkcie v matematike označuje termín používaný pre jednu zo šiestich funkcií veľkos...

  • Bitové operátory

    Bitové operátory umožňujú vykonať operácie nad jednotlivými bitmi. Túto možnosť zďaleka nemajú vš...

  • Matematické funkcie

    Teraz si ukážeme, aké ďalšie matematické funkcie a operácie podporuje Arduino okrem sčítavania, o...

Podpora webu
Na kávu už prispeli
Dátum Meno Suma
22.03.2025 Radoslav Kopera 5€
30.12.2024 Jozef Greš 5€
20.10.2024 Radovan Nosáľ 20€
02.10.2024 Milan Durkoš 10€
08.01.2024 Veres Dusan 10€
15.05.2023 Ivan Danis 10€
28.09.2022 Ivan Vrab 7€
14.05.2022 Nemcic Marian 10€
04.02.2022 Robert Bilko 5€
29.01.2022 Peter Buffa 5€
19.11.2021 Rastislav Rehak 5€
16.09.2021 Anton Strela 5€
13.09.2021 Juraj Jedlak 5€
02.09.2021 Michal Marek 7€
08.08.2021 František Uhrík 5€
21.07.2021 Juraj Hrdina 5€
25.03.2021 Jan Nemec 10€
16.03.2021 Igor Pavlov 5€
25.02.2021 Lukas Lacuch 5€
06.11.2020 Pavol Balint 5€
05.11.2020 Marek Horečný 5€
05.10.2020 Jan Kusnir 5€
27.04.2020 Jan Zuskin 15€
26.04.2020 Dušan Sojka 5€
24.02.2020 Juraj Lackanič 5€
22.01.2020 František Žilinec 10€
20.05.2018 Tomáš F. 2€
17.12.2018 Pavol P. 5€
QR Donate 10Eur