Tabla de contenido:

Timbre Arduino: 4 pasos
Timbre Arduino: 4 pasos

Video: Timbre Arduino: 4 pasos

Video: Timbre Arduino: 4 pasos
Video: Control del sonido de un timbre con Latch y Arduino 2024, Mes de julio
Anonim
Timbre Arduino
Timbre Arduino

Hoy, te mostraré cómo hacer un timbre usando un Arduino. Este timbre reproduce una melodía aleatoria de una biblioteca de canciones. Puede personalizar su timbre y agregar aún más canciones. ¡Instálelo fuera de su dormitorio, aula, oficina o incluso en la puerta de su casa!

Suministros:

  • Arduino Uno (la mayoría de los otros tipos sirven)
  • Computadora con Arduino IDE para programación
  • Cable USB-A a USB-B para programar Arduino
  • Tablero de circuitos
  • Cables de puente 4x
  • Botón pulsador u otro interruptor
  • Resistencia de 10 kOhmios
  • Zumbador pasivo (es decir, altavoz piezoeléctrico)
  • Para instalación permanente:

    • Fuente de alimentación de 9 V CC o batería de 9 V para alimentar Arduino
    • 2x cables largos para el botón de cableado de la puerta exterior

Paso 1: configuración del hardware

configuración de hardware
configuración de hardware
configuración de hardware
configuración de hardware
configuración de hardware
configuración de hardware

Primero, configuraremos el hardware. Comenzaremos con el zumbador pasivo (es decir, altavoz). Queremos conectar el extremo positivo del zumbador pasivo (indicado por el signo "+") al pin digital 8 del Arduino. Conectaremos el otro extremo del zumbador pasizado a tierra.

A continuación, instalaremos el pulsador del timbre. Usaremos una resistencia pulldown externa de 10 kOhm para el interruptor, por lo que no hay voltaje flotante o estado inestable en la entrada del Arduino. Al usar la resistencia pulldown, el Arduino lee el voltaje como 0V cuando no se presiona el botón y como 5V cuando se presiona el botón. Para obtener más información sobre resistencias pullup o pulldown, puede leer este artículo:

Conectaremos un lado del pulsador a 5V. El otro lado del pulsador se conectará a tierra a través de una resistencia pulldown de 10 kOhm. Recuerde: los pulsadores están conectados horizontalmente internamente. Solo se conectan verticalmente cuando se presionan. Se proporciona más información en este artículo:

Paso 2: configuración del software

Se adjunta todo el código. A continuación se muestran las descripciones de cada una de las funciones con instantáneas del código.

configuración:

En la función setup (), queremos configurar los pines digitales para nuestro botón y nuestro altavoz. Queremos configurar el pin 2 como entrada para nuestro botón, y queremos configurar el pin 8 como salida para nuestro altavoz.

También queremos "sembrar" nuestro generador de números aleatorios para seleccionar aleatoriamente una melodía cuando alguien toca nuestro timbre. Sembrar nuestro generador de números aleatorios significa alimentarlo con una entrada aleatoria. Sembraremos nuestro generador de números aleatorios con el valor de voltaje en la entrada analógica 0. Dado que no hay nada conectado a esta entrada, habrá un voltaje fluctuante "aleatorio" en este pin que proporcionará a nuestro generador de números aleatorios muchos valores diferentes. Esto asegura que tendremos un orden diferente de selección de canciones para nuestro timbre. Para obtener más información sobre la función Arduino random (), vaya aquí:

#include "pitches.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8 / * configura la función * / void setup () {// habilita los pines de entrada / salida pinMode (BUTTON_PIN, INPUT); pinMode (ALTAVOZ_PIN, SALIDA); // función de semilla random () para que obtengamos un orden diferente randomSeed (analogRead (0)); }

círculo:

En nuestra función loop (), verificaremos continuamente para ver si el botón está presionado (el pin digital 2 está alto). Si el pin está alto, esperamos 50 ms y lo verificamos nuevamente para asegurarnos de que todavía esté alto. Esto asegura que el botón esté presionado y que no haya ruido en el pin de entrada digital que cause un falso positivo.

Una vez que hemos confirmado que se presionó el botón, usamos nuestro generador de números aleatorios para seleccionar una de las 5 canciones usando una instrucción de cambio. Los datos de estas canciones se almacenan en "songs.h" y la información de tono se almacena en "pitches.h". Una vez que elegimos una canción, pasamos esta información a la función play_song ().

/ * función de bucle while principal * /

void loop () {// verifica si el botón está presionado if (digitalRead (BUTTON_PIN) == HIGH) {// demora 50 ms para asegurarte de que aún está presionado // evita cualquier error de lectura retrasado (50); if (digitalRead (BUTTON_PIN) == HIGH) {// elige al azar una canción int song_choice = random (5); // seleccionar qué canción reproducir switch (song_choice) {caso 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); rotura; caso 1: play_song (marioLength, mario, marioDurations, marioTempo); rotura; caso 2: play_song (miiLength, mii, miiDurations, miiTempo); rotura; caso 3: play_song (hpLength, hp, hpDurations, hpTempo); rotura; caso 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); rotura; predeterminado: play_song (miiLength, mii, miiDurations, miiTempo); rotura; }}}}

play_song:

play_song () toma 4 argumentos: un número entero de notas en la canción, un arreglo entero de los tonos de la melodía, un arreglo entero de la duración y un tempo entero para esa canción en particular. Debe especificar cada uno de estos para cada canción que desee reproducir. Para obtener más información sobre cómo utilizar las funciones de tono de Arduino, puede consultar este tutorial: https://www.arduino.cc/en/Tutorial/ToneMelody. Agregué algunas funciones además de este tutorial para notas punteadas. Si un valor en la matriz de duración de nota es negativo, significa que es una nota con puntos (la longitud es 1,5 veces mayor).

/ * reproduce la canción * /

void play_song (int num_notes, int melody , int noteDurations , int tempo) {// recorre y toca todas las notas para (int i = 0; i 0) {duration = tempo / noteDurations ; } // si es un número negativo, significa nota punteada // aumenta la duración a la mitad para notas punteadas else if (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5; } tono (SPEAKER_PIN, melodía , duración); // para distinguir las notas, establezca un tiempo mínimo entre ellas. // la duración de la nota + 30% parece funcionar bien: int pauseBetweenNotes = duration * 1.30; delay (pauseBetweenNotes); // detiene la reproducción del tono: noTone (SPEAKER_PIN); }}

Muestra de canciones. H:

A continuación se muestra una muestra de una de las canciones de "songs.h". Las notas son macros definidas en "pitches.h". Los números corresponden a las frecuencias de las notas en hercios (Hz). La duración de las notas se define como: 1 = nota completa, 2 = nota media, 4 = negra, 8 = corchea, -4 = negra punteada, etc. La duración es el número total de notas en la canción. El tempo es un divisor de la velocidad de la canción (un número más alto significa un tempo más lento). Tendrás que jugar con este número hasta que obtengas un tempo que te guste.

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

Paso 3: ¡Ajustes

¡Añade más canciones! Siga el formato que se muestra en "songs.h" y use el tutorial para obtener ayuda: https://www.arduino.cc/en/Tutorial/ToneMelody. Por cada nueva canción que agregue, recuerde agregar un nuevo caso a la declaración de cambio y aumentar el número máximo que puede generar su función random (). ¡Feliz codificación!

Paso 4: Más proyectos

Para más proyectos, visite mis páginas:

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

Recomendado: