Përmbajtje:

Arduino Doorbell: 4 hapa
Arduino Doorbell: 4 hapa

Video: Arduino Doorbell: 4 hapa

Video: Arduino Doorbell: 4 hapa
Video: Amazing arduino project 2024, Korrik
Anonim
Arduino Doorbell
Arduino Doorbell

Sot, unë do t'ju tregoj se si të bëni një zile derë duke përdorur një Arduino. Kjo zile e derës luan një melodi të rastësishme nga një bibliotekë këngësh. Mund të personalizoni zilen e derës tuaj dhe të shtoni edhe më shumë këngë. Instalojeni atë jashtë dhomës tuaj të gjumit, klasës, zyrës apo edhe derës tuaj kryesore!

Furnizimet:

  • Arduino Uno (shumica e llojeve të tjera do të bëjnë)
  • Kompjuter me Arduino IDE për programim
  • Kabllo USB-A në USB-B për programimin e Arduino
  • Breadboard
  • 4 herë tela kërcyes
  • Butoni i butonit ose çelësi tjetër
  • Rezistencë 10 kOhm
  • Zilja pasive (d.m.th altoparlanti piezoelektrik)
  • Për instalim të përhershëm:

    • Furnizimi me energji 9V DC ose bateri 9V për të fuqizuar Arduino
    • 2x tela të gjatë për butonin e telave jashtë derës

Hapi 1: Konfigurimi i harduerit

Konfigurimi i harduerit
Konfigurimi i harduerit
Konfigurimi i harduerit
Konfigurimi i harduerit
Konfigurimi i harduerit
Konfigurimi i harduerit

Së pari, ne do të vendosim pajisjen. Ne do të fillojmë me zilen pasive (d.m.th. folësin). Ne duam të lidhim skajin pozitiv të zhurmuesit pasiv (të shënuar me shenjën "+") me pinin dixhital 8 në Arduino. Ne do të lidhim skajin tjetër të ziles së kalimit me tokën.

Tjetra, ne do të instalojmë butonin për zilen e derës. Ne do të përdorim një rezistencë të jashtme tërheqëse 10 kOhm për ndërprerësin, kështu që nuk ka tension lundrues ose gjendje të paqëndrueshme në hyrjen në Arduino. Duke përdorur rezistencën e tërheqjes, Arduino lexon tensionin si 0V kur butoni nuk shtypet dhe 5V kur shtypet butoni. Për më shumë informacion mbi rezistencat tërheqëse ose tërheqëse, mund të lexoni këtë artikull:

Ne do të lidhim njërën anë të butonit me 5V. Ana tjetër e butonit shtytës do të lidhet me tokën përmes një rezistence tërheqëse 10 kOhm. Mos harroni: butonat janë të lidhur horizontalisht brenda. Ato lidhen vetëm vertikalisht kur shtypen. Më shumë informacion jepet në këtë artikull:

Hapi 2: Konfigurimi i softuerit

I gjithë kodi është i bashkangjitur. Më poshtë janë përshkrimet e secilit prej funksioneve me fotografi të kodit.

konfigurimi:

Në funksionin setup (), ne duam të konfigurojmë kunjat dixhitale për butonin tonë dhe altoparlantin tonë. Ne duam të konfigurojmë pin 2 si një hyrje për butonin tonë dhe duam të konfigurojmë pin 8 si një dalje për altoparlantin tonë.

Ne gjithashtu duam të "farëzojmë" gjeneratorin tonë të numrave të rastit për zgjedhjen rastësore të një melodie kur dikush na bie ziles së derës. Mbjellja e gjeneratorit tonë të numrave të rastit do të thotë ta ushqeni atë me një hyrje të rastësishme. Ne do të mbjellim gjeneratorin tonë të numrave të rastit me vlerën e tensionit në hyrjen analoge 0. Meqenëse asgjë nuk është e lidhur me këtë hyrje, do të ketë një tension "të rastësishëm", me luhatje në këtë kunj duke siguruar gjeneratorin tonë të numrave të rastit me shumë vlera të ndryshme. Kjo siguron që ne do të kemi një renditje të ndryshme të përzgjedhjeve të këngëve për zilen e derës sonë. Për më shumë informacion mbi funksionin Arduino të rastit (), shkoni këtu:

#përfshi "pitches.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * funksionin e konfigurimit */void setup () {// aktivizoni kunjat e hyrjes/daljes pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // farë random () funksion në mënyrë që të marrim një renditje të ndryshme randomSeed (analogRead (0)); }

lak:

Në funksionin tonë loop (), ne do të kontrollojmë vazhdimisht për të parë nëse butoni është shtypur (kunja dixhitale 2 është e lartë). Nëse kunja është e lartë, ne presim 50 ms dhe kontrollojmë përsëri për t'u siguruar që është ende e lartë. Kjo siguron që butoni të shtypet dhe të mos ketë zhurmë të humbur në kunjin dixhital të hyrjes duke shkaktuar një pozitiv të rremë.

Pasi të kemi konfirmuar që butoni është shtypur, ne përdorim gjeneratorin tonë të numrave të rastit për të zgjedhur një nga 5 këngët duke përdorur një deklaratë switch. Të dhënat për këto këngë ruhen në "songs.h" dhe informacioni i fushës ruhet në "pitches.h". Pasi të zgjedhim një këngë, e kalojmë këtë informacion në funksionin play_song ().

/ * kryesore ndërsa funksioni loop */

void loop () {// kontrolloni për të parë nëse butoni është shtypur nëse (digitalRead (BUTTON_PIN) == HIGH) {// vononi 50 ms për t'u siguruar që është ende i shtypur // shmang çdo vonesë të leximeve të gabuara (50); nëse (digitalRead (BUTTON_PIN) == HIGH) {// zgjidhni rastësisht një këngë int song_choice = rastësore (5); // zgjidhni cilën këngë për të luajtur kaloni (song_choice) {rasti 0: play_song (prerja e flokëve Gjatësia, prerja e flokëve, kohëzgjatja, prerja e flokëveTempo); pushim; rasti 1: kënga e luajtjes (marioLength, mario, marioDurations, marioTempo); pushim; rasti 2: kënga e luajtjes (miiLength, mii, miiDurations, miiTempo); pushim; rasti 3: kënga e luajtjes (hpLength, hp, hpDurations, hpTempo); pushim; rasti 4: kënga e luajtjes (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); pushim; parazgjedhje: kënga e luajtjes (miiLength, mii, miiDurations, miiTempo); pushim; }}}}

kenga e luajtjes:

play_song () merr 4 argumente: një numër të plotë shënimesh në këngë, një grup të plotë të pikave në melodi, një grup të plotë të kohëzgjatjes dhe një ritëm të plotë për atë këngë të veçantë. Ju duhet të specifikoni secilën nga këto për çdo këngë që dëshironi të luani. Për më shumë informacion se si të përdorni funksionet e tonit Arduino, mund të shikoni këtë tutorial: https://www.arduino.cc/en/Tutorial/ToneMelody. Shtova disa funksionalitete në krye të këtij tutoriali për shënimet me pika. Nëse një vlerë në grupin e kohëzgjatjes së shënimit është negative, kjo do të thotë se është një shënim me pika (gjatësia është 1.5 herë më e madhe).

/ * luan këngën */

pavlefshme_këngë (int num_nota, int melodi , int noteDurations , int tempo) {// përshkoni dhe luani të gjitha shënimet për (int i = 0; i 0) {duration = tempo / noteDurations ; } // nëse është një numër negativ, do të thotë shënim me pika // rrit kohëzgjatjen përgjysmë për shënimet me pika përndryshe nëse (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5; } toni (SPEAKER_PIN, melodi , kohëzgjatja); // për të dalluar shënimet, caktoni një kohë minimale midis tyre. // kohëzgjatja e shënimit + 30% duket se funksionon mirë: int pauseBetweenNotes = kohëzgjatja * 1.30; vonesë (pauzëNë mes Shënimeve); // ndaloni luajtjen e tonit: noTone (SPEAKER_PIN); }}

Shembull i këngëve.h:

Më poshtë është një mostër e një prej këngëve në "songs.h". Shënimet janë makro të përcaktuara në "pitches.h". Numrat korrespondojnë me frekuencat e notave në hertz (Hz). Kohëzgjatja e notave përcaktohet si: 1 = notë e plotë, 2 = shënim gjysmë, 4 = shënim çerek, 8 = notë e tetë, -4 = shënim tremujor me pika, etj. Gjatësia është numri i përgjithshëm i notave në këngë. Tempulli është një ndarës për shpejtësinë e këngës (një numër më i lartë do të thotë një ritëm më i ngadalshëm). Ju do të duhet të luani me këtë numër derisa të merrni një ritëm që ju pëlqen.

/ * 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;

Hapi 3: Korrigjime

Shtoni më shumë këngë! Ndiqni formatin e treguar në "songs.h" dhe përdorni tutorialin për ndihmë: https://www.arduino.cc/en/Tutorial/ToneMelody. Për çdo këngë të re që shtoni, mos harroni të shtoni një rast të ri në deklaratën switch dhe të rrisni numrin maksimal që mund të gjenerohet nga funksioni juaj i rastësishëm (). Kodim i lumtur!

Hapi 4: Më shumë Projekte

Për më shumë projekte, vizitoni faqet e mia:

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

Recommended: