Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Construye tu Propio Teclado de Piano Electrónico con Canciones Integradas

Componentes y materiales

Componente Cantidad
Arduino UNO 1
Pantalla LCD estándar Adafruit - 16x2 Blanco sobre azul 1
Pulsador SparkFun 12mm 8
Resistencia 220 ohm 4
Resistencia 560 ohm 1
Resistencia 1k ohm 1
Resistencia 4.7k ohm 1
Resistencia 10k ohm 3
Resistencia 1M ohm 1
Zumbador (buzzer) 1
LED (genérico) 1
Potenciómetro de una vuelta - 10k ohmios 1
Cables de puente (jumper wires) 1
Protoboard (genérica) 1

Sobre el proyecto

Introducción

Para empezar, debo decir que soy completamente nuevo en el mundo de la electrónica. Tengo una base decente en programación, lo cual ayuda, pero siempre estoy abierto a nuevas ideas y sugerencias para cualquiera de los proyectos que he creado.

Recientemente he estado aprendiendo más sobre el zumbador piezoeléctrico (Piezo Buzzer) y la programación involucrada, y esta es mi creación basada en lo que he aprendido hasta ahora. Hay mucho margen para expandir con nuevas características o interruptores, lo cual planeo hacer más adelante, ¡pero por ahora pasamos al siguiente reto!

A continuación hay un video de cómo funciona el dispositivo, incluyendo el menú de canciones predefinidas. Admito que técnicamente la canción 4 y 5 son la misma, pero ¿qué se le va a hacer? ¡Tengo ganas de crear cosas más grandes y mejores y escribir el código musical para más canciones no era una de ellas! La codificación básica tanto para los bucles principales como para los bucles individuales de cada canción es bastante fácil de adaptar a tus propias ideas, así que siéntete libre de cambiarlo como mejor te parezca.

¡Míralo en acción!

(Video demostrativo del funcionamiento)

Cómo configurar el hardware

Las teclas del piano...

Los interruptores de las teclas del piano se conectaron usando una escalera de resistencias. Las resistencias se colocan en orden secuencial, conectando cada interruptor a la alimentación. Para mi proyecto, elegí usar (en ohmios) 1M, 10k, 4.7k, 1k, 560 y 220. La primera tecla (a la izquierda) se conecta a la alimentación y también al siguiente interruptor en el circuito. El segundo interruptor se conecta a la resistencia más pequeña, y cada interruptor posterior se conecta a la siguiente resistencia más grande en la serie. El último interruptor pone a tierra la conexión mediante una resistencia de 10k ohm y también conecta los 7 interruptores al pin "analog in" A0 del Arduino. El sketch principal define qué frecuencias de notas musicales se asocian a cada tecla. Para este proyecto usé C4, D4, E4, F4, G4, A4 y B4, siendo C4 el interruptor más a la izquierda. ¡Cambia los valores de frecuencia o añade interruptores adicionales para personalizar completamente tu proyecto!

La pantalla LCD...

Conecta los pines del LCD según el diagrama de circuito. Conecta el pin 3 del LCD al potenciómetro para control de contraste. Los pines exteriores del potenciómetro se conectan a alimentación y tierra para completar este circuito. El pin 15 del LCD se conecta a alimentación mediante una resistencia de 220 ohm. Si alguno de estos pines cambia en tu proyecto, actualiza el código en consecuencia.

El interruptor del menú...

Conecta el interruptor del menú a alimentación, y ponlo a tierra a través de una resistencia de 10k ohm. Este interruptor también debe conectarse al pin 7 del Arduino para controlarlo mediante código.

El LED...

El LED indica cuando estás en "modo menú" y las teclas del piano están deshabilitadas. El LED se enciende al presionar el interruptor del menú. Conecta el ánodo (positivo) del LED al pin 6 del Arduino, y pon a tierra el LED mediante una resistencia de 220 ohm.

El zumbador piezoeléctrico...

Para integrar el zumbador piezoeléctrico, simplemente conecta un extremo al pin 8 del Arduino y el otro lado a tierra mediante una resistencia de 220 ohm. La función "tone" en el código buscará este pin para reproducir la nota solicitada.

Construye tu Propio Teclado de Piano Electrónico con Canciones Integradas

Cómo funciona el código

La configuración (setup)...

El bucle principal (main loop)...

Acceso al menú...

Código

El código completo está organizado en varios archivos:

Código principal (Electronic Keyboard)

// LCD Screen, Switch & LED Setup
#include <LiquidCrystal.h>
#include "pitches.h"
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int LCDswitchPin = 7;
int LCDswitchState = 0;
int prevLCDswitchState = 0;
int blueLED = 6;
int LCDswitchCounter = 0;
// Music Note Keys - Set frequency values
int notes[] = {262, 294, 330, 349, 392, 440, 494}; // C, D, E, F, G, A, B

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  pinMode(LCDswitchPin, INPUT);
  pinMode(blueLED, OUTPUT);
  digitalWrite(blueLED, LOW);
}

void loop() {
  LCDswitchState = digitalRead(LCDswitchPin);
  int keyVal = analogRead(A0);
  Serial.println(keyVal);
  lcd.noDisplay();
  digitalWrite(blueLED, LOW);
  
  if (LCDswitchState == HIGH) {
    digitalWrite(blueLED, HIGH);
    lcd.display();
    lcd.clear();
    LCDstart();
  }
  
  // Keyboard notes & frequency statements
  if(keyVal == 1023) { tone(8, notes[0]); } // C
  else if(keyVal >= 990 && keyVal <= 1010) { tone(8, notes[1]); } // D
  else if(keyVal >= 960 && keyVal <= 980) { tone(8, notes[2]); } // E
  else if(keyVal >= 900 && keyVal <= 945) { tone(8, notes[3]); } // F
  else if(keyVal >= 650 && keyVal <= 710) { tone(8, notes[4]); } // G
  else if(keyVal >= 500 && keyVal <= 550) { tone(8, notes[5]); } // A
  else if(keyVal >= 5 && keyVal <= 10) { tone(8, notes[6]); } // B
  else if(keyVal <= 1) { noTone(8); }
}

// Funciones LCDstart, Song1title, Song2title, Song3title, Song4title, Song5title
// ... (código completo disponible en el repositorio)

Canciones de ejemplo

Cada canción tiene su propia función con arrays de melodía y duraciones. Las canciones 1-3 incluyen temas conocidos (Mario Bros, Jeopardy), mientras que las 4-5 son melodías genéricas de ejemplo que puedes personalizar.

Librería pitches.h

Define todas las frecuencias de notas musicales desde NOTE_B0 (31 Hz) hasta NOTE_DS8 (4978 Hz). Guarda este archivo en la misma carpeta que tus sketches del teclado/canciones.

Esquemáticos

Diagramas de conexión disponibles en la sección de descargas.

Proceso de manufactura

  1. Primeros Pasos con TJBot: Construye, Configura y Controla por Voz tu Robot IA
  2. Alerta de Sed Inteligente para Plantas: Sensor DIY para Riego Óptimo
  3. Reloj de Palabras en Italiano con Arduino Nano, NeoPixel, LCD y RTC
  4. Convierte tu Teclado MIDI en Tutor de Piano Inteligente con Arduino, LEDs y MuseScore
  5. Sensor de obstáculos IR casero con Arduino – Tutorial fácil con LED IR y fotodiodo
  6. Medidor kWh Sigfox Fiable con Arduino MKR Fox 1200
  7. Monitor de temperatura con Bluetooth usando Arduino Nano
  8. Mini Radio Estéreo Compacta RDA5807 – Proyecto con Arduino Nano
  9. Cerradura por Gestos Sin Contacto: Acceso Seguro con APDS-9960 y Arduino
  10. Kit Compañero Arduino Nano: Componentes y Herramientas Esenciales para Electrónica DIY
  11. Test de Precisión de Tiempo de Reacción con Arduino UNO