2.7 Piano de frutas

1. Qué vamos a hacer
Vamos a convertir la entrada MkMk A0 de nuestra placa en una tecla de piano táctil. Cada vez que toques la entrada (o un objeto conductor conectado a ella, como una fruta), el zumbador de la placa tocará una nota musical.
1.1 Qué vamos a aprender
- A detectar la conductividad eléctrica de objetos cotidianos usando el modo Makey Makey (MkMk).
- A conectar cables de cocodrilo en los conectores externos de la placa.
- A entender cómo funciona un circuito cerrado a través de nuestro propio cuerpo.
- A tocar notas musicales con el zumbador, indicando su frecuencia y su duración.
1.2 Qué vamos a usar
Componentes
- Entrada MkMk A0 (pin A0): Conector táctil para detectar contacto o conductividad.
- Conector común MkMk I/O (5V): Indispensable para cerrar el circuito con tu cuerpo. Está en el extremo derecho de la fila de conectores y proporciona 5V.
- Cables de cocodrilo: Para conectar objetos externos (frutas, plastilina, papel de aluminio, etc.).
- Zumbador pasivo (pin 10): Toca la nota musical.
¡ATENCIÓN! Para que funcione el modo MkMk debemos poner el selector del modo de funcionamiento hacia la derecha, y se nos encenderá el LED testigo en la parte inferior.

En la imagen, la fruta está conectada a la entrada A0 y la pulsera al conector común MkMk I/O (5V). Al tocar la fruta con la mano, una corriente muy pequeña pasa a través de tu cuerpo, el circuito se cierra y la placa lo detecta en la entrada A0.
Programación
La entrada A0 es analógica (ver la tabla de pines de la Introducción), así que la leemos con analogRead, como el sensor de luz. Si el valor supera 350 (en una escala de 0 a 1023), el circuito está cerrado: hay contacto.
Para tocar la nota usamos la función tone(pin, frecuencia, duración):
- pin: el número del pin del zumbador, el
10. - frecuencia: la nota que suena, en hercios (Hz). Cuanto mayor es, más aguda es la nota. El Do central del piano son
262Hz. - duración: el tiempo que suena la nota, en milisegundos. Pasado ese tiempo, el zumbador se calla solo.
2. Programamos
El programa revisa continuamente la entrada MkMk A0: cuando detecta contacto, el zumbador toca la nota Do central durante 250 milisegundos (un cuarto de segundo).
Escribe el siguiente código en Arduino IDE y cárgalo en la placa:
// Piano de frutas: al tocar la fruta conectada a A0 suena la nota Do
const int entradaMkMk = A0; // entrada MkMk conectada al pin A0
const int zumbador = 10; // zumbador conectado al pin 10
const int umbral = 350; // por encima de este valor hay contacto
const int notaDo = 262; // frecuencia de la nota Do central, en Hz
const int duracion = 250; // duración de la nota, en milisegundos
int valorMkMk = 0; // guarda el valor que lee la entrada (de 0 a 1023)
void setup() {
pinMode(zumbador, OUTPUT); // el zumbador es una salida
}
void loop() {
// lee la entrada MkMk
valorMkMk = analogRead(entradaMkMk);
if (valorMkMk > umbral) {
tone(zumbador, notaDo, duracion); // hay contacto: suena la nota Do
delay(duracion); // espera a que termine la nota
}
}
Cómo funciona:
Las constantes (líneas 3 a 8): guardan los pines de la entrada MkMk y del zumbador, el umbral que indica si hay contacto, y la frecuencia y la duración de la nota.
La variable (línea 10): valorMkMk guarda el valor que leemos en la entrada A0, un número entre 0 y 1023.
La función setup() (líneas 12 a 14): configura el pin del zumbador como salida (OUTPUT). La entrada A0 no necesita pinMode, porque es un pin analógico.
La función loop() (líneas 16 a 25): lee la entrada con analogRead y la compara con el umbral. El operador > («mayor que») comprueba si valorMkMk es más grande que umbral. Si hay contacto, tone toca la nota Do y delay espera a que termine antes de volver a leer la entrada. El programa revisa continuamente:
SI la entrada MkMk A0 detecta contacto (valor mayor que 350):
--> Suena la nota Do central durante 250 milisegundos.
Aquí no hay else: si no hay contacto, no ocurre nada y el programa vuelve a comprobar la entrada. Si mantienes la mano en la fruta, la nota se repite una y otra vez.
3. Mejóralo
Prueba a realizar algunas de las siguientes modificaciones al proyecto:
-
Luz y sonido: Haz que el LED verde se encienda mientras suena la nota y se apague al terminar.
Pista: declara la constante del LED verde (pin
11) y configúralo como salida. Dentro delif, enciéndelo condigitalWriteantes detoney apágalo después deldelay. -
Escala musical: Conecta más frutas a las entradas A1, A2 y A3 con otros cables de cocodrilo y crea un mini teclado de cuatro teclas: Do (
262Hz), Re (294Hz), Mi (330Hz) y Fa (349Hz).Pista: declara una constante para cada entrada y para cada nota, y escribe un
ifpor tecla. Puedes poneranalogReaddirectamente dentro de la condición:if (analogRead(teclaRe) > umbral). -
Teclado de colores: Añade a tu escala el LED RGB para que cada tecla lo encienda de un color distinto: Do en rojo, Re en verde, Mi en azul y Fa en blanco.
Pista: recuerda que el LED RGB tiene el rojo en el pin
9, el verde en el5y el azul en el6, y que con los tres encendidos se ve blanco. En cadaif, enciende el color antes de tocar la nota y, al final deloop(), apaga los tres colores.