Obsah:

Zvonek Arduino: 4 kroky
Zvonek Arduino: 4 kroky

Video: Zvonek Arduino: 4 kroky

Video: Zvonek Arduino: 4 kroky
Video: Видеоуроки по Arduino #1: Первые шаги 2024, Červenec
Anonim
Zvonek Arduino
Zvonek Arduino

Dnes vám ukážu, jak vyrobit zvonek pomocí Arduina. Tento zvonek přehrává náhodnou melodii z knihovny písniček. Zvonek u dveří si můžete přizpůsobit a přidat ještě více skladeb. Nainstalujte jej mimo svou ložnici, třídu, kancelář nebo dokonce přední dveře!

Zásoby:

  • Arduino Uno (většina ostatních typů bude stačit)
  • Počítač s Arduino IDE pro programování
  • Kabel USB-A na USB-B pro programování Arduina
  • Prkénko
  • 4x propojovací vodiče
  • Tlačítko nebo jiný spínač
  • Rezistor 10 kOhm
  • Pasivní bzučák (tj. Piezoelektrický reproduktor)
  • Pro trvalou instalaci:

    • 9V DC napájecí zdroj nebo 9V baterie pro napájení Arduina
    • 2x dlouhé vodiče pro kabeláž vnějších dveří

Krok 1: Nastavení hardwaru

Nastavení hardwaru
Nastavení hardwaru
Nastavení hardwaru
Nastavení hardwaru
Nastavení hardwaru
Nastavení hardwaru

Nejprve nastavíme hardware. Začneme pasivním bzučákem (tj. Reproduktorem). Chceme připojit kladný konec pasivního bzučáku (označený znaménkem „+“) k digitálnímu pinu 8 na Arduinu. Druhý konec pasivního bzučáku připojíme k zemi.

Dále nainstalujeme tlačítko zvonku. Pro přepínač použijeme 10 kOhm externí pulldown odpor, takže na vstupu do Arduina není plovoucí napětí ani nestabilní stav. Použitím pulldown rezistoru, Arduino čte napětí jako 0V, když není tlačítko stisknuto a 5V, když je tlačítko stisknuto. Další informace o pullup nebo pulldown rezistorech si můžete přečíst v tomto článku:

Jednu stranu tlačítka připojíme na 5V. Druhá strana tlačítka bude spojena se zemí prostřednictvím pulzního odporu 10 kOhm. Pamatujte: tlačítka jsou propojena horizontálně interně. Jsou spojeny pouze svisle při stisknutí. Další informace jsou uvedeny v tomto článku:

Krok 2: Nastavení softwaru

Veškerý kód je přiložen. Níže jsou uvedeny popisy jednotlivých funkcí se snímky kódu.

založit:

Ve funkci setup () chceme konfigurovat digitální piny pro naše tlačítko a reproduktor. Chceme nakonfigurovat pin 2 jako vstup pro naše tlačítko a chceme nakonfigurovat pin 8 jako výstup pro náš reproduktor.

Chceme také „nasadit“náš generátor náhodných čísel pro náhodný výběr melodie, když někdo zazvoní u našich dveří. Načíst náš generátor náhodných čísel znamená dát mu náhodný vstup. Osadíme náš generátor náhodných čísel hodnotou napětí na analogovém vstupu 0. Protože k tomuto vstupu není nic připojeno, bude na tomto pinu „náhodné“kolísavé napětí, které poskytne našemu generátoru náhodných čísel mnoho různých hodnot. Tím zajistíme, že pro náš zvonek budeme mít jiné pořadí výběrů skladeb. Další informace o funkci Arduino random () naleznete zde:

#include "pitches.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * nastavení funkce */void setup () {// povolení vstupních/výstupních pinů pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // funkce seed random (), abychom získali jiný řád randomSeed (analogRead (0)); }

smyčka:

V naší funkci loop () budeme průběžně kontrolovat, zda je tlačítko stisknuto (digitální pin 2 je vysoký). Pokud je kolík vysoký, počkáme 50 ms a znovu zkontrolujeme, zda je stále vysoký. Tím je zajištěno, že je tlačítko stisknuto a že na digitálním vstupním kolíku není rušivý šum způsobující falešně pozitivní signál.

Jakmile jsme potvrdili, že bylo tlačítko stisknuto, použijeme náš generátor náhodných čísel k výběru jedné z 5 skladeb pomocí příkazu switch. Data pro tyto skladby jsou uložena v „songs.h“a informace o výšce jsou uložena v „pitches.h“. Jakmile vybereme skladbu, předáme tyto informace do funkce play_song ().

/ * funkce main while loop */

void loop () {// zkontrolujte, zda je stisknuto tlačítko if (digitalRead (BUTTON_PIN) == HIGH) {// zpoždění 50 ms, abyste se ujistili, že je stále stisknuto // vyhýbá se jakémukoli zpoždění chybného čtení (50); if (digitalRead (BUTTON_PIN) == HIGH) {// náhodně vybrat skladbu int song_choice = random (5); // vyberte, kterou skladbu chcete přehrát (song_choice) {případ 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); přestávka; případ 1: play_song (marioLength, mario, marioDurations, marioTempo); přestávka; případ 2: play_song (miiLength, mii, miiDurations, miiTempo); přestávka; případ 3: play_song (hpLength, hp, hpDurations, hpTempo); přestávka; případ 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); přestávka; výchozí: play_song (miiLength, mii, miiDurations, miiTempo); přestávka; }}}}

play_song:

play_song () má 4 argumenty: celočíselný počet not ve skladbě, celočíselné pole výšek v melodii, celočíselné pole trvání a celočíselné tempo pro danou skladbu. Každý z nich musíte zadat pro každou skladbu, kterou chcete hrát. Další informace o používání funkcí tónů Arduino najdete v tomto tutoriálu: https://www.arduino.cc/en/Tutorial/ToneMelody. Na začátek tohoto tutoriálu pro tečkované poznámky jsem přidal některé funkce. Pokud je hodnota v poli trvání poznámky záporná, znamená to, že se jedná o notu s tečkami (délka je 1,5krát větší).

/ * přehraje píseň */

void play_song (int num_notes, int melody , int noteDurations , int tempo) {// krok a přehrání všech not pro (int i = 0; i 0) {duration = tempo / noteDurations ; } // pokud je to záporné číslo, znamená to, že tečka s tečkami // prodlužuje trvání o polovinu u teček s tečkami else if (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1,5; } tón (SPEAKER_PIN, melodie , doba trvání); // pro rozlišení poznámek nastavte minimální čas mezi nimi. // Zdá se, že trvání poznámky + 30% funguje dobře: int pauseBetweenNotes = doba trvání * 1,30; zpoždění (pauseBetweenNotes); // zastavení přehrávání tónu: noTone (SPEAKER_PIN); }}

Ukázka skladeb. H:

Níže je ukázka jedné z písniček v „songs.h“. Poznámky jsou makra definovaná v "pitches.h". Čísla odpovídají frekvencím not v hertzech (Hz). Délka not je definována jako: 1 = celá nota, 2 = poloviční nota, 4 = čtvrtinová nota, 8 = osmá nota, -4 = tečkovaná čtvrtinová nota atd. Délka je celkový počet not ve skladbě. Tempo je děličem rychlosti písně (vyšší číslo znamená pomalejší tempo). S tímto číslem si budete muset pohrát, dokud nenajdete tempo, které se vám líbí.

/ * 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šení

Přidejte další skladby! Řiďte se formátem „songs.h“a použijte nápovědu: https://www.arduino.cc/en/Tutorial/ToneMelody. U každé nové skladby, kterou přidáte, nezapomeňte do příkazu switch přidat nový případ a zvýšit maximální počet, který lze vygenerovat pomocí funkce random (). Šťastné kódování!

Krok 4: Více projektů

Pro více projektů navštivte mé stránky:

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

Doporučuje: