Innehållsförteckning:

Arduino Doorbell: 4 steg
Arduino Doorbell: 4 steg

Video: Arduino Doorbell: 4 steg

Video: Arduino Doorbell: 4 steg
Video: Amazing arduino project 2024, Juli
Anonim
Arduino dörrklocka
Arduino dörrklocka

Idag kommer jag att visa dig hur du gör en dörrklocka med en Arduino. Denna dörrklocka spelar en slumpmässig melodi från ett bibliotek med låtar. Du kan anpassa din dörrklocka och lägga till ännu fler låtar. Installera den utanför ditt sovrum, klassrum, kontor eller till och med din ytterdörr!

Tillbehör:

  • Arduino Uno (de flesta andra typer kommer att göra)
  • Dator med Arduino IDE för programmering
  • USB-A till USB-B-kabel för programmering av Arduino
  • Bakbord
  • 4x bygelkablar
  • Tryckknapp eller annan strömbrytare
  • 10 kOhm motstånd
  • Passiv summer (dvs. piezoelektriska högtalare)
  • För permanent installation:

    • 9V DC strömförsörjning eller 9V batteri för att driva Arduino
    • 2x långa ledningar för ledningsknapp utanför dörren

Steg 1: Maskinvaruinstallation

Hardware Setup
Hardware Setup
Hardware Setup
Hardware Setup
Hardware Setup
Hardware Setup

Först kommer vi att konfigurera hårdvaran. Vi börjar med den passiva summern (dvs. högtalaren). Vi vill ansluta den positiva änden av den passiva summern (betecknad med "+" -tecknet) till den digitala stift 8 på Arduino. Vi ansluter den andra änden av passize -summern till marken.

Därefter installerar vi tryckknappen för dörrklockan. Vi kommer att använda ett 10 kOhm externt pulldown -motstånd för omkopplaren, så det finns ingen flytspänning eller instabilt tillstånd på ingången till Arduino. Genom att använda nedrullningsmotståndet läser Arduino spänningen som 0V när knappen inte trycks in och 5V när knappen trycks in. För mer information om pullup- eller pulldown-motstånd kan du läsa den här artikeln:

Vi ansluter ena sidan av tryckknappen till 5V. Den andra sidan av tryckknappen kommer att anslutas till marken via ett 10 kOhm pulldown -motstånd. Kom ihåg: tryckknappar är anslutna horisontellt internt. De är endast anslutna vertikalt när de trycks in. Mer information finns i denna artikel:

Steg 2: Programinstallation

All kod är bifogad. Nedan finns beskrivningarna av var och en av funktionerna med ögonblicksbilder av koden.

uppstart:

I funktionen setup () vill vi konfigurera de digitala stiften för vår knapp och vår högtalare. Vi vill konfigurera stift 2 som en ingång för vår knapp, och vi vill konfigurera stift 8 som en utgång för vår högtalare.

Vi vill också "seeda" vår slumptalsgenerator för slumpmässigt val av en låt när någon ringer på vår dörrklocka. Att så vår generator för slumptal betyder att mata den med en slumpmässig ingång. Vi kommer att sätta vår slumptalsgenerator med spänningsvärdet på analog ingång 0. Eftersom ingenting är anslutet till denna ingång, kommer det att finnas en "slumpmässig", fluktuerande spänning på denna pin som ger vår slumptalsgenerator många olika värden. Detta säkerställer att vi kommer att ha en annan ordning på låtval för vår dörrklocka. Mer information om Arduino random () -funktionen finns här:

#inkludera "pitches.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * set up function */void setup () {// enable input/output pins pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // seed random () funktion så att vi får en annan ordning randomSeed (analogRead (0)); }

slinga:

I vår loop () -funktion kommer vi kontinuerligt att kontrollera om knappen trycks in (digital pin 2 är hög). Om stiftet är högt väntar vi 50 ms och kontrollerar igen för att se till att det fortfarande är högt. Detta säkerställer att knappen trycks in och att det inte var viloljud från den digitala ingångsstiften som orsakade ett falskt positivt.

När vi har bekräftat att knappen tryckts in använder vi vår slumptalsgenerator för att välja en av de fem låtarna med hjälp av en switch -sats. Data för dessa låtar lagras i "songs.h" och tonhöjdsinformationen lagras i "pitches.h". När vi väl valt en låt skickar vi denna information till funktionen play_song ().

/ * main while loop -funktion */

void loop () {// kontrollera om knappen är nedtryckt om (digitalRead (BUTTON_PIN) == HIGH) {// fördröjning 50 ms för att se till att den fortfarande är intryckt // undviker fördröjning vid felläsning (50); if (digitalRead (BUTTON_PIN) == HIGH) {// slumpmässigt välja en låt int song_choice = random (5); // välj vilken låt som ska spelas (song_choice) {case 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); ha sönder; fall 1: play_song (marioLength, mario, marioDurations, marioTempo); ha sönder; fall 2: play_song (miiLength, mii, miiDurations, miiTempo); ha sönder; fall 3: play_song (hpLength, hp, hpDurations, hpTempo); ha sönder; fall 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); ha sönder; standard: play_song (miiLength, mii, miiDurations, miiTempo); ha sönder; }}}}

spela sång:

play_song () tar 4 argument: ett heltal noter i låten, en heltalmatris av tonhöjden i melodin, ett heltal av varaktigheten och ett heltalstempo för just den låten. Du måste ange var och en av dessa för varje låt du vill spela. För mer information om hur du använder Arduino -tonfunktionerna kan du titta på den här självstudien: https://www.arduino.cc/en/Tutorial/ToneMelody. Jag lade till lite funktionalitet ovanför den här självstudien för prickade anteckningar. Om ett värde i anteckningsvaraktighetsmatrisen är negativt betyder det att det är en prickad anteckning (längden är 1,5 gånger större).

/ * spelar låten */

void play_song (int num_notes, int melody , int noteDurations , int tempo) {// gå igenom och spela alla noterna för (int i = 0; i 0) {duration = tempo / noteDurations ; } // om det är ett negativt tal, betyder prickig anteckning // ökar varaktigheten med hälften för prickade toner annars om (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1,5; } ton (SPEAKER_PIN, melodi , varaktighet); // för att skilja noterna, ställ in en minsta tid mellan dem. // notens längd + 30% verkar fungera bra: int pauseBetweenNotes = varaktighet * 1,30; delay (pauseBetweenNotes); // stoppa tonuppspelningen: noTone (SPEAKER_PIN); }}

Exempel på låtar. H:

Nedan är ett exempel på en av låtarna i "songs.h". Anteckningarna är makron definierade i "pitches.h". Siffrorna motsvarar noternas frekvenser i hertz (Hz). Noternas längd definieras som: 1 = hel ton, 2 = halv ton, 4 = kvartsnot, 8 = åttondel, -4 = prickad kvartnot, etc. Längden är det totala antalet noter i låten. Tempot är en avdelare för låtens hastighet (ett högre nummer betyder ett långsammare tempo). Du måste spela med det här numret tills du får ett tempo som du gillar.

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

Steg 3: Tweaks

Lägg till fler sånger! Följ formatet som visas i "songs.h" och använd självstudien för hjälp: https://www.arduino.cc/en/Tutorial/ToneMelody. För varje ny låt du lägger till, kom ihåg att lägga till ett nytt fall i switch -satsen och öka det maximala antalet som kan genereras av din slumpmässiga () -funktion. Glad kodning!

Steg 4: Fler projekt

För fler projekt, besök mina sidor:

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

Rekommenderad: