▷ Como Hacer un Piano con Arduino ♬


Materiales:

  • 1 Arduino Uno
  • 8 Pulsadores 
  • 8 Resistencias de 1k
  • 1 Speaker o buzzer

Diagrama de conexiones:


Al presionar un pulsador el speaker va a reproducir un sonido el cual varia dependiendo de la nota que programemos para que suene cuando lo pulsamos,  en este caso esta programado en escala de Do. Entonces para programar el piano con la escala de Do hacemos lo siguiente:


Incluimos la librería "pitches.h" (ahí están definidas las notas musicales), a continuación definimos los pines en donde irán conectados los pulsadores y el speaker.


#include "pitches.h"
#define speaker 8

#define p1 A0
#define p2 A1
#define p3 A2
#define p4 A3
#define p5 A4
#define p6 A5
#define p7 2
#define p8 3

Creamos una variable para definir el tiempo que van a sonar las notas al presionar el pulsador.

short tiempo = 8;

Creamos un array con las notas que vayamos a reproducir. en mi caso las notas son Do, Re, Mi, Fa, Sol, La, Si, Do. Los nombres de todas las notas e información sobre la libreria "pitches.h" la pueden encontrar AQUÍ 


Que es un array y como se utiliza click AQUÍ

int nota[] = {
  NOTE_C3, //DO 0
  NOTE_D3, //RE 1
  NOTE_E3, //MI 2
  NOTE_F3, //FA 3
  NOTE_G3, //SOL 4
  NOTE_A3, //LA 5
  NOTE_B3, //SI 6
  NOTE_C4, // DO 7

};

Definimos entradas y salidas.

void setup() {

  pinMode(p1, INPUT);
  pinMode(p2, INPUT);
  pinMode(p3, INPUT);
  pinMode(p4, INPUT);
  pinMode(p5, INPUT);
  pinMode(p6, INPUT);
  pinMode(p7, INPUT);
  pinMode(p8, INPUT);
  pinMode(speaker, OUTPUT);

}

En el void loop, programamos que al precionar un pulsador, suene una nota. Por ejemplo:


Al preciona p1 (El pulsador que se encuentra conectado al pin A0 del Arduino).

  if (digitalRead(p1)) { // 

Reproducimos la nota que se encuentra definida en la posicion 0 del array, por un tiempo determinado.

    tone(speaker, nota[0], tiempo); 
  }

Hacemos esto con los demás pulsadores y nos queda algo así.

void loop() {

  if (digitalRead(p1)) {
    tone(speaker, nota[0], tiempo);
  }
  if (digitalRead(p2)) {
    tone(speaker, nota[1], tiempo);
  }
  if (digitalRead(p3)) {
    tone(speaker, nota[2], tiempo);
  }
  if (digitalRead(p4)) {
    tone(speaker, nota[3], tiempo);
  }
  if (digitalRead(p5)) {
    tone(speaker, nota[4], tiempo);
  }
  if (digitalRead(p6)) {
    tone(speaker, nota[5], tiempo);
  }
  if (digitalRead(p7) {
    tone(speaker, nota[6], tiempo);
  }
  if (digitalRead(p8) {
    tone(speaker, nota[7], tiempo);
  }

}

Espero que les haya gustado este post, si tienen alguna duda o alguna sugerencia comenten en la parte de abajo, a continuación les dejo el código completo.


CÓDIGO:

#include "pitches.h"
#define speaker 8

#define p1 A0
#define p2 A1
#define p3 A2
#define p4 A3
#define p5 A4
#define p6 A5
#define p7 2
#define p8 3

short tiempo = 8;

// notes in the melody:
int nota[] = {
  NOTE_C3, //DO 0
  NOTE_D3, //RE 1
  NOTE_E3, //MI 2
  NOTE_F3, //FA 3
  NOTE_G3, //SOL 4
  NOTE_A3, //LA 5
  NOTE_B3, //SI 6
  NOTE_C4, // DO 7

};


void setup() {

  pinMode(p1, INPUT);
  pinMode(p2, INPUT);
  pinMode(p3, INPUT);
  pinMode(p4, INPUT);
  pinMode(p5, INPUT);
  pinMode(p6, INPUT);
  pinMode(p7, INPUT);
  pinMode(p8, INPUT);
  pinMode(speaker, OUTPUT);

}


void loop() {

  if (digitalRead(p1)) {
    tone(speaker, nota[0], tiempo);
  }
  if (digitalRead(p2)) {
    tone(speaker, nota[1], tiempo);
  }
  if (digitalRead(p3)) {
    tone(speaker, nota[2], tiempo);
  }
  if (digitalRead(p4)) {
    tone(speaker, nota[3], tiempo);
  }
  if (digitalRead(p5)) {
    tone(speaker, nota[4], tiempo);
  }
  if (digitalRead(p6)) {
    tone(speaker, nota[5], tiempo);
  }
  if (digitalRead(p7) {
    tone(speaker, nota[6], tiempo);
  }
  if (digitalRead(p8) {
    tone(speaker, nota[7], tiempo);
  }
}

0/Deja un comentario/Comentarios

¡Hola! Nos alegra mucho que hayas llegado hasta aquí y que estés leyendo este artículo en Edeptec.
Este formulario es un espacio abierto para ti: puedes dejar un comentario con tus dudas, sugerencias, experiencias o simplemente tu opinión sobre el tema tratado.

» ¿Te resultó útil la información?
» ¿Tienes alguna experiencia personal que quieras compartir?
» ¿Se te ocurre algún tema que te gustaría ver en próximos artículos?

Recuerda que este espacio es para aprender y compartir, por eso te animamos a participar de manera respetuosa y constructiva. Tus comentarios pueden ayudar a otros lectores que están en el mismo camino, ya sea en electrónica, programación, deportes o tecnología.

¡Gracias por ser parte de esta comunidad de aprendizaje! Tu participación es lo que hace crecer este proyecto.