====== 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}}