Indholdsfortegnelse:
Video: Arduino dørklokke: 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
I dag vil jeg vise dig, hvordan du laver en dørklokke ved hjælp af en Arduino. Denne dørklokke afspiller en tilfældig melodi fra et bibliotek med sange. Du kan tilpasse din dørklokke og tilføje endnu flere sange. Installer det uden for dit soveværelse, klasseværelse, kontor eller endda din hoveddør!
Tilbehør:
- Arduino Uno (de fleste andre typer vil gøre)
- Computer med Arduino IDE til programmering
- USB-A til USB-B kabel til programmering af Arduino
- Brødbræt
- 4x jumper ledninger
- Trykknap eller anden kontakt
- 10 kOhm modstand
- Passiv summer (dvs. piezoelektrisk højttaler)
-
Ved permanent installation:
- 9V DC strømforsyning eller 9V batteri til strøm til Arduino
- 2x lange ledninger til ledningsknap uden for døren
Trin 1: Hardwareopsætning
Først vil vi konfigurere hardwaren. Vi starter med den passive summer (dvs. højttaler). Vi vil forbinde den positive ende af den passive summer (betegnet med "+" tegn) til digital pin 8 på Arduino. Vi forbinder den anden ende af passize -summeren til jorden.
Dernæst installerer vi trykknappen til dørklokken. Vi vil bruge en 10 kOhm ekstern pulldown -modstand til kontakten, så der ikke er flydende spænding eller ustabil tilstand på indgangen til Arduino. Ved at bruge nedtrapningsmodstanden læser Arduino spændingen som 0V, når der ikke trykkes på knappen og 5V, når der trykkes på knappen. For mere information om pullup- eller pulldown-modstande kan du læse denne artikel:
Vi forbinder den ene side af trykknappen til 5V. Den anden side af trykknappen forbindes til jorden via en 10 kOhm nedtrapningsmodstand. Husk: trykknapper er forbundet vandret internt. De er kun forbundet lodret, når de trykkes på. Flere oplysninger findes i denne artikel:
Trin 2: Softwareopsætning
Hele koden er vedhæftet. Nedenfor er beskrivelserne af hver af funktionerne med snapshots af koden.
Opsætning:
I funktionen setup () vil vi konfigurere de digitale ben til vores knap og vores højttaler. Vi vil konfigurere pin 2 som input til vores knap, og vi vil konfigurere pin 8 som output til vores højttaler.
Vi vil også "frø" vores tilfældige talgenerator til tilfældigt at vælge en melodi, når nogen ringer på vores dørklokke. Såning af vores tilfældige talgenerator betyder at fodre den med et tilfældigt input. Vi vil udså vores tilfældige talgenerator med spændingsværdien på analog indgang 0. Da intet er forbundet til denne indgang, vil der være en "tilfældig", svingende spænding på denne pin, der giver vores tilfældige talgenerator mange forskellige værdier. Dette sikrer, at vi får en anden rækkefølge af valg af sange til vores dørklokke. For mere information om Arduino random () -funktionen, gå her:
#include "pitches.h"
#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * opsætningsfunktion */void setup () {// aktiver input/output pins pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // seed random () funktion, så vi får en anden rækkefølge randomSeed (analogRead (0)); }
loop:
I vores loop () -funktion vil vi løbende kontrollere, om der trykkes på knappen (digital pin 2 er høj). Hvis stiften er høj, venter vi 50 ms og kontrollerer igen for at sikre, at den stadig er høj. Dette sikrer, at der trykkes på knappen, og det var ikke vildfarende støj på den digitale indgangsstift, der forårsagede en falsk positiv.
Når vi har bekræftet, at der blev trykket på knappen, bruger vi vores tilfældige talgenerator til at vælge en af de 5 sange ved hjælp af en switch -sætning. Dataene for disse sange gemmes i "melodier.h", og tonehøjdeoplysningerne gemmes i "tonehøjder. H". Når vi har valgt en sang, videregiver vi disse oplysninger til funktionen play_song ().
/ * main while loop -funktion */
void loop () {// tjek for at se, om der trykkes på knappen, hvis (digitalRead (BUTTON_PIN) == HIGH) {// forsinkelse 50 ms for at sikre, at den stadig er trykket // forhindrer enhver forsinket fejllæsning forsinkelse (50); hvis (digitalRead (BUTTON_PIN) == HIGH) {// tilfældigt vælger en sang int song_choice = random (5); // vælg hvilken sang der skal afspilles switch (song_choice) {case 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); pause; case 1: play_song (marioLength, mario, marioDurations, marioTempo); pause; case 2: play_song (miiLength, mii, miiDurations, miiTempo); pause; case 3: play_song (hpLength, hp, hpDurations, hpTempo); pause; case 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); pause; standard: play_song (miiLength, mii, miiDurations, miiTempo); pause; }}}}
play_song:
play_song () tager 4 argumenter: et helt tal noter i sangen, et helt tal array af tonehøjderne i melodien, et helt tal array af varigheden og et helt tal tempo for den pågældende sang. Du skal angive hver af disse for hver sang, du ønsker at spille. For mere information om, hvordan du bruger Arduino -tonefunktionerne, kan du se denne vejledning: https://www.arduino.cc/en/Tutorial/ToneMelody. Jeg tilføjede noget funktionalitet oven på denne vejledning til prikkede noter. Hvis en værdi i note varighed array er negativ, betyder det, at det er en prikket note (længden er 1,5 gange større).
/ * spiller sangen */
void play_song (int num_notes, int melody , int noteDurations , int tempo) {// trin igennem og afspil alle noterne for (int i = 0; i 0) {varighed = tempo / noteDurations ; } // hvis det er et negativt tal, betyder prikket note // øger varigheden med det halve for prikkede noter ellers hvis (noteDurations <0) {varighed = tempo / abs (noteDurations ) * 1,5; } tone (SPEAKER_PIN, melodi , varighed); // for at skelne noterne, skal du indstille en minimumstid mellem dem. // notens varighed + 30% ser ud til at fungere godt: int pauseBetweenNotes = varighed * 1,30; forsinkelse (pauseBetweenNotes); // stop tonespillet: noTone (SPEAKER_PIN); }}
Eksempel på sange. H:
Nedenfor er et eksempel på en af sangene i "songs.h". Noterne er makroer defineret i "pitches.h". Tallene svarer til frekvenserne af noterne i hertz (Hz). Noternes varighed defineres som: 1 = hel note, 2 = halv note, 4 = kvartnote, 8 = ottende note, -4 = prikket kvartnote osv. Længden er det samlede antal noter i sangen. Tempoet er en opdeling for sangens hastighed (et højere tal betyder et langsommere tempo). Du bliver nødt til at lege med dette nummer, indtil du får et tempo, du kan lide.
/ * 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;
Trin 3: Tweaks
Tilføj flere sange! Følg formatet vist i "songs.h", og brug selvstudiet til hjælp: https://www.arduino.cc/en/Tutorial/ToneMelody. For hver ny sang, du tilføjer, skal du huske at tilføje en ny sag til switch -sætningen og øge det maksimale antal, der kan genereres af din tilfældige () -funktion. Glad kodning!
Trin 4: Flere projekter
For flere projekter, besøg mine sider:
- https://dargen.io/
- https://github.com/mjdargen
- https://www.instructables.com/member/mjdargen/
Anbefalede:
Sådan laver du en berøringsfri dørklokke, registrering af kropstemperatur, GY-906, 433MHz ved hjælp af Arduino: 3 trin
Sådan laver du en berøringsfri dørklokke, registrering af kropstemperatur, GY-906, 433MHz Brug af Arduino: I dag laver vi en berøringsfri dørklokke, den registrerer din kropstemperatur. I den nuværende situation er det meget vigtigt at vide, om nogen kropstemperatur er højere end normalt, når nogen kokkerer.Dette projekt viser rødt lys, hvis det opdager nogen
DIY berøringsfri dørklokke uden Arduino !: 7 trin
DIY berøringsfri dørklokke uden Arduino !: Dørklokkeomskiftere er en af de ting, der er mest berørt af fremmede. Og da covid 19 -pandemien er blevet et alvorligt problem, er opretholdelse af en god hygiejne blevet topprioritet i disse dage. Så i denne instruktive vil jeg vise dig en enkel måde
Arduino Coronavirus dørklokke: 6 trin
Arduino Coronavirus dørklokke: På grund af det globale coronavirus -udbrud vil jeg lave en dørklokke, som du ikke behøver at trykke på nogen signaler til folk indeni, om at du er her, og de skal åbne døren. Denne ting kan få dig til at få virussen ved at røre ved andre folks dørklokke
Gør din kablede dørklokke til en smart dørklokke med IFTTT: 8 trin
Gør din kablede dørklokke til en smart dørklokke med IFTTT: WiFi -dørklokken forvandler din eksisterende kablede dørklokke til en smart dørklokke. https://www.fireflyelectronix.com/product/wifidoor
Gør din kablede dørklokke til en smart dørklokke med hjemmeassistent: 6 trin
Gør din kablede dørklokke til en smart dørklokke med hjemmeassistent: Gør din eksisterende kablede dørklokke til en smart dørklokke. Modtag en meddelelse til din telefon, eller par med dit eksisterende hoveddørkamera for at modtage et foto eller en videoadvarsel, når som helst nogen ringer på din dørklokke. Lær mere på: fireflyelectronix.com/pro