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 história
Arduino história

Arduino [čítaj Arduíno] je v informatike názov malého jedno-doskového počítača založeného na mikrokontroléri ATmega od firmy Atmel. Svojim návrhom sa snaží podporiť výučbu informatiky v školách a oboznámiť študentov s tým, ako sú pomocou počítačov riadené rôzne zariadenia ...

Čítať viac...

Prvý program: Arduino blikanie LED
Prvý program Arduino blikanie LED

V tomto článku ti ukážem praktickú ukážku, ako zapojiť a naprogramovať Arduino. Ide o také to programátorské “Hello World” s Arduinom. V našom prípade to je “Arduino blikanie LED”. Blikanie LED diódou možno bez ďalších súčiastok realizovať s akoukoľvek...

Čítať viac...

Dióda
Dióda

Dióda je elektrotechnická súčiastka s dvoma elektródami, označovanými ako anóda a katóda, ktorá sa vyznačuje veľmi odlišným tvarom Volt-Ampérovej charakteristiky v závislosti na polarite priloženého napätia. Po pripojení anódy na kladnejšie napätie ako je na...

Čítať viac...

Obľúbené produkty...

Keyestudio SIM800C GPRS GSM Shield

25.80 EUR

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

  • Adresové operátory

    Adresové operátory označované aj ako ukazovatele (anglicky pointer, česky ukazovateľ, slovensky s...

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

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