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 Due
Arduino Due

Arduino Due je prvou doskou Arduino založenou na 32-bitovom mikrokontroléri Atmel SAM3X8E ARM Cortex-M3 CPU. Ide o dokonalú dosku pre výkonné veľké Arduino projekty...

Čítať viac...

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...

Arduino Knižnice návod na inštaláciu
Knižnice – návod na inštaláciu

Knižnice určené pre Arduino sú priečinky (adresáre), ktoré združujú viac súborov so zdrojovými kódmi. Vďaka týmto zdrojovým kódom máme potom jednoduchší a prehľadnejší vlastný program, keď chceme pripojiť nejaký zložitejší modul, senzor, displej a podobne. Napríklad pri stiahnutí programovacieho ...

Čítať viac...

Obľúbené produkty...

Keyestudio ESP32 Learning Starter Kit

110.02 EUR

57.21 EUR

Keyestudio USB Host v1.5 shield

12.72 EUR

12.72 EUR

Keyestudio STEM Plus Board Starter Kit

67.60 EUR

55.43 EUR

Vyhľadať články
Programovanie...
  • Globálne premenné

    Premenné aj funkcie majú svoj rozsah platnosti, čiže oblasť, v ktorej fungujú a v ktorej nie. Vid...

  • Aritmetické operátory

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

  • Relačné operátory

    Relačné operátory sú < > = == !=. Sú definované pre operandy všetkých základných dátových typov. ...

  • Logické operátory

    Logické operátory sú && || ! (and or a not). Vykonávajú výpočet logických výrazov tvorených ich o...

  • Zložené operátory

    Použitie zložených priraďovacích operátorov zjednodušuje a sprehľadňuje zdrojový kód, no použitie...

Podpora webu
Na kávu už prispeli
Dátum Meno Suma
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