Satura rādītājs:

Arduino durvju zvans: 4 soļi
Arduino durvju zvans: 4 soļi

Video: Arduino durvju zvans: 4 soļi

Video: Arduino durvju zvans: 4 soļi
Video: Кодовый дверной замок своими руками 😂😂 2024, Jūlijs
Anonim
Arduino durvju zvans
Arduino durvju zvans

Šodien es jums parādīšu, kā izveidot durvju zvanu, izmantojot Arduino. Šis durvju zvans atskaņo nejaušu melodiju no dziesmu bibliotēkas. Jūs varat pielāgot savu durvju zvanu un pievienot vēl vairāk dziesmu. Uzstādiet to ārpus savas guļamistabas, klases, biroja vai pat ieejas durvīm!

Piegādes:

  • Arduino Uno (to darīs vairums citu veidu)
  • Dators ar Arduino IDE programmēšanai
  • USB-A līdz USB-B kabelis Arduino programmēšanai
  • Maizes dēlis
  • 4x džemperu vadi
  • Spiedpoga vai cits slēdzis
  • 10 kOhm rezistors
  • Pasīvais skaņas signāls (t.i., pjezoelektriskais skaļrunis)
  • Pastāvīgai uzstādīšanai:

    • 9 V līdzstrāvas barošanas avots vai 9 V akumulators Arduino barošanai
    • 2x gari vadi elektroinstalācijas pogai ārpus durvīm

1. darbība. Aparatūras iestatīšana

Aparatūras iestatīšana
Aparatūras iestatīšana
Aparatūras iestatīšana
Aparatūras iestatīšana
Aparatūras iestatīšana
Aparatūras iestatīšana

Pirmkārt, mēs uzstādīsim aparatūru. Mēs sāksim ar pasīvo skaņas signālu (t.i., skaļruni). Mēs vēlamies savienot pasīvā signāla pozitīvo galu (apzīmēts ar "+" zīmi) ar Arduino 8. ciparu tapu. Mēs savienosim otru passize skaņas signāla galu ar zemi.

Tālāk mēs uzstādīsim durvju zvana pogu. Slēdzim mēs izmantosim 10 kOhm ārējo nolaižamo rezistoru, tāpēc Arduino ievadē nav peldoša sprieguma vai nestabila stāvokļa. Izmantojot nolaižamo rezistoru, Arduino nolasa spriegumu kā 0 V, ja poga nav nospiesta, un 5 V, kad poga tiek nospiesta. Lai iegūtu papildinformāciju par pievilkšanas vai nolaižamajiem rezistoriem, varat izlasīt šo rakstu:

Mēs pieslēgsim vienu spiedpogas pusi 5V. Spiedpogas otra puse tiks savienota ar zemi caur 10 kOhm nolaižamo rezistoru. Atcerieties: spiedpogas iekšpusē ir savienotas horizontāli. Nospiežot, tie ir savienoti tikai vertikāli. Plašāka informācija ir sniegta šajā rakstā:

2. darbība. Programmatūras iestatīšana

Viss kods ir pievienots. Zemāk ir katras funkcijas apraksts ar koda momentuzņēmumiem.

uzstādīt:

Funkcijā setup () mēs vēlamies konfigurēt savas pogas un skaļruņa digitālās tapas. Mēs vēlamies konfigurēt 2. tapu kā mūsu pogas ievadi, un mēs vēlamies konfigurēt 8. tapu kā mūsu skaļruņa izeju.

Mēs arī vēlamies "iesēt" mūsu izlases numuru ģeneratoru, lai nejauši izvēlētos melodiju, kad kāds zvana pie mūsu durvīm. Mūsu izlases skaitļu ģeneratora iesēšana nozīmē to ievadīt nejaušā ievadē. Mēs iesēsim nejaušo skaitļu ģeneratoru ar sprieguma vērtību analogā ieejā 0. Tā kā šai ieejai nekas nav pievienots, šajā tapā būs "nejaušs", svārstīgs spriegums, nodrošinot mūsu nejaušo skaitļu ģeneratoru ar daudzām dažādām vērtībām. Tas nodrošina, ka mūsu durvju zvana dziesmu izvēles secība būs atšķirīga. Lai iegūtu papildinformāciju par Arduino izlases () funkciju, apmeklējiet šeit:

#include "piķi.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * iestatīšanas funkcija */void setup () {// iespējot ievades/izvades tapas pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // sēklas izlases () funkcija, lai mēs iegūtu atšķirīgu secību randomSeed (analogRead (0)); }

cilpa:

Mūsu cilpas () funkcijā mēs pastāvīgi pārbaudīsim, vai poga ir nospiesta (2. ciparu tapa ir augsta). Ja tapa ir augsta, mēs gaidām 50 ms un vēlreiz pārbaudām, vai tā joprojām ir augsta. Tas nodrošina, ka poga ir nospiesta un digitālās ieejas tapā nebija izkliedēts troksnis, kas izraisīja kļūdaini pozitīvu rezultātu.

Kad esam apstiprinājuši, ka poga ir nospiesta, mēs izmantojam nejaušo skaitļu ģeneratoru, lai atlasītu vienu no piecām dziesmām, izmantojot slēdzi. Šo dziesmu dati tiek saglabāti mapē "songs.h", un informācija par piķi tiek saglabāta mapē "pitchches.h". Kad mēs izvēlamies dziesmu, mēs nododam šo informāciju funkcijai play_song ().

/ * galvenā cilpas funkcija */

void loop () {// pārbaudiet, vai poga ir nospiesta, ja (digitalRead (BUTTON_PIN) == HIGH) {// aizkavē 50 ms, lai pārliecinātos, ka tas joprojām ir nospiests // izvairās no jebkādas kļūdainas lasīšanas aizkaves (50); if (digitalRead (BUTTON_PIN) == HIGH) {// nejauši izvēlēties dziesmu int song_choice = random (5); // izvēlieties, kuru dziesmu atskaņot slēdzis (dziesmas_izvēle) {case 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); pārtraukums; 1. gadījums: play_song (marioLength, mario, marioDurations, marioTempo); pārtraukums; 2. gadījums: play_song (miiLength, mii, miiDurations, miiTempo); pārtraukums; 3. gadījums: play_song (hpLength, hp, hpDurations, hpTempo); pārtraukums; 4. gadījums: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); pārtraukums; noklusējums: play_song (miiLength, mii, miiDurations, miiTempo); pārtraukums; }}}}

play_song:

play_song () ņem 4 argumentus: vesels skaitlis dziesmas piezīmju, vesels skaitlis melodijas augstumu, vesels skaitlis ilguma masīvs un vesels skaitlis šai dziesmai. Jums ir jānorāda katrs no tiem katrai dziesmai, kuru vēlaties atskaņot. Lai iegūtu papildinformāciju par to, kā izmantot Arduino toņu funkcijas, varat apskatīt šo pamācību: https://www.arduino.cc/en/Tutorial/ToneMelody. Šīs apmācības augšpusē es pievienoju dažas funkcijas punktētām piezīmēm. Ja vērtība piezīmju ilguma masīvā ir negatīva, tas nozīmē, ka tā ir punktēta piezīme (garums ir 1,5 reizes lielāks).

/ * atskaņo dziesmu */

void play_song (int num_notes, int melody , int noteDurations , int tempo) {// iziet un atskaņot visas notis (int i = 0; i 0) {duration = tempo / noteDurations ; } // ja tas ir negatīvs skaitlis, tas nozīmē punktētu piezīmi // pagarina uz pusi punktu punktu skaitu, ja if (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5; } tonis (SPEAKER_PIN, melodija , ilgums); // lai atšķirtu piezīmes, starp tām iestatiet minimālo laiku. // šķiet, ka piezīmes ilgums + 30% darbojas labi: int pauseBetweenNotes = ilgums * 1,30; kavēšanās (pauseBetweenNotes); // pārtraukt toņa atskaņošanu: noTone (SPEAKER_PIN); }}

Dziesmu paraugs.h:

Zemāk ir vienas dziesmas paraugs sadaļā "songs.h". Piezīmes ir makro, kas definētas "piches.h". Skaitļi atbilst piezīmju frekvencēm hercos (Hz). Piezīmju ilgums ir definēts šādi: 1 = vesela nots, 2 = puse nots, 4 = ceturkšņa piezīme, 8 = astotā nots, -4 = punktētā ceturkšņa piezīme utt. Garums ir kopējais dziesmas piezīmju skaits. Temps ir dalītājs dziesmas ātrumam (lielāks skaitlis nozīmē lēnāku tempu). Jums būs jāspēlē ar šo numuru, līdz iegūsit sev tīkamu tempu.

/* Harijs Poters */

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;

3. solis: uzlabojumi

Pievienojiet vairāk dziesmu! Izpildiet formātu, kas parādīts sadaļā "songs.h", un izmantojiet apmācību, lai saņemtu palīdzību: https://www.arduino.cc/en/Tutorial/ToneMelody. Katrai jaunajai dziesmai, ko pievienojat, neaizmirstiet slēdzim pievienot jaunu reģistru un palielināt maksimālo skaitu, ko var radīt jūsu nejaušā () funkcija. Laimīgu kodēšanu!

4. solis: vairāk projektu

Lai iegūtu vairāk projektu, apmeklējiet manas lapas:

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

Ieteicams: