Tartalomjegyzék:

Arduino ajtócsengő: 4 lépés
Arduino ajtócsengő: 4 lépés

Videó: Arduino ajtócsengő: 4 lépés

Videó: Arduino ajtócsengő: 4 lépés
Videó: Arduino locsoló rendszer 2024, Július
Anonim
Arduino ajtócsengő
Arduino ajtócsengő

Ma megmutatom, hogyan lehet csengőt készíteni egy Arduino segítségével. Ez az ajtócsengő véletlenszerű dallamot játszik a dalok könyvtárából. Testreszabhatja ajtócsengőjét, és még több dalt adhat hozzá. Telepítse a hálószobáján, az osztálytermén, az irodán vagy akár a bejárati ajtón kívül!

Kellékek:

  • Arduino Uno (a legtöbb más típus megteszi)
  • Számítógép Arduino IDE programozással
  • USB-A-USB-B kábel az Arduino programozásához
  • Kenyeretábla
  • 4x jumper vezeték
  • Nyomógomb vagy más kapcsoló
  • 10 kOhm ellenállás
  • Passzív hangjelző (azaz piezoelektromos hangszóró)
  • Állandó telepítéshez:

    • 9V DC tápegység vagy 9V akkumulátor az Arduino táplálásához
    • 2x hosszú vezeték a külső ajtó bekötéséhez

1. lépés: Hardver beállítása

Hardver beállítása
Hardver beállítása
Hardver beállítása
Hardver beállítása
Hardver beállítása
Hardver beállítása

Először beállítjuk a hardvert. Kezdjük a passzív hangjelzővel (azaz hangszóróval). A passzív zümmögő pozitív végét ("+" jelzéssel) szeretnénk csatlakoztatni az Arduino 8 -as digitális érintkezőjéhez. A passize csengő másik végét a földhöz csatlakoztatjuk.

Ezután telepítjük az ajtócsengő nyomógombját. A kapcsolóhoz 10 kOhm -os külső lehúzható ellenállást fogunk használni, így nincs lebegő feszültség vagy instabil állapot az Arduino bemenetén. A lehúzható ellenállás használatával az Arduino a feszültséget 0 V -ra olvassa, amikor a gombot nem nyomja meg, és 5 V -ot, amikor a gombot megnyomják. A felhúzó vagy lehúzható ellenállásokkal kapcsolatos további információkért olvassa el ezt a cikket:

A nyomógomb egyik oldalát 5V -ra kapcsoljuk. A nyomógomb másik oldala egy 10 kOhm -os lehúzható ellenálláson keresztül csatlakozik a földhöz. Ne feledje: a nyomógombok vízszintesen vannak csatlakoztatva. Csak megnyomáskor függőlegesen csatlakoznak. További információ ebben a cikkben található:

2. lépés: Szoftver telepítése

Az összes kód csatolva van. Az alábbiakban bemutatjuk az egyes funkciók leírását a kód pillanatképeivel.

beállít:

A setup () függvényben szeretnénk konfigurálni a gombjaink és hangszóróink digitális csapjait. A 2 -es érintkezőt szeretnénk a gombunk bemeneteként konfigurálni, a 8 -as érintkezőt pedig a hangszóró kimeneteként.

Azt is szeretnénk "magozni" a véletlenszám -generátorunkból, hogy véletlenszerűen kiválaszthassunk egy dallamot, ha valaki csenget. A véletlenszám -generátorunk bevetése azt jelenti, hogy véletlenszerű bemenetet adunk hozzá. A véletlenszám -generátort a 0. analóg bemenet feszültségértékével vetjük be. Mivel semmi nincs csatlakoztatva ehhez a bemenethez, "véletlenszerű", ingadozó feszültség lesz ezen a csapon, amely sokféle értéket biztosít a véletlenszám -generátorunknak. Ez biztosítja, hogy az ajtócsengőnknél más sorrendben fogjuk kiválasztani a dalokat. Az Arduino random () funkcióval kapcsolatos további információkért látogasson el ide:

#include "pitchches.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * beállítási funkció */void setup () {// be- és kimeneti csapok engedélyezése pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // seed random () függvény, hogy más sorrendet kapjunk randomSeed (analogRead (0)); }

hurok:

A loop () függvényünkben folyamatosan ellenőrizzük, hogy nincs -e megnyomva a gomb (a 2. digitális tű magas). Ha a csap magas, várjon 50 ms -ot, és ellenőrizze újra, hogy továbbra is magas -e. Ez biztosítja, hogy a gombot megnyomják, és nem volt kóbor zaj a digitális bemeneti érintkezőn, ami hamis pozitív eredményt okozott.

Miután megerősítettük, hogy megnyomtuk a gombot, véletlenszám -generátorunk segítségével választjuk ki az 5 dal egyikét egy kapcsoló utasítás segítségével. Ezeknek a daloknak az adatait a "songs.h", a hangmagasság -információkat pedig a "pitchches.h" tárolja. Miután kiválasztottunk egy dalt, ezt az információt továbbítjuk a play_song () függvénybe.

/ * fő miközben hurok funkció */

void loop () {// ellenőrizze, hogy nincs -e megnyomva a gomb, ha (digitalRead (BUTTON_PIN) == HIGH) {// 50 ms késleltetés, hogy megbizonyosodjon arról, hogy még mindig le van nyomva // elkerüli a kóbor félreolvasási késleltetést (50); if (digitalRead (BUTTON_PIN) == HIGH) {// véletlenszerűen válasszon ki egy dalt int song_choice = random (5); // válassza ki a lejátszani kívánt dalt kapcsoló (dal_választása) {case 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); szünet; 1. eset: play_song (marioLength, mario, marioDurations, marioTempo); szünet; 2. eset: play_song (miiLength, mii, miiDurations, miiTempo); szünet; 3. eset: play_song (hpLength, hp, hpDurations, hpTempo); szünet; 4. eset: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); szünet; alapértelmezett: play_song (miiLength, mii, miiDurations, miiTempo); szünet; }}}}

play_song:

A play_song () 4 érvet tartalmaz: egy egész számú hangot a dalban, egy egész számot a dallam hangjaiból, egy egész tömböt az időtartamból és egy egész tempót az adott dalhoz. Ezeket meg kell adnia minden lejátszani kívánt dalhoz. Az Arduino hangfunkciók használatával kapcsolatos további információkért tekintse meg ezt az oktatóanyagot: https://www.arduino.cc/en/Tutorial/ToneMelody. Néhány funkciót hozzáadtam az oktatóanyag tetejéhez a pontozott jegyzetekhez. Ha a jegyzet időtartam tömbjének értéke negatív, az azt jelenti, hogy pontozott hang (a hossza 1,5 -szer nagyobb).

/ * lejátssza a dalt */

void play_song (int num_notes, int melody , int noteDurations , int tempo) {// lépjen végig és játsszon el minden hangot (int i = 0; i 0) {duration = tempo / noteDurations ; } // ha negatív szám, akkor pontozott jegyzetet jelent // felére növeli az időtartamot a pontozott jegyzeteknél, ha if (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5; } hangszín (SPEAKER_PIN, dallam , időtartam); // a jegyzetek megkülönböztetéséhez állítson be minimális időt közöttük. // a jegyzet időtartama + 30% jól működik: int pauseBetweenNotes = időtartam * 1,30; delay (pauseBetweenNotes); // a hang lejátszásának leállítása: noTone (SPEAKER_PIN); }}

Példa dalokra.h:

Az alábbiakban egy minta látható a "songs.h" egyik dalából. A jegyzetek a "pitch.h" makrók. A számok a hangok frekvenciájának felelnek meg hertzben (Hz). A hangok időtartamát a következőképpen határozzák meg: 1 = egész hang, 2 = félhang, 4 = negyedhang, 8 = nyolcadik hang, -4 = pontozott negyedhang stb. A hossza a dal összes hangjának száma. A tempó elválasztja a dal sebességét (a magasabb szám lassabb tempót jelent). Addig kell játszania ezzel a számmal, amíg el nem éri a kívánt tempót.

/* 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, -2, -4, 8, 4, 2, 4, 1}; int hpHossz = 14; int hpTempo = 1050;

3. lépés: csípés

Adjon hozzá további dalokat! Kövesse a "songs.h" formátumot, és használja az oktatóanyagot: https://www.arduino.cc/en/Tutorial/ToneMelody. Minden új dalhoz, amelyet hozzáad, ne felejtse el új kisbetűt hozzáadni a switch utasításhoz, és növelje a random () függvény által generálható maximális számot. Boldog kódolást!

4. lépés: További projektek

További projektekért látogasson el oldalaimra:

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

Ajánlott: