Kazalo:
- 1. korak: Namestitev strojne opreme
- 2. korak: Namestitev programske opreme
- 3. korak: Popravite
- 4. korak: Več projektov
Video: Arduino zvonec: 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:02
Danes vam bom pokazal, kako narediti zvonec na vratih z Arduinom. Ta zvonec na vratih predvaja naključno melodijo iz knjižnice pesmi. Zvonec na vratih lahko prilagodite in dodate še več pesmi. Namestite ga zunaj spalnice, učilnice, pisarne ali celo vhodnih vrat!
Zaloge:
- Arduino Uno (večina drugih vrst bo naredila)
- Računalnik z Arduino IDE za programiranje
- Kabel USB-A do USB-B za programiranje Arduina
- Ogledna plošča
- 4x mostične žice
- Gumb ali drugo stikalo
- 10 kOhm upor
- Pasivni zvočni signal (t.j. piezoelektrični zvočnik)
-
Za trajno namestitev:
- 9V DC napajalnik ali 9V baterija za napajanje Arduina
- 2x dolge žice za ožičenje gumba zunaj vrat
1. korak: Namestitev strojne opreme
Najprej bomo nastavili strojno opremo. Začeli bomo s pasivnim zvočnikom (tj. Zvočnikom). Želimo povezati pozitivni konec pasivnega zvočnika (označen z znakom "+") na digitalni pin 8 na Arduinu. Drugi konec pasivnega zvočnika bomo povezali z maso.
Nato bomo namestili gumb za zvonec na vratih. Za stikalo bomo uporabili zunanji izvlečni upor 10 kOhm, zato na vhodu Arduina ni plavajoče napetosti ali nestabilnega stanja. Arduino z uporabo spustnega upora odčita napetost kot 0V, ko gumba ne pritisnete, in 5V, ko pritisnete gumb. Za več informacij o vlečnih ali spustnih uporih si lahko preberete ta članek:
Priključili bomo eno stran gumba na 5V. Druga stran gumba bo povezana z ozemljitvijo prek 10 kOhm uporovnega upora. Ne pozabite: gumbi so vodoravno povezani znotraj. Navpično so povezani le s pritiskom. Več informacij je v tem članku:
2. korak: Namestitev programske opreme
Vsa koda je priložena. Spodaj so opisi vsake od funkcij s posnetki kode.
nastaviti:
V funkciji setup () želimo konfigurirati digitalne zatiče za naš gumb in zvočnik. Zatič 2 želimo konfigurirati kot vhod za naš gumb, pin 8 pa kot izhod za naš zvočnik.
Prav tako želimo "posejati" naš generator naključnih števil za naključno izbiro melodije, ko nekdo pozvoni na naša vrata. Sejanje našega generatorja naključnih števil pomeni dovajanje naključnega vnosa. Naš generator naključnih števil bomo posejali z vrednostjo napetosti na analognem vhodu 0. Ker na ta vhod ni povezano nič, bo na tem zatiču "naključna" nihajoča napetost, ki bo našemu generatorju naključnih števil dala veliko različnih vrednosti. To zagotavlja, da bomo za zvonec na vratih imeli drugačen vrstni red izbire pesmi. Za več informacij o funkciji Arduino random () pojdite tukaj:
#include "pitches.h"
#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * set up function */void setup () {// omogoči vhodne/izhodne zatiče pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // semenska funkcija random (), tako da dobimo drugačen vrstni red randomSeed (analogRead (0)); }
zanka:
V naši funkciji loop () bomo nenehno preverjali, ali je gumb pritisnjen (digitalni pin 2 je visok). Če je pin visok, počakamo 50 ms in ponovno preverimo, ali je še vedno visok. S tem zagotovite, da je gumb pritisnjen in da na digitalnem vhodnem zatiču ni šumov, ki bi povzročili lažno pozitiven rezultat.
Ko potrdimo, da je bil gumb pritisnjen, z generatorjem naključnih števil izberemo eno od petih skladb z uporabo stavka switch. Podatki za te pesmi so shranjeni v "songs.h", podatki o višini tona pa v "pitches.h". Ko izberemo skladbo, te podatke posredujemo v funkcijo play_song ().
/ * glavna funkcija zanke */
void loop () {// preverite, če je pritisnjen gumb if (digitalRead (BUTTON_PIN) == HIGH) {// zakasnite 50 ms, da se prepričate, da je še vedno pritisnjen // se izognete morebitnim zamudam pri napačnem branju (50); if (digitalRead (BUTTON_PIN) == HIGH) {// naključno izberemo skladbo int song_choice = random (5); // izberite stikalo za predvajanje (song_choice) {primer 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); zlom; primer 1: play_song (marioLength, mario, marioDurations, marioTempo); zlom; primer 2: play_song (miiLength, mii, miiDurations, miiTempo); zlom; primer 3: play_song (hpLength, hp, hpDurations, hpTempo); zlom; primer 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); zlom; privzeto: play_song (miiLength, mii, miiDurations, miiTempo); zlom; }}}}
play_song:
play_song () ima 4 argumente: celo število not v pesmi, celoštevilski niz višin v melodiji, celoštevilski niz trajanja in celoštevilski tempo za to skladbo. Za vsako pesem, ki jo želite predvajati, morate določiti vsako od teh. Za več informacij o uporabi tonskih funkcij Arduino si oglejte to vadnico: https://www.arduino.cc/en/Tutorial/ToneMelody. Na vrhu te vadnice sem dodal nekaj funkcij za pikčaste zapiske. Če je vrednost v nizu trajanja opombe negativna, to pomeni, da gre za pikčasto noto (dolžina je 1,5 -krat večja).
/ * predvaja pesem */
void play_song (int num_notes, int melody , int noteDurations , int tempo) {// stopite in predvajajte vse note za (int i = 0; i 0) {duration = tempo / noteDurations ; } // če je to negativno število, pomeni pikčasto noto // podaljša trajanje za pikčaste note drugače if (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1,5; } ton (SPEAKER_PIN, melodija , trajanje); // za razlikovanje zapiskov med njimi nastavite najkrajši čas. // zdi se, da trajanje zapiska + 30% deluje dobro: int pauseBetweenNotes = trajanje * 1,30; zakasnitev (pauseBetweenNotes); // ustavitev predvajanja tona: noTone (SPEAKER_PIN); }}
Vzorec pesmi.h:
Spodaj je vzorec ene od pesmi v "songs.h". Opombe so makri, opredeljeni v "pitchs.h". Številke ustrezajo frekvencam zapiskov v hercih (Hz). Trajanje not je opredeljeno kot: 1 = celotna nota, 2 = polovična nota, 4 = četrtinska nota, 8 = osma nota, -4 = pikčasta četrtinska nota itd. Dolžina je skupno število not v pesmi. Tempo je delilec hitrosti pesmi (višja številka pomeni počasnejši tempo). S to številko se boste morali poigrati, dokler ne dosežete želenega tempa.
/* 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;
3. korak: Popravite
Dodajte več pesmi! Sledite obliki, prikazani v "songs.h", in za pomoč uporabite vadnico: https://www.arduino.cc/en/Tutorial/ToneMelody. Za vsako novo skladbo, ki jo dodate, ne pozabite dodati nove črke v stavek switch in povečati največje število, ki ga lahko ustvari vaša funkcija random (). Veselo kodiranje!
4. korak: Več projektov
Za več projektov obiščite moje strani:
- https://dargen.io/
- https://github.com/mjdargen
- https://www.instructables.com/member/mjdargen/
Priporočena:
Kako narediti zvonec za vrata brez dotika, zaznavanje telesne temperature, GY-906, 433MHz z uporabo Arduina: 3 koraki
Kako narediti zvonec na dotik, zaznavanje telesne temperature, GY-906, 433MHz z uporabo Arduina: Danes bomo izdelali zvonec na dotik, ki bo zaznaval vašo telesno temperaturo. V sedanjih razmerah je zelo pomembno vedeti, ali je telesna temperatura nekoga višja od običajne, ko nekdo koka. Ta projekt bo prikazal rdečo luč, če zazna
Zvonec na vratih po meri sproži zvonec: 6 korakov
Zvonec na vratih po meri sproži zvonec: Pozdravljeni! Moje ime je Justin, jaz sem mlajši v srednji šoli, in ta Instructable vam bo pokazal, kako narediti zvonec na vratih, ki se sproži, ko nekdo stopi na vašo preprogo, in je lahko kakršna koli melodija ali pesem, ki jo želite! Ker preproga na vratih sproži vrata
Zvonec na vratih s 3D tiskanim pedalom: 3 koraki
Zvonec na vratih s 3D tiskanim pedalom: sam sem v zadnjih nekaj mesecih od Amazona naročil veliko naročil. Dostavniki, ki izpolnjujejo vsa ta naročila, so v stalni nevarnosti, saj v enem tednu pozvonijo na stotine zvoncev in potrkajo na nešteta vrata. Za pomoč pri tem imam
Pretvorite žični zvonec v pameten zvonec s IFTTT: 8 korakov
Pretvorite vaš žični zvonec v pameten zvonec z IFTTT: Zvonec vrat WiFi spremeni vaš obstoječi žični zvonec v pameten zvonec. https://www.fireflyelectronix.com/product/wifidoor
Arduino zvonec na vratih z merilnikom VU: 4 koraki (s slikami)
Arduino zvonec na vratih z merilnikom VU: Osnovna ideja je - ko pritisnete gumb za zvonec na vratih, LED začnejo ritmično sveteti skupaj z zvokom, po določenem času se dva dogodka samodejno ustavita. LED diode so lahko zunaj vrat za zabavo obiskovalca ali znotraj. V tem sem