Sadržaj:
- Korak 1: Postavljanje hardvera
- Korak 2: Postavljanje softvera
- Korak 3: Ugađanje
- Korak 4: Više projekata
Video: Arduino zvono na vratima: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:31
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!
Pribor:
- Arduino Uno (većina drugih vrsta će to učiniti)
- Računalo s Arduino IDE za programiranje
- Kabel USB-A do USB-B za programiranje Arduina
- Oglasna ploča
- 4x kratkospojne žice
- Gumb 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 gumba izvan vrata
Korak 1: Postavljanje hardvera
Prvo ćemo postaviti hardver. Počet ćemo s pasivnim zujalicom (tj. Zvučnikom). Želimo spojiti pozitivni kraj pasivnog zujalice (označen znakom "+") na digitalni pin 8 na Arduinu. Drugi kraj pasivne sirene spojit ćemo na masu.
Zatim ćemo instalirati gumb 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 se gumb ne pritisne i 5V kada se pritisne gumb. 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 spojene iznutra. Okomito su spojeni samo pritiskom. Više informacija nalazi se u ovom članku:
Korak 2: Postavljanje softvera
Sav kôd je u prilogu. Ispod su opisi svake od funkcija sa snimkama koda.
postaviti:
U funkciji setup () želimo konfigurirati digitalne pinove za naš gumb i zvučnik. Želimo konfigurirati pin 2 kao ulaz za naš gumb, a pin 8 želimo postaviti kao izlaz za naš zvučnik.
Također želimo "zasijati" naš generator slučajnih brojeva za nasumičan odabir melodije kada nam netko pozvoni na vrata. Postavljanje našeg generatora slučajnih brojeva znači unošenje nasumičnog unosa. 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 biti "slučajni", fluktuirajući napon koji našem generatoru slučajnih brojeva daje mnogo različitih vrijednosti. To osigurava da ćemo za zvono na vratima imati drugačiji redoslijed odabira pjesama. Za više informacija o funkciji Arduino random () idite ovdje:
#include "parcele.h"
#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * set up function */void setup () {// omogući ulazne/izlazne pinove pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // funkcija random () sjemena tako da dobijemo drugačiji redoslijed randomSeed (analogRead (0)); }
petlja:
U našoj funkciji loop () neprestano ćemo provjeravati je li tipka pritisnuta (digitalni pin 2 je visok). Ako je pin visok, čekamo 50 ms i ponovno provjeravamo je li još uvijek visok. Time se osigurava da je gumb pritisnut i da nije buka zalutala na pinu digitalnog ulaza uzrokovala lažno pozitivno.
Nakon što smo potvrdili da je gumb pritisnut, 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 "pitch.h". Nakon što odaberemo pjesmu, prosljeđujemo te podatke u funkciju play_song ().
/ * glavna funkcija petlje */
void loop () {// provjerite je li pritisnut gumb if (digitalRead (BUTTON_PIN) == HIGH) {// odgodite 50 ms kako biste bili sigurni da je još uvijek pritisnut // izbjegava bilo kakvo zaostalo pogrešno č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); pauza; slučaj 1: play_song (marioLength, mario, marioDurations, marioTempo); pauza; slučaj 2: play_song (miiLength, mii, miiDurations, miiTempo); pauza; slučaj 3: play_song (hpLength, hp, hpDurations, hpTempo); pauza; slučaj 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); pauza; zadano: play_song (miiLength, mii, miiDurations, miiTempo); pauza; }}}}
play_song:
play_song () uzima 4 argumenta: cijeli broj nota u pjesmi, cjelobrojni niz tonova u melodiji, cjelobrojni niz 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 bilješke s točkama. Ako je vrijednost u nizu trajanja bilješke negativna, to znači da je to točkasta nota (duljina je 1,5 puta veća).
/ * pušta pjesmu */
void play_song (int num_notes, int melody , int noteDurations , int tempo) {// korak kroz i sviranje svih nota za (int i = 0; i 0) {duration = tempo / noteDurations ; } // ako je to negativan broj, znači točkasta nota // povećava trajanje napola za točkaste bilješke else if (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1,5; } ton (SPEAKER_PIN, melodija , trajanje); // za razlikovanje bilješki, postavite minimalno vrijeme između njih. // čini se da trajanje bilješke + 30% dobro radi: int pauseBetweenNotes = trajanje * 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 makronaredbe definirane u "visinama.h". Brojevi odgovaraju frekvencijama nota u hercima (Hz). Trajanje nota definirano je kao: 1 = cijela nota, 2 = polovica note, 4 = nota četvrtine, 8 = osma nota, -4 = točka četvrtine, itd. Dužina je ukupan broj nota u pjesmi. 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 hpDužina = 14; int hpTempo = 1050;
Korak 3: Ugađanje
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 izraz 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čeni:
Arduino zvono na vratima od koronavirusa: 6 koraka
Arduino zvono na vratima od koronavirusa: Zbog globalne epidemije koronavirusa, želim napraviti zvono na vratima da ne morate pritiskati nikakve signale ljudima iznutra da ste ovdje i oni moraju otvoriti vrata. Ova stvar može vas natjerati da dobijete virus dodirom na zvona drugih ljudi
Arduino zvono na vratima: 5 koraka
Arduino zvono na vratima: DOBAVLJA-2 ploče za kruh-zujalica-kratkospojne žice-2 arduino/genuino sa kabelima za napajanje-RF odašiljač i prijemnik-tipka-otpornik 100 ohma
Arduino push upozorenja za zvono na vratima, alarm za provalu, alarme za dim itd.: 8 koraka
Arduino push upozorenja za zvono na vratima, alarm za provalu, alarme za dim itd.: IoT obavijesti s vašeg zvona na vratima, alarmi za provale, alarmi za dim itd. Pomoću Arduino Uno i Ethernet štita. Svi detalji na mojoj web stranici ovdjeO Arduino Push Alert Box -u koristi Arduino Uno i Ethernet štit temeljen na Wiznet W5100 čipu za
Pretvorite svoje žičano zvono na vrata u pametno zvono sa IFTTT: 8 koraka
Pretvorite svoje žičano zvono u pametno zvono s IFTTT -om: WiFi zvono na vratima pretvara vaše postojeće žičano zvono na pametno zvono. https://www.fireflyelectronix.com/product/wifidoor
Arduino zvono na vratima s VU mjeračem: 4 koraka (sa slikama)
Arduino zvono na vratima s VU mjeračem: Osnovna ideja je - nakon pritiska na tipku zvona na vratima, LED diode će početi ritmički svijetliti zajedno sa zvučnim signalom, nakon nekog vremena dva će se događaja automatski zaustaviti. LED diode mogu biti izvan vrata za zabavu posjetitelja ili unutra. U ovom ja