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 | ||
|
logiciels:arduino-midi:accueil [2016/06/17 01:52] resonance [Arduino et MIDI] |
logiciels:arduino-midi:accueil [2016/10/25 19:04] (Version actuelle) resonance [1 - Installer TeensyDuino] |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Arduino et MIDI ====== | ====== Arduino et MIDI ====== | ||
| - | Cette page est destinée à faire comprendre comment faire apparaître la carte Arduino comme un appareil midi via USB. C'est très utile pour éviter | + | Cette page est destinée à faire comprendre comment faire apparaître la carte Arduino comme un appareil midi via USB. Cette fonctionnalité |
| - | Cette technique fonctionne avec les cartes | + | Seules |
| + | |||
| + | ===== Arduino Uno Midi ===== | ||
| Ressources : | Ressources : | ||
| * https:// | * https:// | ||
| + | * http:// | ||
| * http:// | * http:// | ||
| * https:// | * https:// | ||
| Ligne 12: | Ligne 15: | ||
| * https:// | * https:// | ||
| - | ===== ATMEGA16U2 ===== | + | ==== 1 - DFU-programmer |
| - | ==== DFU-PROGRAMMER ==== | + | {{: |
| - | Sur une Carte Arduino UNO rev.3, il s'agit du ATMEGA16U2. Pour reprogrammer cette puce, il faut installer un programmeur, | + | |
| - | Sur UBUNTU/ | + | Sur les cartes Arduino Uno et Mega, il faut pouvoir reprogrammer le micro-contrôleur ATMEGA16U2. Pour cela il faut d' |
| + | |||
| + | Sur UBUNTU/ | ||
| < | < | ||
| - | Mais la version semble ancienne (0.6.2) et ne pas prendre en compte la cible recherchée " | + | Mais la version semble ancienne (0.6.2) et ne pas prendre en compte la cible recherchée |
| - | < | + | < |
| - | dfu-programmer --targets</ | + | dfu-programmer --version // pour vérifier la version |
| + | dfu-programmer --targets | ||
| + | </ | ||
| - | Pour mettre à jour, télécharger | + | Il est donc nécessaire d' |
| < | < | ||
| cd dfu-programmer-0.7.2/ | cd dfu-programmer-0.7.2/ | ||
| Ligne 33: | Ligne 39: | ||
| </ | </ | ||
| - | La bonne version (0.7.2) et enfin dans la liste des cibles (targets), nous avons bien " | + | Nous avons maintenant une version |
| < | < | ||
| dfu-programmer --targets</ | dfu-programmer --targets</ | ||
| - | ==== FLASHER | + | ==== 2 - Flash atmega16u2 |
| - | Pour reprogrammer la puce (flash) : | + | Pour reprogrammer la puce, on parle de //flash//. |
| - | **1-Reset**\\ | + | <WRAP center round important 60%> |
| - | Il faut d' | + | Attention, pour les cartes UNO rev.1 il faut souder une résistance comme sur cette [[https:// |
| + | </ | ||
| + | |||
| + | |||
| + | **1 - Reset**\\ | ||
| + | Il faut d' | ||
| {{: | {{: | ||
| Ligne 48: | Ligne 59: | ||
| - | **2-Erase**\\ | + | **2 - Erase**\\ |
| Après avoir enlever le //jumper//. Vous pouvez entrer cette commande pour effacer le programme de la puce | Après avoir enlever le //jumper//. Vous pouvez entrer cette commande pour effacer le programme de la puce | ||
| < | < | ||
| Ligne 55: | Ligne 66: | ||
| </ | </ | ||
| - | **3-Remettre le programme par défaut**\\ | + | **3 - Remettre le programme par défaut**\\ |
| - | Aller dans le répertoire de votre logiciel Arduino | + | Ce n'est pas notre intention ici, mais vous pouvez revenir en arrière et remettre le programme par défaut, celui qui fait apparaître l' |
| - | < | + | |
| + | Aller dans le répertoire de votre logiciel Arduino | ||
| + | < | ||
| Vous trouverez un fichier " | Vous trouverez un fichier " | ||
| - | < | + | < |
| Checking memory from 0x0 to 0xFFF... | Checking memory from 0x0 to 0xFFF... | ||
| 0% 100% Programming 0x1000 bytes... | 0% 100% Programming 0x1000 bytes... | ||
| Ligne 70: | Ligne 83: | ||
| </ | </ | ||
| + | Vous devriez pouvoir réutiliser l' | ||
| - | ===== MIDI FIRMWARE===== | + | ==== 3 - Flash atmega16u2 avec le Midi ==== |
| - | ==== Flash ==== | + | |
| - | | + | - **Reset** de l' |
| - | - Reset de l' | + | - **Erase** |
| - | - Erase | + | - **Flash** du firmware Midi : **sudo dfu-programmer atmega16u2 flash mocolufa/ |
| - | - Flash du firmware Midi : sudo dfu-programmer atmega16u2 flash mocolufa/ | + | < |
| + | $ sudo dfu-programmer atmega16u2 flash dualMoco.hex | ||
| + | Checking memory from 0x0 to 0x167F... | ||
| + | 0% 100% Programming 0x1680 bytes... | ||
| + | [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | ||
| + | 0% 100% Reading 0x3000 bytes... | ||
| + | [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | ||
| + | Validating... | ||
| + | 0x1680 bytes written into 0x3000 bytes memory (46.88%). | ||
| + | </ | ||
| - | Ce firmware permet de basculer en mode MIDI (par défaut) ou en mode //serial// en connectant les pins 4 et 6 avec un //jumper//, comme sur cette photo. | + | C'est ce firmware |
| {{: | {{: | ||
| - | Vous pouvez ainsi assez facilement programmer l' | + | Car vous ne pouvez pas reprogrammer l' |
| - | ==== Programme Midi ==== | + | En tapant la commande " |
| + | {{: | ||
| + | |||
| + | ==== 4 - Programme | ||
| - Télécharger : https:// | - Télécharger : https:// | ||
| - | - Installer la librairie | + | - Installer la bibliothèque **MIDI** |
| - | - Passer l' | + | - Passer l' |
| - | - Téléverser un exemple de MIDI | + | - Téléverser un exemple de la bibliothèque |
| - | - Passer l' | + | - Passer l' |
| - Visualiser le résultat sur un logiciel Midi | - Visualiser le résultat sur un logiciel Midi | ||
| + | ===== Arduino Leonardo Midi ===== | ||
| + | |||
| + | La méthode est un peu plus simple car nous n' | ||
| + | |||
| + | Ressources : | ||
| + | * https:// | ||
| + | * http:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | ==== 1 - Installer TeensyDuino | ||
| + | |||
| + | Respectez la méthode d' | ||
| + | |||
| + | Attention, la version de TeensyDuino doit être compatible avec votre version d' | ||
| + | ==== 2 - Installer de nouvelles cartes ==== | ||
| + | Avec la nouvelle version d' | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Ensuite, nous allons installer le paquet **Adafruit TeeOnArdu**, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | ==== 3 - Sélectionner la bonne carte ==== | ||
| + | - " | ||
| + | - "USB Type > Midi" | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | ==== 4 - Programme Arduino ==== | ||
| + | N' | ||
| + | |||
| + | |||
| + | <WRAP center round info 60%> Une fois le programme téléversé dans la carte Arduino, il faudra appuyer sur le bouton Reset de la carte pour la reprogrammer, | ||
| + | |||
| + | |||
| + | ++++ Code Midi Leonardo et Teensy | | ||
| + | <code cpp>// the MIDI channel number to send messages | ||
| + | const int channel = 4; | ||
| + | |||
| + | // the MIDI continuous controller for each analog input | ||
| + | const int controllerA0 = 0; | ||
| + | const int controllerA1 = 1; | ||
| + | const int controllerA2 = 2; | ||
| + | const int controllerA3 = 3; | ||
| + | const int controllerA4 = 4; | ||
| + | const int controllerA5 = 5; | ||
| + | |||
| + | // store previously sent values, to detect changes | ||
| + | int previousA0 = -1; | ||
| + | int previousA1 = -1; | ||
| + | int previousA2 = -1; | ||
| + | int previousA3 = -1; | ||
| + | int previousA4 = -1; | ||
| + | int previousA5 = -1; | ||
| + | elapsedMillis msec = 0; | ||
| + | |||
| + | void setup() { | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | // only check the analog inputs 50 times per second, | ||
| + | // to prevent a flood of MIDI messages | ||
| + | if (msec >= 20) { | ||
| + | msec = 0; | ||
| + | int n0 = analogRead(A0) / 8; | ||
| + | int n1 = analogRead(A1) / 8; | ||
| + | int n2 = analogRead(A2) / 8; | ||
| + | int n3 = analogRead(A3) / 8; | ||
| + | int n4 = analogRead(A4) / 8; | ||
| + | int n5 = analogRead(A5) / 8; | ||
| + | // only transmit MIDI messages if analog input changed | ||
| + | if (n0 != previousA0) { | ||
| + | usbMIDI.sendControlChange(controllerA0, | ||
| + | previousA0 = n0; | ||
| + | } | ||
| + | if (n1 != previousA1) { | ||
| + | usbMIDI.sendControlChange(controllerA1, | ||
| + | previousA1 = n1; | ||
| + | } | ||
| + | if (n2 != previousA2) { | ||
| + | usbMIDI.sendControlChange(controllerA2, | ||
| + | previousA2 = n2; | ||
| + | } | ||
| + | if (n3 != previousA3) { | ||
| + | usbMIDI.sendControlChange(controllerA3, | ||
| + | previousA3 = n3; | ||
| + | } | ||
| + | if (n4 != previousA4) { | ||
| + | usbMIDI.sendControlChange(controllerA4, | ||
| + | previousA4 = n4; | ||
| + | } | ||
| + | if (n5 != previousA5) { | ||
| + | usbMIDI.sendControlChange(controllerA5, | ||
| + | previousA5 = n5; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // MIDI Controllers should discard incoming MIDI messages. | ||
| + | // http:// | ||
| + | while (usbMIDI.read()) { | ||
| + | // ignore incoming messages | ||
| + | } | ||
| + | }</ | ||