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 Dernière révision Les deux révisions suivantes | ||
projets:artdevivre:accueil [2019/12/18 16:49] laurent [Contrôleur MIDI] |
projets:artdevivre:accueil [2019/12/18 17:54] laurent [Photos] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Contrôleur MIDI ====== | ====== Contrôleur MIDI ====== | ||
- | {{ : | + | {{ : |
* Porteur du projet : Réso-nance / Art de Vivre | * Porteur du projet : Réso-nance / Art de Vivre | ||
* Date : décembre / 2019 | * Date : décembre / 2019 | ||
* Licence : libre ! | * Licence : libre ! | ||
- | | + | * Fichiers : {{ : |
- | | + | * Lien : [[https:// |
- | * Lien : lien vers un site éventuellement | + | |
Ligne 14: | Ligne 13: | ||
===== Description ===== | ===== Description ===== | ||
Dans le cadre de la création de son spectacle **Rien n' | Dans le cadre de la création de son spectacle **Rien n' | ||
- | L' | + | L' |
Nous avons conçu autours de ces leviers les pièces nécessaires à leur nouveau fonctionnement (butées avant et arrières et le ressort de rappel, maintien des boutons poussoirs) | Nous avons conçu autours de ces leviers les pièces nécessaires à leur nouveau fonctionnement (butées avant et arrières et le ressort de rappel, maintien des boutons poussoirs) | ||
- | Enfin, un cadre en acier maintenant solidement le tout à été fabriqué en profilé d'acier 4mm soudé. | + | Enfin, un cadre maintenant solidement le tout à été fabriqué en acier soudé. |
===== Matériaux ===== | ===== Matériaux ===== | ||
- | Liste de matériel | + | * Leviers : récupération portuaire issu du stock de [[https:// |
+ | * Socle : profilé en L acier 4mm, boulons en U | ||
+ | * Mécanique : PVC 10mm et PVC 5mm usiné à la fraiseuse numérique | ||
+ | * Électronique : arduino Leonardo, boutons étanches de récupération, | ||
===== code ===== | ===== code ===== | ||
Ligne 26: | Ligne 29: | ||
Pour lire les valeurs brutes et calibrer les entrées analogiques, | Pour lire les valeurs brutes et calibrer les entrées analogiques, | ||
+ | <WRAP center round important 60%> | ||
+ | Les **#define** sont parfois ignorés pour les cartes Leonardo, Due et Micro par le pré-processeur des versions récentes d' | ||
+ | le code téléchargeable en en-tête n'en possède pas pour rester compatible avec toutes les versions d'IDE d' | ||
+ | </ | ||
+ | |||
Le code du projet peut être consulté ci-dessous : | Le code du projet peut être consulté ci-dessous : | ||
++++ arduinoLeonardo.ino| | ++++ arduinoLeonardo.ino| | ||
- | <code cpp>//# | + | <code cpp>//# |
- | #if !defined(SERIAL) | + | #ifndef CALIBRATION |
#include " | #include " | ||
#endif | #endif | ||
Ligne 59: | Ligne 67: | ||
}; | }; | ||
- | digital digitals[] = { {" | + | digital digitals[] = { {" |
- | | + | {" |
+ | | ||
+ | {" | ||
+ | |||
unsigned int digitalsCount = sizeof(digitals)/ | unsigned int digitalsCount = sizeof(digitals)/ | ||
Ligne 73: | Ligne 84: | ||
analogs[i].currentValue = map(analogRead(analogs[i].pin), | analogs[i].currentValue = map(analogRead(analogs[i].pin), | ||
} | } | ||
- | #if defined(SERIAL) | + | #ifdef CALIBRATION |
Serial.begin(115200); | Serial.begin(115200); | ||
delay(100); | delay(100); | ||
Ligne 88: | Ligne 99: | ||
//if (analogs[i].lastValue != analogs[i].currentValue) { | //if (analogs[i].lastValue != analogs[i].currentValue) { | ||
if (analogs[i].lastValue < analogs[i].currentValue - analogs[i].deadBand || analogs[i].lastValue > analogs[i].currentValue + analogs[i].deadBand) { | if (analogs[i].lastValue < analogs[i].currentValue - analogs[i].deadBand || analogs[i].lastValue > analogs[i].currentValue + analogs[i].deadBand) { | ||
- | #if defined(SERIAL) | + | #ifdef CALIBRATION |
Serial.println(analogs[i].name + ": RAW" | Serial.println(analogs[i].name + ": RAW" | ||
// | // | ||
Ligne 106: | Ligne 117: | ||
// input has been pulled LOW | // input has been pulled LOW | ||
if (currentState == LOW && digitals[i].lastState == HIGH && millis() - digitals[i].lastTriggered > digitals[i].debounce) { | if (currentState == LOW && digitals[i].lastState == HIGH && millis() - digitals[i].lastTriggered > digitals[i].debounce) { | ||
- | #if defined(SERIAL) | + | #ifdef CALIBRATION |
Serial.println(digitals[i].name+": | Serial.println(digitals[i].name+": | ||
#else | #else | ||
Ligne 116: | Ligne 127: | ||
// input has been pulled HIGH | // input has been pulled HIGH | ||
if (currentState == HIGH && digitals[i].lastState == LOW && millis() - digitals[i].lastTriggered > digitals[i].debounce) { | if (currentState == HIGH && digitals[i].lastState == LOW && millis() - digitals[i].lastTriggered > digitals[i].debounce) { | ||
- | #if defined(SERIAL) | + | #ifdef CALIBRATION |
Serial.println(digitals[i].name+": | Serial.println(digitals[i].name+": | ||
#else | #else | ||
Ligne 125: | Ligne 136: | ||
digitals[i].lastState = currentState; | digitals[i].lastState = currentState; | ||
} | } | ||
- | #if !defined(SERIAL) | + | #ifndef CALIBRATION |
MidiUSB.flush(); | MidiUSB.flush(); | ||
#endif | #endif | ||
Ligne 131: | Ligne 142: | ||
} | } | ||
- | #if !defined(SERIAL) | + | #ifndef CALIBRATION |
void noteOn(byte pitch, byte velocity) { | void noteOn(byte pitch, byte velocity) { | ||
midiEventPacket_t noteOn = {0x09, 0x90 | CHANNEL, pitch, velocity}; | midiEventPacket_t noteOn = {0x09, 0x90 | CHANNEL, pitch, velocity}; | ||
Ligne 150: | Ligne 161: | ||
++++ | ++++ | ||
===== Photos ===== | ===== Photos ===== | ||
- | Autres photos, galerie, ... | ||
+ | {{gallery>?& |