Indholdsfortegnelse:

Arduino dørklokke: 4 trin
Arduino dørklokke: 4 trin

Video: Arduino dørklokke: 4 trin

Video: Arduino dørklokke: 4 trin
Video: 35 видео со страшными призраками: мегасборник 2023 года [V1] 2024, November
Anonim
Arduino dørklokke
Arduino dørklokke

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

Hardwareopsætning
Hardwareopsætning
Hardwareopsætning
Hardwareopsætning
Hardwareopsætning
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: