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

Arduino Uno je v súčasnej dobe asi najčastejšie používaný typ dosky. Je priamym pokračovateľom hlavnej vývojovej línie, ktorá začala prvým Arduinom so sériovým portom namiesto USB, pokračujúce cez Arduino Extreme, NG, Diecimila a Duemilanove až k dnešnému Uno. Na doske nájdeme...

Čítať viac...

MIT App Invertor 2
MIT App Invertor 2

Nástroj MIT App Inventor 2 je cloudové vývojové prostredie, ktoré umožňuje programovať aplikácie pre mobilné zariadenia s operačným systémom Android priamo v internetovom prehliadači. Je to nástroj, ktorý je vyvinutý...

Čítať viac...

Rezistor
Rezistor

Rezistor (odpor) je pasívny prvok. Používa sa vo všetkých elektrických obvodoch. Základnou vlastnosťou rezistora je jeho odpor. Odpor je fyzikálna vlastnosť, ktorá je daná štruktúrou materiálu a jeho rozmermi. Rezistory používané v elektrotechnike sú...

Čítať viac...

Obľúbené produkty...

Keyestudio ESP32 Basic Learning Kit

75.18 EUR

39.09 EUR

Keyestudio Frog Robot Car Kit

101.69 EUR

61.01 EUR

Vyhľadať články
Programovanie...
  • Relačné operátory

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

  • Konštanty

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

  • Dátové typy

    Celočíselné dátové typy môžu obsahovať modifikátory unsigned respektíve signed, čím môžeme požado...

  • Bitové operátory

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

  • Ostatné IO funkcie

    U Arduina je možné generovať i zvuk, ale iba v najjednoduchšej podobe. Neumožňuje totiž generovať...

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