É um módulo que controla sensores de toque. Ele é impulsionado por uma interface I2C que permite o controle de até doze eletrodos capacitivos individuais. Como o módulo opera somente em 3V, existe um regulador interno de energia de 3V para que seja seguro usá-lo em qualquer placa Arduino (3V ou 5V). Ele também possui um LED na linha IRQ para que pisque quando os toques forem detectados, tornando a depuração visual um pouco mais fácil.
Especificações
Modelo: MPR121
Interface: I²C
Tipo de Sensor: Toque
Faixa de Detecção: 12 Botões
Tensão de Operação: 3.3 V ~ 5 V
Projeto(s) relacionado(s)
Banana drum machine
Projeto que utiliza bananas como material condutivo, placa MPR121 e Arduino Uno para tocar música.
Conecte SCL ao pino SCL de dados I2C (UNO pino A5, Mega pino digital 21)
Conecte SDA ao pino SDA de dados I2C (UNO pino A4, Mega pino digital 20)
// Projeto: Sensor - teclado musical
// Autor: André Silveira
// Data: 07/05/2018
#include <Wire.h>
#include "Adafruit_MPR121.h"
Adafruit_MPR121 cap = Adafruit_MPR121();
int buzzer = 10; // conectar um buzzer ao pino 10
int tecla = 0;
int nota = 0;
void setup() {
pinMode(buzzer,OUTPUT); //Pino do buzzer
Serial.begin(9600);
// I2C 7-bit address 0x5A é padrão (pode ser setado para 0x5B, 0x5C or 0x5D)
if (!cap.begin(0x5A)) {
Serial.println("Sensor não Encontrado");
while (1);
}
Serial.println("Sensor encontrado");
}
void loop() {
tecla = cap.touched();
for (uint8_t i=0; i<12; i++) {
if (tecla & _BV(i)) {
nota = 262+(i*32); // --- DEFINE A NOTA MUSICAL Serial.print(i); Serial.print(" - Nota tocada: "); Serial.println(nota); tone(buzzer,nota,200);
}
}
}
Projeto player de música com teclado
O projeto utiliza os módulos Touch Sensor 12 Key, Player - WTV020M01, Amplificador de Áudio LM386 e um alto-falante para acionar músicas que estão armazenados em um Cartão Micro SD de até 2GB.
Os arquivos de áudio armazenados no cartão estão no formado AD4.
// Projeto: Modulo WTV020M01 (WTV020-SD) Executa música
// Autor: André Silveira
// Data: 15/05/2018
#include <Wire.h>
#include <Wtv020sd16p.h>
#include <Adafruit_MPR121.h>
int resetPin = 4; // Pino Reset (RESET)
int clockPin = 5; // Pino clock (P04/CLK)
int dataPin = 6; // Pino data (P05/DI)
int busyPin = 7; // Pino busy (P06/BUSY)
int tecla = 0; // Tecla apertada
int volume = 8; // Volume do aparelho
int musica = 0; // Musica tocada
Adafruit_MPR121 teclado = Adafruit_MPR121(); // Cria instância da Classe Adafruit_MPR121
Wtv020sd16p tocador(resetPin,clockPin,dataPin,busyPin); // Cria instância da Classe Wtv020sd16p
void setup() {
Serial.begin(9600);
tocador.reset(); // Initializa o módulo Wtv020sd16p
tocador.setVolume(volume); // Configura volume do módulo Wtv020sd16p
if (!teclado.begin(0x5A)) { // Localiza teclado do módulo Adafruit_MPR121
Serial.println("Sensor não Encontrado");
while (1);
}
Serial.println("Sensor encontrado");
}
void loop() {
tecla = teclado.touched(); // Verifica tecla apertada
switch (tecla) {
case 0: // MUSICA 0
musica=0;
TocaAudio(0);
break;
case 1: // VOLUME AUMENTA
volume=volume+1;
if (volume > 8) {
volume = 8;
}
tocador.setVolume(volume);
break;
case 2: // MUSICA 1
musica=1;
TocaAudio(1);
break;
case 3: // VOLUME DIMINUI
volume=volume-1;
if (volume < 0) {
volume = 0;
}
tocador.setVolume(volume);
break;
case 4: // MUSICA 2
musica=2;
TocaAudio(2);
break;
case 5: // VOLTAR
musica = musica -1;
if (musica < 0) {
musica = 0;
}
TocaAudio(musica);
break;
case 6: // MUSICA 3
musica=3;
TocaAudio(3);
break;
case 7: // PLAY
tocador.playVoice(musica);
break;
case 8: // MUSICA 4
musica=4;
TocaAudio(4);
break;
case 9: // STOP
tocador.stopVoice();
break;
case 10: // MUSICA 5
musica=5;
TocaAudio(5);
break;
case 11:
musica = musica +1;
if (musica > 5) {
musica = 5;
}
TocaAudio(musica);
break;
default:
break;
}
delay (5000);
}
void TocaAudio(int i) {
Serial.println("tocando: ");
Serial.print(i);
tocador.playVoice(2);
tocador.asyncPlayVoice(i);
}