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 | ||
+ | } | ||
+ | }</ |