Las máquinas de sonido o tableros de audio son maravillosos, estos pequeños aparatos portátiles son indispensables para pasar un buen rato en el hogar o en cualquier oficina.
Con este diseño con Arduino podrás utilizar los sonidos que tú quieras.
16 botones disparan una gran variedad de sonidos tanto divertidos como molestos. ¡Es perfecto para pasar un rato agradable con tus amigos y compañeros!
Material
La siguiente lista muestra los materiales necesarios para construir tu propia máquina de sonidos con Arduino.
Elementos y componentes
Arduino UNO
Protoboard
Cable, jumpers o similar
16 botones push button
Resistencia 1kOhm
DFPlayer Mini
Tarjeta MicroSD
Altavoz
Software, aplicaciones y servicios online
Arduino IDE
Diagrama de circuito
El circuito consiste en un DFPlayer Mini, un altavoz y 16 botones. El DFPlayer se alimenta con GND y 5V y se conecta a los pines seriales 10 y 11.
La conexión al pin 11 tiene una resistencia de 1kOhm. El altavoz está conectado directamente al DFPlayer.
Se utilizan las resistencias internas de la placa Arduino para los push buttons que más tarde activarán los sonidos. Todos los botones están conectados a GND y a un pin digital o analógico del Arduino.
Los pines de entrada analógica también pueden ser usados como pines digitales para leer los botones.
Tarjeta SD
Copia los siguientes sonidos a una tarjeta SD. Asegúrate de que esté formateado en FAT16 o FAT32. Los archivos MP3 individuales deben estar en la carpeta «MP3» en el directorio raíz de la tarjeta SD.
Los usuarios de Mac deben asegurarse de que también seleccionen la opción Master Boot Record en la utilidad de disco duro cuando formateen.
Descarga:
Los archivos son de los siguientes autores y están bajo licencia CC-BY:
- Lachen (CC-BY LittleRainySeasons)
- Airhorn (CC-BY SPANAC)
- Rimshot (CC-BY SPANAC)
- Cartoon Clock (CC-BY SPANAC)
- Sad Trumpet (CC-BY SPANAC)
- Boo(CC-BY SPANAC)
- Wah-Wah-Wah (CC-BY ALEXANDAR)
- Badum-Tss (CC-BY ALEXANDAR)
- Car Lock Sound (CC-BY SPANAC)
- Burp (CC-BY SPANAC)
- Coo-Coo-Clock (CC-BY SPANAC)
- Bell-Rings-Short (CC-BY SPANAC)
- Crash-Sound (CC-BY SPANAC)
- Clapping (CC-BY SPANAC)
- Hammer (CC-BY SPANAC)
- Extreme Alarm Sound (CC-BY SPANAC)
Código
El programa declara 16 pines de Arduino como INPUT_PULLUP y los registra de forma continua en el bucle. Si se presiona uno de los botones, se dispara un sonido.
Se deja las funciones de depuración dentro del loop ya que hace la depuración sea mucho más fácil.
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
int buttonPins[16] = {19,18,17,16,15,14,2,3,4,5,6,7,8,9,12,13}; // Pins a los que se conectan los botones
void setup() {
mySoftwareSerial.begin(9600); // Iniciando la comunicación SoftwareSerial
Serial.begin(115200); // Iniciando la comunicación serial "normal" para el Monitor Serial
if (!myDFPlayer.begin(mySoftwareSerial)) { // Conexión del software de comunicación en serie con el DFPlayer
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!")); // Detener el programa -> while(true) es un loop infinito
while(true){
delay(0);
}
}
myDFPlayer.volume(20); // Volumen ajustado a 20 (use valores de 0 a 30)
for (int i=0; i<16; i++){ // repetir 16 veces (para cada botón)
pinMode(buttonPins[i], INPUT_PULLUP); // Los botones se usan con resistencias internas PULLUP
}
}
void loop() {
for (int i=0; i<16; i++){ // repetir 16 veces (para cada botón)
if (digitalRead(buttonPins[i]) == LOW){ // cuando se presiona un botón
Serial.println(i);
myDFPlayer.playMp3Folder(i+1); // reproducir el MP3 según el número del botón de la tarjeta SD
delay(200);
}
}
delay(20);
/* Todo a partir de aquí es para la depuración y provienen de los archivos de ejemplo de la biblioteca */
if (myDFPlayer.available()) { // Print the detail message from DFPlayer to handle
different errors and states.
printDetail(myDFPlayer.readType(), myDFPlayer.read());
}
}
void printDetail(uint8_t type, int value){
switch (type) {
case TimeOut:
Serial.println(F("Time Out!"));
break;
case WrongStack:
Serial.println(F("Stack Wrong!"));
break;
case DFPlayerCardInserted:
Serial.println(F("Card Inserted!"));
break;
case DFPlayerCardRemoved:
Serial.println(F("Card Removed!"));
break;
case DFPlayerCardOnline:
Serial.println(F("Card Online!"));
break;
case DFPlayerUSBInserted:
Serial.println("USB Inserted!");
break;
case DFPlayerUSBRemoved:
Serial.println("USB Removed!");
break;
case DFPlayerPlayFinished:
Serial.print(F("Number:"));
Serial.print(value);
Serial.println(F(" Play Finished!"));
break;
case DFPlayerError:
Serial.print(F("DFPlayerError:"));
switch (value) {
case Busy:
Serial.println(F("Card not found"));
break;
case Sleeping:
Serial.println(F("Sleeping"));
break;
case SerialWrongStack:
Serial.println(F("Get Wrong Stack"));
break;
case CheckSumNotMatch:
Serial.println(F("Check Sum Not Match"));
break;
case FileIndexOut:
Serial.println(F("File Index Out of Bound"));
break;
case FileMismatch:
Serial.println(F("Cannot Find File"));
break;
case Advertise:
Serial.println(F("In Advertise"));
break;
default:
break;
}
break;
default:
break;
}
}
Submit your review | |
Arduino Arduino UNO DFPlayer mini Micro SD Principiantes Protoboard Proyecto Push button