Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
projets:c12:accueil [2016/10/26 23:47] resonance [Exemples] |
projets:c12:accueil [2016/10/27 00:17] (Version actuelle) resonance [Description] |
||
---|---|---|---|
Ligne 11: | Ligne 11: | ||
{{projets: | {{projets: | ||
- | Contrôleur Midi DIY avec 12 touches. On utilise ici un module très simple | + | Contrôleur Midi DIY avec 12 touches. On utilise ici un module très pratique |
- | ===== Matériaux | + | |
- | * Arduino | + | ===== Matériel |
- | * Module MPR121 | + | * Arduino |
+ | * Module MPR121 | ||
* Scotch aluminium ou cuivre | * Scotch aluminium ou cuivre | ||
- | * Matériels de prototypage : plaque, soudure, fils, connecteurs, | + | * Matériels de prototypage : plaque, soudure, |
+ | * Une planche | ||
+ | |||
+ | |||
+ | |||
+ | |||
===== Tutoriel ===== | ===== Tutoriel ===== | ||
+ | **Connectique** | ||
+ | {{: | ||
+ | <WRAP center round important 80%> | ||
+ | |||
+ | **Souder les composants** | ||
+ | {{: | ||
+ | |||
+ | **Couper les fils et souder les touches de scotch** | ||
+ | {{: | ||
+ | |||
+ | **On peut graver au laser sur le bois les bords des touches** | ||
+ | {{: | ||
+ | |||
+ | **Ta da !** | ||
+ | {{: | ||
+ | |||
+ | |||
+ | ==== Code ==== | ||
+ | * Convertir une UNO ou une Leonardo en contrôleur Midi comme expliquée ici sur la page [[logiciels: | ||
+ | * Télécharger et installer la bibliothèque permettant de communiquer avec le MP121 : [[https:// | ||
+ | * Téléverser le code Leonardo (pour une UNO il suffit de télécharger la bibliothèque MIDI et de remplacer les " | ||
+ | |||
+ | ++++ Code C12-Leonardo | | ||
+ | <code cpp> | ||
+ | /* | ||
+ | * Midi Controller with 12 capacitive sensors | ||
+ | * Hardware : Arduino Leonardo (TeeOnArdu) + MPR121 | ||
+ | * | ||
+ | * See more : http:// | ||
+ | | ||
+ | |||
+ | #include < | ||
+ | #include " | ||
+ | |||
+ | // Setup | ||
+ | Adafruit_MPR121 cap = Adafruit_MPR121(); | ||
+ | int touchCtl[] = {6, | ||
+ | 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)) ) { | ||
+ | | ||
+ | } | ||
+ | // if it *was* touched and now *isnt*, alert! | ||
+ | if (!(currtouched & _BV(i)) && (lasttouched & _BV(i)) ) { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // 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. | ||
+ | {{: | ||
===== Exemples ===== | ===== Exemples ===== | ||
{{youtube> | {{youtube> | ||
- | {{: | + | [[https:// |
- | https:// | + | [[https:// |
===== Photos ===== | ===== Photos ===== | ||