Obsah:

Zvonček Arduino: 4 kroky
Zvonček Arduino: 4 kroky

Video: Zvonček Arduino: 4 kroky

Video: Zvonček Arduino: 4 kroky
Video: Использование драйвера шагового двигателя L298N Для управления 4-проводным шаговым двигателем 2024, Júl
Anonim
Zvonček Arduino
Zvonček Arduino

Dnes vám ukážem, ako si vyrobiť zvonček pomocou Arduina. Tento zvonček hrá náhodnú melódiu z knižnice skladieb. Môžete si prispôsobiť svoj zvonček a pridať ešte viac skladieb. Nainštalujte ho mimo svoju spálňu, triedu, kanceláriu alebo dokonca predné dvere!

Zásoby:

  • Arduino Uno (väčšina ostatných typov to zvládne)
  • Počítač s Arduino IDE na programovanie
  • Kábel USB-A na USB-B na programovanie Arduina
  • Breadboard
  • 4x prepojovacie vodiče
  • Tlačidlo alebo iný spínač
  • Rezistor 10 kOhm
  • Pasívny bzučiak (t. J. Piezoelektrický reproduktor)
  • Pre trvalú inštaláciu:

    • 9V DC napájací zdroj alebo 9V batéria na napájanie Arduina
    • 2x dlhé vodiče na zapojenie tlačidla vonkajších dverí

Krok 1: Nastavenie hardvéru

Nastavenie hardvéru
Nastavenie hardvéru
Nastavenie hardvéru
Nastavenie hardvéru
Nastavenie hardvéru
Nastavenie hardvéru

Najprv nastavíme hardvér. Začneme pasívnym bzučiakom (t.j. reproduktorom). Chceme pripojiť kladný koniec pasívneho bzučiaka (označený znamienkom „+“) k digitálnemu pinu 8 na Arduine. Druhý koniec pasizačného bzučiaka spojíme so zemou.

Ďalej nainštalujeme tlačidlo zvončeka. Na prepínač použijeme externý pulldown odpor 10 kOhm, takže na vstupe do Arduina nie je žiadne plávajúce napätie alebo nestabilný stav. Použitím pulldown rezistora, Arduino číta napätie ako 0V, keď nie je tlačidlo stlačené a 5V, keď je tlačidlo stlačené. Ďalšie informácie o pullup alebo pulldown odpore nájdete v tomto článku:

Jednu stranu tlačidla zapojíme na 5V. Druhá strana tlačidla bude prepojená so zemou prostredníctvom pulzného odporu 10 kOhm. Nezabudnite: tlačidlá sú vnútorne vodorovne spojené. Pri stlačení sú spojené iba zvisle. Viac informácií je uvedených v tomto článku:

Krok 2: Nastavenie softvéru

Celý kód je priložený. Nasledujú popisy jednotlivých funkcií so snímkami kódu.

nastaviť:

Vo funkcii setup () chceme nakonfigurovať digitálne piny pre naše tlačidlo a reproduktor. Chceme nakonfigurovať pin 2 ako vstup pre naše tlačidlo a chceme nakonfigurovať pin 8 ako výstup pre náš reproduktor.

Chceme tiež „naočkovať“náš generátor náhodných čísel na náhodný výber melódie, keď nám niekto zazvoní pri dverách. Očkovanie nášho generátora náhodných čísel znamená nakŕmenie náhodného vstupu. Osadíme náš generátor náhodných čísel hodnotou napätia na analógovom vstupe 0. Pretože k tomuto vstupu nie je nič pripojené, na tomto kolíku bude „náhodné“kolísavé napätie, ktoré poskytne nášmu generátoru náhodných čísel mnoho rôznych hodnôt. To zaisťuje, že pre náš zvonček budeme mať iné poradie výberov piesní. Viac informácií o funkcii Arduino random () nájdete tu:

#include "pitches.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * nastaviť funkciu */void setup () {// povoliť vstupné/výstupné piny pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // funkcia seed random (), aby sme dostali iný poriadok randomSeed (analogRead (0)); }

slučka:

V našej funkcii loop () budeme priebežne kontrolovať, či je tlačidlo stlačené (digitálny pin 2 je vysoký). Ak je kolík vysoký, počkáme 50 ms a znova skontrolujeme, či je stále vysoký. To zaisťuje, že je tlačidlo stlačené a na kolíku digitálneho vstupu nie je žiadny rušivý šum, ktorý spôsobuje falošne pozitívne výsledky.

Keď sme potvrdili, že bolo tlačidlo stlačené, použijeme generátor náhodných čísel na výber jednej z 5 skladieb pomocou príkazu switch. Údaje pre tieto piesne sú uložené v priečinku „Songs.h“a informácie o výške tónu sú uložené v priečinku „Pitches.h“. Keď si vyberieme skladbu, prenesieme tieto informácie do funkcie play_song ().

/ * funkcia main while loop */

void loop () {// skontroluje, či je stlačené tlačidlo if (digitalRead (BUTTON_PIN) == HIGH) {// oneskorenie 50 ms, aby sa ubezpečil, že je stále stlačené // vyhýba sa akémukoľvek zdržaniu nesprávneho čítania (50); if (digitalRead (BUTTON_PIN) == HIGH) {// náhodne vyberte skladbu int song_choice = random (5); // vyberte, ktorú skladbu chcete prehrať (song_choice) {prípad 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); prestávka; prípad 1: play_song (marioLength, mario, marioDurations, marioTempo); prestávka; prípad 2: play_song (miiLength, mii, miiDurations, miiTempo); prestávka; prípad 3: play_song (hpLength, hp, hpDurations, hpTempo); prestávka; prípad 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); prestávka; predvolené: play_song (miiLength, mii, miiDurations, miiTempo); prestávka; }}}}

play_song:

play_song () má 4 argumenty: celočíselný počet tónov v skladbe, celočíselné pole výšok v melódii, celočíselné pole trvania a celočíselné tempo pre konkrétnu skladbu. Každý z nich musíte zadať pre každú skladbu, ktorú chcete hrať. Ďalšie informácie o tom, ako používať funkcie tónov Arduino, nájdete v tomto návode: https://www.arduino.cc/en/Tutorial/ToneMelody. Na začiatok tohto tutoriálu pre bodkované poznámky som pridal niektoré funkcie. Ak je hodnota v poli trvania poznámky záporná, znamená to, že ide o notu s bodkami (dĺžka je 1,5 -krát väčšia).

/ * hrá pieseň */

void play_song (int num_notes, int melody , int noteDurations , int tempo) {// krok a prehrajte všetky noty pre (int i = 0; i 0) {duration = tempo / noteDurations ; } // ak je to záporné číslo, znamená to, že bodkovaná poznámka // predlžuje trvanie na polovicu pre bodkované noty else if (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1,5; } tón (SPEAKER_PIN, melódia , trvanie); // na rozlíšenie poznámok nastavte medzi nimi minimálny čas. // Zdá sa, že trvanie poznámky + 30% funguje dobre: int pauseBetweenNotes = trvanie * 1,30; oneskorenie (pauseBetweenNotes); // zastavenie prehrávania tónu: noTone (SPEAKER_PIN); }}

Ukážka skladieb.h:

Nasleduje ukážka jednej z piesní v piesni „Songs.h“. Poznámky sú makrá definované v "pitches.h". Čísla zodpovedajú frekvenciám tónov v hertzoch (Hz). Trvanie tónov je definované ako: 1 = celá nota, 2 = polovičná nota, 4 = štvrtinová nota, 8 = ôsma nota, -4 = bodkovaná štvrť nota atď. Dĺžka je celkový počet nôt v piesni. Tempo je deliteľom rýchlosti piesne (vyššie číslo znamená pomalšie tempo). S týmto číslom sa budete musieť pohrať, kým nezískate tempo, ktoré sa vám páči.

/ * harry potter */

int hp = {NOTE_D4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_G4, NOTE_D5, NOTE_C5, NOTE_A4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_GS4, NOTE_D4}; int hpDurations = {4, -4, 8, 4, 2, 4, -2, -2, -4, 8, 4, 2, 4, 1}; int hpLength = 14; int hpTempo = 1050;

Krok 3: Vylepšenia

Pridajte ďalšie piesne! Postupujte podľa formátu uvedeného v časti „songs.h“a pomocou pomocníka nájdete tento návod: https://www.arduino.cc/en/Tutorial/ToneMelody. Pri každej novej skladbe, ktorú pridáte, nezabudnite do príkazu switch pridať nové veľké a malé písmená a zvýšte maximálny počet, ktorý je možné vygenerovať pomocou funkcie random (). Šťastné kódovanie!

Krok 4: Viac projektov

Viac projektov nájdete na mojich stránkach:

  • https://dargen.io/
  • https://github.com/mjdargen
  • https://www.instructables.com/member/mjdargen/

Odporúča: