====== C12 ======
* Porteur du projet : Jérôme [[:user:resonance|resonance]]
* Date : 26/10/2016
* Licence : [[http://creativecommons.org/licenses/by-sa/3.0/legalcode|CC-by-sa-3.0]]
* Description : Contrôleur Midi DIY avec 12 touches
* Fichiers sources : {{:projets:c12:c12_files.zip|}}
{{tag>midi, arduino, diy, controleur}}
===== Description =====
{{projets:c12:accueil:dsc_6741.jpg?800|C12}}
Contrôleur Midi DIY avec 12 touches. On utilise ici un module très pratique à connecter à l'Arduino, le module MPR121 qui permet de capter des zones par effet capacitif. Grâce à cet effet, n'importe quelle matière un peu conductrice peut devenir un bouton par exemple. C'est l'exemple connu des interfaces Makey Makey. On a ainsi un contrôleur MIDI vraiment pas cher et très personnalisable.
===== Matériel =====
* Arduino
* Module MPR121
* Scotch aluminium ou cuivre
* Matériels de prototypage : plaque, soudure, des fils, connecteurs, ...
* Une planche
===== Tutoriel =====
**Connectique**
{{:projets:c12:mpr12-wiring.png?600|}}
Attention, sur une Leonardo les pins SDA et SCL sont respectivement les sorties numériques D2 et D3, et non pas A4 et A5 comme pour une UNO.
**Souder les composants**
{{:projets:c12:dsc_6736.jpg?600|}}
**Couper les fils et souder les touches de scotch**
{{:projets:c12:dsc_6737.jpg?600|}}
**On peut graver au laser sur le bois les bords des touches**
{{:projets:c12:c12-layout.png?600|}}
**Ta da !**
{{:projets:c12:dsc_6743.jpg?600|}}
==== Code ====
* Convertir une UNO ou une Leonardo en contrôleur Midi comme expliquée ici sur la page [[logiciels:arduino-midi:accueil|Arduino et MIDI]]
* Télécharger et installer la bibliothèque permettant de communiquer avec le MP121 : [[https://github.com/adafruit/Adafruit_MPR121|Adafruit_MPR121]]
* Téléverser le code Leonardo (pour une UNO il suffit de télécharger la bibliothèque MIDI et de remplacer les "usbMIDI" par "MIDI")
++++ Code C12-Leonardo |
/*
* Midi Controller with 12 capacitive sensors
* Hardware : Arduino Leonardo (TeeOnArdu) + MPR121
*
* See more : http://reso-nance.org/wiki/projet/c12/
*/
#include
#include "Adafruit_MPR121.h"
// Setup
Adafruit_MPR121 cap = Adafruit_MPR121();
int touchCtl[] = {6,11,12,3,4,9,10,1,2,7,8,5}; // midi note in mapping
const int channel = 1; // midi channel
uint16_t lasttouched = 0;
uint16_t currtouched = 0;
elapsedMillis msec = 0;
void setup() {
if (!cap.begin(0x5A)) {
while (1);
}
}
void loop() {
if (msec >= 20) { // sampling rate
msec = 0;
currtouched = cap.touched();
for (uint8_t i=0; i<12; i++) {
// it if *is* touched and *wasnt* touched before, alert!
if ((currtouched & _BV(i)) && !(lasttouched & _BV(i)) ) {
usbMIDI.sendControlChange(touchCtl[i], 127, channel);
}
// if it *was* touched and now *isnt*, alert!
if (!(currtouched & _BV(i)) && (lasttouched & _BV(i)) ) {
usbMIDI.sendControlChange(touchCtl[i], 0, channel);
}
}
// reset our state
lasttouched = currtouched;
}
while (usbMIDI.read()) {
// ignore incoming messages
}
}
++++
===== Utilisation =====
Un exemple de réception dans Pure Data. Les capteurs envoient le nombre 127 s'ils sont touchés, sinon c'est 0.
{{:projets:c12:c12-pd.png|}}
===== Exemples =====
{{youtube>DxWZUTnEvhs?medium}}
[[https://learn.adafruit.com/metal-inlay-capacitive-touch-buttons|{{:projets:c12:screen-shot-2015-03-13-at-11.10.05-am.png?400|}}]]
[[https://learn.adafruit.com/metal-inlay-capacitive-touch-buttons|metal-inlay-capacitive-touch-buttons]]
===== Photos =====
{{gallery>?&crop&lightbox}}