Taula de continguts:

Timbre Arduino: 4 passos
Timbre Arduino: 4 passos

Vídeo: Timbre Arduino: 4 passos

Vídeo: Timbre Arduino: 4 passos
Vídeo: 4-20mA Industrial Pressure Sensor, Arduino IoT 2024, Juliol
Anonim
Timbre Arduino
Timbre Arduino

Avui us mostraré com fer un timbre amb un Arduino. Aquest timbre de la porta reprodueix una melodia aleatòria des d’una biblioteca de cançons. Podeu personalitzar el timbre de la porta i afegir encara més cançons. Instal·leu-lo fora del vostre dormitori, aula, oficina o fins i tot a la porta principal.

Subministraments:

  • Arduino Uno (la majoria dels altres tipus ho faran)
  • Ordinador amb IDE Arduino per a la programació
  • Cable USB-A a USB-B per programar Arduino
  • Taula de pa
  • 4x cables de pont
  • Polsador o un altre interruptor
  • Resistència de 10 kOhm
  • Zumbador passiu (és a dir, altaveu piezoelèctric)
  • Per a la instal·lació permanent:

    • Font d'alimentació de 9 V CC o bateria de 9 V per alimentar Arduino
    • 2x cables llargs per al cablejat del botó de la porta exterior

Pas 1: Configuració del maquinari

Configuració del maquinari
Configuració del maquinari
Configuració del maquinari
Configuració del maquinari
Configuració del maquinari
Configuració del maquinari

En primer lloc, configurarem el maquinari. Començarem pel timbre passiu (és a dir, altaveu). Volem connectar l'extrem positiu del timbre passiu (que es denota amb el signe "+") al pin digital 8 de l'Arduino. Connectarem l’altre extrem del timbre de passize a terra.

A continuació, instal·larem el polsador del timbre. Utilitzarem una resistència de desplaçament extern de 10 kOhm per al commutador, de manera que no hi ha voltatge flotant ni estat inestable a l’entrada de l’Arduino. En utilitzar la resistència desplegable, l’Arduino llegeix el voltatge com a 0V quan no es prem el botó i 5V quan es prem el botó. Per obtenir més informació sobre les resistències de desplegament o desplegable, podeu llegir aquest article:

Connectarem un costat del polsador a 5V. L'altre costat del polsador estarà connectat a terra mitjançant una resistència de desplaçament de 10 kOhm. Recordeu: els polsadors estan connectats horitzontalment internament. Només es connecten verticalment quan es premen. Es proporciona més informació en aquest article:

Pas 2: Configuració del programari

S'adjunta tot el codi. A continuació es mostren les descripcions de cadascuna de les funcions amb instantànies del codi.

configuració:

A la funció setup (), volem configurar els pins digitals per al nostre botó i el nostre altaveu. Volem configurar el pin 2 com a entrada per al nostre botó i volem configurar el pin 8 com a sortida per al nostre altaveu.

També volem "sembrar" el nostre generador de números aleatoris per seleccionar aleatòriament una melodia quan algú ens truca el timbre. Sembrar el nostre generador de números aleatoris significa alimentar-lo amb una entrada aleatòria. Sembrarem el nostre generador de números aleatoris amb el valor de tensió de l'entrada analògica 0. Com que no hi ha res connectat a aquesta entrada, hi haurà un voltatge "aleatori" i fluctuant en aquest pin que proporcionarà al nostre generador de números aleatoris molts valors diferents. Això ens assegura que tindrem un ordre diferent de seleccions de cançons per al nostre timbre. Per obtenir més informació sobre la funció Arduino random (), aneu aquí:

#include "pitches.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8 / * funció de configuració * / void setup () {// activa pins d'entrada / sortida pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // funció random seed () de manera que obtenim un ordre diferent randomSeed (analogRead (0)); }

bucle:

A la nostra funció loop (), comprovarem contínuament si es prem el botó (el pin digital 2 és alt). Si el pin és alt, esperem 50 ms i tornem a comprovar per assegurar-nos que encara està alt. Això garanteix que es prem el botó i que no es produeixi cap soroll perdut al pin d'entrada digital que causi un fals positiu.

Un cop hem confirmat que s'ha premut el botó, fem servir el nostre generador de números aleatoris per seleccionar una de les 5 cançons mitjançant una instrucció switch. Les dades d'aquestes cançons s'emmagatzemen a "songs.h" i la informació del to s'emmagatzema a "pitches.h". Un cop escollida una cançó, passem aquesta informació a la funció play_song ().

/ * funció principal mentre que el bucle * /

void loop () {// comproveu si es prem el botó si (digitalRead (BUTTON_PIN) == HIGH) {// demoreu 50 ms per assegurar-vos que encara està premut // evita qualsevol retard de lectura errònia (50); if (digitalRead (BUTTON_PIN) == HIGH) {// escolliu a l'atzar una cançó int song_choice = random (5); // seleccioneu quina cançó voleu reproduir (cançó_elecció) {cas 0: cançó_jocs (tall de cabellLongitud, tall de cabell, tall de cabellDuracions, tall de cabellTempo); trencar; cas 1: play_song (marioLength, mario, marioDurations, marioTempo); trencar; cas 2: play_song (miiLength, mii, miiDurations, miiTempo); trencar; cas 3: play_song (hpLength, hp, hpDurations, hpTempo); trencar; cas 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); trencar; per defecte: play_song (miiLength, mii, miiDurations, miiTempo); trencar; }}}}

play_song:

play_song () accepta 4 arguments: un nombre enter de notes a la cançó, una matriu sencera de tons de la melodia, una matriu sencera de la durada i un tempo sencer per a aquesta cançó en particular. Heu d’especificar cadascuna d’aquestes per a cada cançó que vulgueu reproduir. Per obtenir més informació sobre com utilitzar les funcions de to Arduino, podeu consultar aquest tutorial: https://www.arduino.cc/en/Tutorial/ToneMelody. He afegit algunes funcions a la part superior d’aquest tutorial per obtenir notes amb punts. Si un valor de la matriu de durada de la nota és negatiu, vol dir que és una nota amb punts (la longitud és 1,5 vegades major).

/ * reprodueix la cançó * /

void play_song (int num_notes, int melody , int noteDurations , int tempo) {// passeu i toqueu totes les notes de (int i = 0; i 0) {durada = tempo / noteDurations ; } // si és un número negatiu, significa nota punteada // augmenta la durada a la meitat per a les notes punteades més si (notaDuracions <0) {durada = tempo / abs (notaDuracions ) * 1,5; } to (SPEAKER_PIN, melodia , durada); // per distingir les notes, estableix un temps mínim entre elles. // la durada de la nota + 30% sembla funcionar bé: int pauseBetweenNotes = durada * 1,30; demora (pauseBetweenNotes); // aturar la reproducció del to: noTone (SPEAKER_PIN); }}

Mostra de cançons.h:

A continuació es mostra una mostra d'una de les cançons de "songs.h". Les notes són macros definides a "pitches.h". Els números corresponen a les freqüències de les notes en Hz (Hz). La durada de les notes es defineix com: 1 = nota sencera, 2 = mitja nota, 4 = nota de quart, 8 = nota de vuitena, -4 = nota de quart amb punts, etc. La longitud és el nombre total de notes de la cançó. El tempo és un divisor de la velocitat de la cançó (un nombre més alt significa un tempo més lent). Haureu de jugar amb aquest número fins obtenir un tempo que us agradi.

/ * 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 CVLength = 14; int hpTempo = 1050;

Pas 3: ajustaments

Afegiu més cançons Seguiu el format que es mostra a "songs.h" i utilitzeu el tutorial per obtenir ajuda: https://www.arduino.cc/en/Tutorial/ToneMelody. Per a cada cançó nova que afegiu, recordeu afegir un nou cas a la sentència switch i augmentar el nombre màxim que pot generar la vostra funció random (). Feliç codificació!

Pas 4: Més projectes

Per obtenir més projectes, visiteu les meves pàgines:

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

Recomanat: