WhatsApp / Celular
+3116183653
0Item(s)

No hay artículos en su carrito de compras.

Haciendo Música MPR121

Product was successfully added to your shopping cart.

Haciendo Música MPR121

 INTRODUCCIÓN

En algún momento hemos pensado hacer algo diferente en el mundo de  la electrónica y acá te traemos algo divertido para ser desarrollado en familia. En este tutorial realizaremos música emulando tener un piano a nuestra mano por medio de diferentes objetos y gracias a una herramienta online llamada VirtualPiano.

Nuestro proyecto quedará así: 

 


 Materiales

  • Arduino Pro Micro  o Leonardo
  • Pack x 10 cables Dupont M-H
  • Pack x 10 cables Dupont M-M
  • Regulador de Voltaje LM17

 Desarrollo

Conectaremos varios objetos conductores de electricidad a cada canal del MPR121, cada que toques alguno de estos elementos el Arduino emulará que presionaste una tecla y esto se convertirá en sonido gracias a una herramienta online llamada VirtualPiano.

¿Mucha información? No te preocupes, te explicaremos su funcionamiento y cada herramienta a utilizar. 

 Sensor Capacitivo táctil MPR121

 

 

 

En el tutorial anterior conocimos el funcionamiento del controlador táctil capacitivo MPR121, el cual puede controlar hasta 12 señales de entrada como electrodos,  de los cuales 8 pueden ser utilizados como salida para diodos LED o propósitos GPIO. Este controlador es una alternativa al famoso Makey Makey, donde puedes hacer música con infinidad de objetos como bananos, naranjas, vasos, cucharas, entre otros. Puedes encontrar dicho tutorial aca:  link enlace. 

Cuando conectas un objeto conductor de electricidad a uno de los canales del controlador, este mide la capacitancia y determina si lo has tocado realmente o hace parte de un ruido.

 Arduino Pro Micro


Una vez que tenemos la certeza de que la señal de entrada es la correcta necesitamos convertirla en una acción deseada o señal de salida, por lo que haremos uso del microcontrolador Arduino Pro Micro, este se encargará de leer los datos del MPR121 y tomará decisiones en base a nuestras reglas de juego.

El Arduino Pro Micro, Leonardo o DUE tienen emulador de teclado y mouse, es decir podemos dar una instrucción para que el Arduino haga como si nosotros hubiésemos presionado alguna tecla, por ejemplo la A, Tabulación, Enter, entre otros.

 VirtualPiano

VirtualPiano es una plataforma gratuita online donde puedes tener una gran experiencia tocando el Piano en tu computador. Puedes aprender a tocar diferentes partituras que están disponibles en su portal y su uso es muy sencillo, cada tecla corresponde a una nota musical.

Entonces cada que toques un elemento el Arduino Pro Micro emulará una tecla que a su vez se convertirá en una nota musical gracias a VirtualPiano, para que esto funcione debes tener abierta su página web.

Conexionado

 

 

 

  • Nota 1. Conecta las frutas, el limón, la papa y el objeto a los canales 0 al 6 respectivamente por medio de cables Hembra Macho.
  • Nota 2. Mueve el potenciómetro del regulador y prueba que la salida del regulador sean 3.3v necesarios para alimentar el módulo MPR121.

 

 

Una vez tengas todo bien instalado, conecta el cable usb a tu computador y sube el programa a la placa Arduino.

   Subir Sketch

 /*www.ardobot.com

 * 
 * Código Adaptado para trabajar con el Arduino Pro Micro
 * como emulador de teclado para jugar con Piano Online
 * Puedes hacer música con frutas, tubérculos, objetos
 * por medio del controlador capacitivo MPR121 
 * Por Javier Madrigal Correa
 */

/*********************************************************
Designed specifically to work with the MPR121 Breakout in the Adafruit shop 
  ----> https://www.adafruit.com/products/

Written by Limor Fried/Ladyada for Adafruit Industries.  
BSD license, all text above must be included in any redistribution
**********************************************************/

#include <Wire.h>
#include "Keyboard.h"
#include "Adafruit_MPR121.h"

//INICIALIZACIÓN DEL SENSOR
Adafruit_MPR121 cap = Adafruit_MPR121();

// Memoria para ultimo pin tocado
uint16_t lasttouched = 0;
uint16_t currtouched = 0;
int counter = 0;   


void setup() {
  while (!Serial);        //necesario para el arduino pro micro y leonardo

  Serial.begin(9600);
  Serial.println("Hagamos música con frutas!!!"); 
  Serial.println("www.ardobot.com"); 
  
  // Dirección i2c por defecto
  if (!cap.begin(0x5A)) {
    Serial.println("MPR121 no funciona, Revisa conexiones");
    while (1);
  }
  Serial.println("MPR121 funciona!");
  Keyboard.begin();
}

void loop() {

     counter++;

  // Get the currently touched pads
  currtouched = cap.touched();
  
  for (int i=0; i<12; i++) {
    
 //Es tocado algun electrodo
    if ((currtouched & _BV(i)) && !(lasttouched & _BV(i)) ) {
      Serial.print(i); Serial.println(" touched");
      switch(i){
        case 0: Keyboard.print("a");   break;
        case 1: Keyboard.print("l");   break;
        case 2: Keyboard.print("b");   break;
        case 3: Keyboard.print("c");   break;
        case 4: Keyboard.print("d");   break;
        case 5: Keyboard.print("e");   break;
        case 6: Keyboard.print("f");   break;
        case 7: Keyboard.print("g");   break;
        case 8: Keyboard.print("h");   break;
        case 9: Keyboard.print("i");   break;
        case 10: Keyboard.print("j");   break;
        case 11: Keyboard.print("k");   break;
        
        default:break;
        
        }
      
    }
 //Cuando es liberado algún electrodo
    if (!(currtouched & _BV(i)) && (lasttouched & _BV(i)) ) {
      Serial.print(i); Serial.println(" released");
      //dc1eKeyboard.print(1);
    }
  }



  lasttouched = currtouched;

  return;
  
  // put 
  delay(50);
    
}