Sadržaj:

Arduino zvono na vratima: 4 koraka
Arduino zvono na vratima: 4 koraka

Video: Arduino zvono na vratima: 4 koraka

Video: Arduino zvono na vratima: 4 koraka
Video: BEŽIČNO ZVONO ZA VRATA SUPERKLIK 2024, Juli
Anonim
Arduino zvono na vratima
Arduino zvono na vratima

Danas ću vam pokazati kako napraviti zvono na vratima pomoću Arduina. Ovo zvono na vratima svira nasumičnu melodiju iz biblioteke pjesama. Možete prilagoditi zvono na vratima i dodati još više pjesama. Instalirajte ga izvan svoje spavaće sobe, učionice, ureda ili čak ulaznih vrata!

Potrošni materijal:

  • Arduino Uno (većina drugih tipova će to učiniti)
  • Računalo s Arduino IDE za programiranje
  • USB-A na USB-B kabel za programiranje Arduina
  • Breadboard
  • 4x kratkospojne žice
  • Taster ili drugi prekidač
  • 10 kOhm otpornik
  • Pasivni zujalica (tj. Piezoelektrični zvučnik)
  • Za trajnu ugradnju:

    • 9V DC napajanje ili 9V baterija za napajanje Arduina
    • 2x duge žice za ožičenje dugmeta izvan vrata

Korak 1: Postavljanje hardvera

Postavljanje hardvera
Postavljanje hardvera
Postavljanje hardvera
Postavljanje hardvera
Postavljanje hardvera
Postavljanje hardvera

Prvo ćemo postaviti hardver. Počet ćemo sa pasivnim zujalicom (tj. Zvučnikom). Želimo spojiti pozitivni kraj pasivnog zujalice (označen znakom "+") na digitalni pin 8 na Arduinu. Spojit ćemo drugi kraj passize zujalice na uzemljenje.

Zatim ćemo instalirati dugme za zvono na vratima. Za prekidač ćemo koristiti vanjski otporni otpornik od 10 kOhm, tako da na ulazu u Arduino nema plutajućeg napona ili nestabilnog stanja. Koristeći padajući otpornik, Arduino očitava napon kao 0V kada dugme nije pritisnuto i 5V kada je dugme pritisnuto. Za više informacija o pullup ili pulldown otpornicima možete pročitati ovaj članak:

Spojit ćemo jednu stranu tipke na 5V. Druga strana tipke bit će spojena na masu preko otpornog otpornika od 10 kOhm. Zapamtite: tipke su vodoravno povezane iznutra. Spajaju se okomito samo pritiskom. Više informacija nalazi se u ovom članku:

Korak 2: Postavljanje softvera

Sav kôd je u prilogu. Ispod se nalaze opisi svake od funkcija sa snimkama koda.

postaviti:

U funkciji setup () želimo konfigurirati digitalne pinove za naše dugme i zvučnik. Želimo konfigurirati pin 2 kao ulaz za naše dugme i želimo konfigurirati pin 8 kao izlaz za naš zvučnik.

Također želimo "zasijati" naš generator slučajnih brojeva za nasumični odabir melodije kada nam neko pozvoni na vrata. Sijanje našeg generatora slučajnih brojeva znači njegovo nasumično unošenje. Naš generator slučajnih brojeva posijat ćemo s vrijednošću napona na analognom ulazu 0. Budući da ništa nije povezano s ovim ulazom, na ovom pinu će postojati "slučajni", fluktuirajući napon koji našem generatoru slučajnih brojeva daje mnogo različitih vrijednosti. Ovo osigurava da ćemo za zvono na vratima imati drugačiji redoslijed odabira pjesama. Za više informacija o Arduino random () funkciji, idite ovdje:

#include "pitches.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * funkcija postavljanja */void setup () {// omogući ulazne/izlazne pinove pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // nasumična funkcija random () tako da dobijemo drugačiji redoslijed randomSeed (analogRead (0)); }

petlja:

U našoj funkciji loop () stalno ćemo provjeravati da li je dugme pritisnuto (digitalni pin 2 je visok). Ako je pin visok, čekamo 50 ms i ponovo provjeravamo da li je još uvijek visok. Ovo osigurava da je dugme pritisnuto i da nije došlo do zalutalih šumova na pinu digitalnog ulaza koji su uzrokovali lažno pozitivno.

Nakon što smo potvrdili da je dugme pritisnuto, pomoću generatora slučajnih brojeva odabiremo jednu od 5 pjesama koristeći naredbu switch. Podaci za ove pjesme pohranjeni su u "songs.h", a podaci o visini tona pohranjeni su u "pitches.h". Nakon što odaberemo pjesmu, prosljeđujemo te informacije u funkciju play_song ().

/ * glavna funkcija petlje */

void loop () {// provjerite da li je pritisnuto dugme if (digitalRead (BUTTON_PIN) == HIGH) {// odgoda 50 ms kako biste bili sigurni da je još uvijek pritisnuto // izbjegava bilo kakvo zaostalo čitanje (50); if (digitalRead (BUTTON_PIN) == HIGH) {// nasumičnim odabirom pjesme int song_choice = random (5); // odaberite koju ćete pjesmu svirati prekidač (song_choice) {slučaj 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); break; slučaj 1: play_song (marioLength, mario, marioDurations, marioTempo); break; slučaj 2: play_song (miiLength, mii, miiDurations, miiTempo); break; slučaj 3: play_song (hpLength, hp, hpDurations, hpTempo); break; slučaj 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); break; default: play_song (miiLength, mii, miiDurations, miiTempo); break; }}}}

play_song:

play_song () uzima 4 argumenta: cijeli broj nota u pjesmi, cijeli broj niza tonova u melodiji, cijeli broj trajanja i cjelobrojni tempo za tu pjesmu. Morate navesti svaku od ovih za svaku pjesmu koju želite svirati. Za više informacija o tome kako koristiti Arduino tonske funkcije, možete pogledati ovaj vodič: https://www.arduino.cc/en/Tutorial/ToneMelody. Dodao sam neke funkcije povrh ovog vodiča za iscrtane bilješke. Ako je vrijednost u nizu trajanja bilješke negativna, to znači da je to točkasta nota (dužina je 1,5 puta veća).

/ * pušta pesmu */

void play_song (int num_notes, int melody , int noteDurations , int tempo) {// prelazite i svirajte sve note za (int i = 0; i 0) {duration = tempo / noteDurations ; } // ako je to negativan broj, znači točkasta nota // povećava trajanje napola za isprekidane note inače if (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1,5; } ton (SPEAKER_PIN, melodija , trajanje); // da biste razlikovali bilješke, postavite minimalno vrijeme između njih. // čini se da trajanje bilješke + 30% radi dobro: int pauseBetweenNotes = duration * 1.30; kašnjenje (pauseBetweenNotes); // zaustavljanje sviranja tona: noTone (SPEAKER_PIN); }}

Uzorak pjesama.h:

Ispod je uzorak jedne od pjesama u "songs.h". Bilješke su makroi definirani u "pitches.h". Brojevi odgovaraju frekvencijama nota u hercima (Hz). Trajanje nota je definisano kao: 1 = cela nota, 2 = polovina note, 4 = nota četvrtine, 8 = osma nota, -4 = tačkasta nota, itd. Dužina je ukupan broj nota u pesmi. Tempo je razdjelnik brzine pjesme (veći broj znači sporiji tempo). Morat ćete se igrati s ovim brojem dok ne dobijete tempo koji vam se sviđa.

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

Korak 3: Podešavanje

Dodajte još pjesama! Slijedite format prikazan u "songs.h" i upotrijebite vodič za pomoć: https://www.arduino.cc/en/Tutorial/ToneMelody. Za svaku novu pjesmu koju dodate ne zaboravite dodati novo slovo u naredbu switch i povećati maksimalni broj koji može generirati vaša funkcija random (). Sretno kodiranje!

Korak 4: Više projekata

Za više projekata posjetite moje stranice:

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

Preporučuje se: