Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Por IanCumming Siga más por el autor:
Acerca de: Me gusta hacer cosas, desde cohetes hasta electrónica. Más sobre IanCumming »
Bienvenidos todos
Es casi la temporada festiva y muchas tiendas han comenzado a colocar sus decoraciones festivas, ¡pensé que era el momento adecuado para construir algunas luces de hadas musicales!
Paso 1: Piezas utilizadas
Usaré lo siguiente:
- 12 LED
- 12 resistencias limitadoras de corriente
- 1 matriz de transistores Darlington ULN 2803
- Algunos cables de puente
- Un altavoz piezoeléctrico
- Una placa de pruebas y
- un Arduino
- Para hacer la cadena de luces de colores utilicé 5 cables de un cable Ethernet
Paso 2: el código
// VARS GLOBALES int barTime = 1200; // 8/8 = 1000ms byte nrLEDS = 4; // 4 LED de base, puede agregar muchos leds de bytes en paralelo = {3, 4, 5, 6}; byte altavoz = 11; byte patternLength = 64; // patrón Longitud byte songLength = 51; const byte song = {// Jingle Bells Data 29, 2, 29, 2, 29, 4, 29, 2, 29, 2, 29, 4, 29, 2, 32, 2, 25, 3, 27, 1, 29, 8, 30, 2, 30, 2, 30, 3, 30, 1, 30, 2, 29, 2, 29, 2, 29, 1, 29, 1, 29, 2, 27, 2, 27, 2, 29, 2, 27, 4, 32, 4, 29, 2, 29, 2, 29, 4, 29, 2, 29, 2, 29, 4, 29, 2, 32, 2, 25, 3, 27, 1, 29, 8, 30, 2, 30, 2, 30, 2, 30, 2, 30, 2, 29, 2, 29, 2, 29, 1, 29, 1, 32, 2, 32, 2, 30, 2, 27, 2, 25, 8}; // La estructura es el número de nota y luego // NoteLength en el patrón de bytes constantes del octavo = {// Patrón de datos 0b0001, 0b0010, 0b0100, 0b1000, // Bits corrispond a Leds en Array 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b1000, 0b1100, 0b0100, 0b0110, 0b0010, 0b0011, 0b0001, 0b1001, 0b1000, 0b1100, 0b0100, 0b0110, 0b01, 0b10, 0100 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1100, 0b0011, 0b00b11, 0b0011, 0b00b11, 0b0011, 0b00b11, 0b0011, 0b00b11, 0b0011, 0b0011, 0b1100, 0b0011, 0b1100, 0b0011,};
En primer lugar, declaro mis variables, siendo las interesantes Song y Pattern.
- La canción almacena la melodía; en este caso son Jingle bells.
- El patrón almacena posiciones de encendido y apagado en los bits de los valores de la matriz.
Funciones personalizadas
// FUNCIONES int noteToHz (int note) {// Convertir una nota Nr. a Frecuencia float freq = 440 * (pow (1.059463094359, nota-21)); // -21 le da la nota 1 en C3 (Creo) return int (freq); // Los resultados tienen una precisión de 1hz} void lightLEDs (byte PORT_X) {// Control del estado de los LED para (int q = 0; q
Las dos funciones que tengo harán lo siguiente:
- Calcule la frecuencia de la función de tono en el bucle.
- encender o apagar los LED's dependiendo del valor pasado a la función
Función de configuración
void setup () {// configurar pines de SALIDA pinMode (altavoz, SALIDA); para (int t = 0; t <nrLEDS; t ++) {pinMode (leds [t], SALIDA); }}
En la función de configuración, configuro los pines necesarios en SALIDA.
Función de bucle
void loop () {// Music Loop for (int t = 0; t <songLength; t ++) {// Notas, Duración y reproducción de la melodía int note = noteToHz (song [t * 2]); int length = ((canción [(t * 2) +1] * barTime) / 8); tono (altavoz, nota, longitud - 50); // ¡Luces parpadeantes! lightLEDs (patrón [t% patternLength]); retraso (duración); } // Bucle de silencio int randomSilence = random (1000, 5000); para (int t = 0; t
Tengo 2 bucles en la función Main Loop. Un bucle de canción y un bucle de silencio
El bucle de la canción leerá los datos de la matriz de canciones, reproducirá la nota usando la función de tono
El bucle de la canción
- Leer los datos de la matriz de canciones,
- Toque la nota usando la función de tono y luego
- Encienda la matriz de patrones de lectura de los LED.
En el bucle del silencio
solo los LED están encendidos
Conecte el Arduino y cargue el código. (Luego desenchúfelo)
Paso 3: iniciar el circuito
Voy a empezar con la cadena de luces
- Utilicé un cable de un cable Ethernet y soldé 3 LED en paralelo cuatro veces, asegurándome de espaciar los LED de manera uniforme en aproximadamente 2 metros
- Soldé el ánodo de cada cable a un solo cable.
- Luego, el cátodo de cada LED a 4 cables separados. Con una resistencia por supuesto
- Repetí este proceso 3 veces para obtener una cadena de 12 LED y puse pines de encabezado en el extremo de los 5 cables
Conecte los rieles positivo y de tierra a la placa de pruebas
Paso 4: el ULN2803
Coloque el chip ULN2308 en la placa de pruebas
El ULN2308 es un chip de matriz de transistores; de la hoja de datos puedo ver
- Ese pin 1 es una entrada que activa el pin 18
- El pin 2 enciende el 17. Etc.
- El pin 9 está a tierra
- Conecte el pin 9 del chip al riel de tierra
- Conecte el riel positivo a una regleta de terminales, una franja por encima del pin 18. (Verá por qué en un minuto)
- Conecte el pin 1 del chip al pin 3 del Arduino
- 2 va a 4
- 3 del chip pasa a 5 y
- 4 va al pin 6 del Arduino
- Coloque la cadena de LED en la placa de pruebas. Donde el cable de ánodo común está conectado a la tira conectada a 5 voltios. El resto de los pines de luz de hadas deben ir a los pines 18, 17, 16 y 15 del chip.
Paso 5: agregar sonido
- Conecte el altavoz piezoeléctrico entre 2 regletas de terminales
- Conecte el polo negativo del elemento piezoeléctrico a tierra y
- El otro extremo del altavoz al pin 11
Paso 6: Conclusión
Tengo una cadena de luces que reproducirán cascabeles al azar para recordarme que es la temporada festiva.