Kazalo:

Arduino zvonec: 4 koraki
Arduino zvonec: 4 koraki

Video: Arduino zvonec: 4 koraki

Video: Arduino zvonec: 4 koraki
Video: #11 LM35 и промышленный датчик температуры 4–20 мА для герметизации ПЛК Arduino 2024, Julij
Anonim
Arduino Doorbell
Arduino Doorbell

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

Namestitev strojne opreme
Namestitev strojne opreme
Namestitev strojne opreme
Namestitev strojne opreme
Namestitev strojne opreme
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: