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:malinette:hardware:accueil [2016/06/24 23:08] resonance [Boîte pédagogique v1] |
projets:malinette:hardware:accueil [2016/12/13 16:07] (Version actuelle) resonance [Code] |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Malinette Hardware ====== | ====== Malinette Hardware ====== | ||
| - | ===== Boîtier | + | ===== Malinette v1 - pédagogique |
| - | ==== Boîte USB ==== | + | ==== Boîtier |
| - | * Fichiers de fabrication (contreplaqué de 3mm) : | + | * Voir la page [[projets:malinette-laserbox: |
| + | {{:projets:boite-malinette-laser: | ||
| + | ==== Électronique ==== | ||
| + | Arduino Roméo v2, plaque à essai et capteurs/actionneurs DfRobot | ||
| - | {{: | + | ==== Code ==== |
| - | {{:projets:malinette:hardware: | + | Installer Arduino et téléverser l' |
| - | {{: | + | ===== Malinette v2 - USB/MIDI - Arduino ===== |
| + | Une interface physique et électronique qui communique en MIDI et permet la connection de capteurs et d' | ||
| - | Export d' | ||
| - | {{: | ||
| - | Réglages RdWorks pour la découpe laser | + | {{: |
| + | |||
| + | ==== Boîtier ==== | ||
| + | * Fichiers de fabrication (découpe laser avec du contreplaqué de 3mm) : | ||
| + | {{: | ||
| + | {{: | ||
| + | {{: | ||
| + | // | ||
| + | // | ||
| + | |||
| + | Export d' | ||
| + | {{: | ||
| + | |||
| + | Réglages | ||
| {{: | {{: | ||
| - | ==== Boîte pédagogique v1 ==== | ||
| - | * Voir la page [[projets: | ||
| - | {{: | ||
| - | ===== Électronique | + | ==== Électronique ==== |
| - | ==== Arduino USB Shield ==== | + | * Fichiers |
| - | Un shield pour utiliser des connecteur USB (comme la brutbox). | + | |
| - | * Fichiers KiCad : {{: | + | |
| - | {{: | + | Carte double face avec connecteurs USB. Par défaut 4 capteurs analogiques et 12 sorties sont possibles. En plaçant les jumpers vers le bas, il est possible d' |
| - | {{: | + | |
| - | {{: | + | {{: |
| + | {{: | ||
| + | {{: | ||
| // | // | ||
| // | // | ||
| - | ==== Version Teensy ==== | ||
| - | L' | ||
| - | * [[projets: | + | ==== Code ==== |
| - | + | ||
| - | ===== Firmware ===== | + | |
| - | + | ||
| - | ==== Arduino Malinette Midi ==== | + | |
| * Fichiers (Arduino et Pure Data) : {{: | * Fichiers (Arduino et Pure Data) : {{: | ||
| + | |||
| + | L' | ||
| {{: | {{: | ||
| - | Pour installer le firmware Midi, voir la page consacrée à [[logiciels: | ||
| ++++ Code Arduino Uno : malinette_midi_uno.ino | | ++++ Code Arduino Uno : malinette_midi_uno.ino | | ||
| Ligne 56: | Ligne 63: | ||
| * Reso-nance Numérique | * Reso-nance Numérique | ||
| * 24/06/16 | * 24/06/16 | ||
| + | | ||
| + | * modif : 13/12/2016 | ||
| */ | */ | ||
| Ligne 68: | Ligne 77: | ||
| const int offsetAna = 20; // > ctlout 20 to control ana | const int offsetAna = 20; // > ctlout 20 to control ana | ||
| - | const int offsetOut = 30; // > ctlout 30 to control | + | const int offsetOut = 30; // > ctlout 30 to control |
| const long interval = 30; // sampling rate | const long interval = 30; // sampling rate | ||
| // SENSORS | // SENSORS | ||
| - | int anaState[anaNb]; | + | int anaState[anaNb]; |
| int anaValues[anaNb]; | int anaValues[anaNb]; | ||
| int anaLastValues[anaNb]; | int anaLastValues[anaNb]; | ||
| Ligne 89: | Ligne 98: | ||
| { | { | ||
| // Setup output pins (start from 2) | // Setup output pins (start from 2) | ||
| - | for (int i = 2; i < (outNb - 2); i++) { | + | for (int i = 2; i < outNb; i++) { |
| pinMode(i, OUTPUT); | pinMode(i, OUTPUT); | ||
| } | } | ||
| Ligne 182: | Ligne 191: | ||
| * Reso-nance Numérique | * Reso-nance Numérique | ||
| * 24/06/16 | * 24/06/16 | ||
| + | | ||
| + | * modif : 13/12/16 | ||
| */ | */ | ||
| Ligne 211: | Ligne 222: | ||
| { | { | ||
| // Setup output pins (start from 2) | // Setup output pins (start from 2) | ||
| - | for (int i = 2; i < (outNb - 2); i++) { | + | for (int i = 2; i < outNb; i++) { |
| pinMode(i, OUTPUT); | pinMode(i, OUTPUT); | ||
| } | } | ||
| Ligne 295: | Ligne 306: | ||
| ++++ | ++++ | ||
| - | ==== Teensy | + | ===== Malinette |
| - | * Fichiers (Arduino et Pure Data) : {{: | + | |
| - | **Pure Data** | + | ==== Boîtier ==== |
| - | {{: | + | En cours |
| + | ==== Électronique ==== | ||
| + | * Ancienne version : [[projets: | ||
| - | ++++ Code Arduino : teensy_malinette.ino | | + | ==== Code ==== |
| - | <code cpp> | + | * Ancienne version |
| - | // TEENSY - MALINETTE | + | |
| - | // Control inputs and outputs with MIDI messages | + | |
| - | // 30/05/2015 - http:// | + | |
| - | + | ||
| - | #include < | + | |
| - | + | ||
| - | // Pins | + | |
| - | int anaPins[] | + | |
| - | int outPins[] | + | |
| - | const int anaNb = 6; // number of inputs | + | |
| - | const int outNb = 2; // number of outputs | + | |
| - | + | ||
| - | // Midi Mapping | + | |
| - | int anaCtl[] | + | |
| - | int outCtl[] | + | |
| - | int anaStateCtl[] | + | |
| - | int outStateCtl[] | + | |
| - | + | ||
| - | // Ana Sensors | + | |
| - | int anaState[anaNb]; | + | |
| - | const int channel = 1; | + | |
| - | int anaValues[anaNb]; // current analog values | + | |
| - | int anaLastValues[anaNb]; // previous analog values | + | |
| - | + | ||
| - | // Sampling rate | + | |
| - | const long interval = 30; | + | |
| - | unsigned long currentMillis; | + | |
| - | unsigned long previousMillis = 0; | + | |
| - | + | ||
| - | // Output | + | |
| - | Servo servo0, | + | |
| - | int outState[outNb]; | + | |
| - | + | ||
| - | void setup() { | + | |
| - | for (int i = 0; i < outNb; i++) { | + | |
| - | pinMode(outPins[i], | + | |
| - | } | + | |
| - | usbMIDI.setHandleControlChange(OnControlChange); | + | |
| - | } | + | |
| - | + | ||
| - | void loop() { | + | |
| - | currentMillis = millis(); | + | |
| - | if(currentMillis | + | |
| - | previousMillis = currentMillis; | + | |
| - | for (int i = 0; i < anaNb; i++) { | + | |
| - | if(anaState[i] == 1) { // check first if the sensor is on | + | |
| - | anaValues[i] = analogRead(anaPins[i]) | + | |
| - | if (anaValues[i] != anaLastValues[i]) { | + | |
| - | usbMIDI.sendControlChange(anaCtl[i], | + | |
| - | anaLastValues[i] = anaValues[i]; | + | |
| - | } | + | |
| - | } | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | //Discard incoming MIDI messages. | + | |
| - | while (usbMIDI.read()) { | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | // Receive Midi Control Change | + | |
| - | void OnControlChange(byte channel, byte control, byte value) { | + | |
| - | + | ||
| - | // Analog sensors on/off | + | |
| - | if (control == anaStateCtl[0] ) {anaState[-value+(anaNb-1)] = 0;} | + | |
| - | else if (control == anaStateCtl[1] ) {anaState[-value+(anaNb-1)] = 1;} | + | |
| - | + | ||
| - | // Set Outputs Values | + | |
| - | else if (control == outCtl[0] ) {setOutValue(0, | + | |
| - | else if (control == outCtl[1] ) {setOutValue(1, | + | |
| - | + | ||
| - | // Set Outputs States (none, digital, pwm, servo) | + | |
| - | else if (control == outStateCtl[0] ) {setOutState(0, | + | |
| - | else if (control == outStateCtl[1] ) {setOutState(1, | + | |
| - | } | + | |
| - | + | ||
| - | // Set outputs | + | |
| - | void setOutValue(int outId, int value, Servo servo) { | + | |
| - | | + | |
| - | if( state == 1) { // digital mode | + | |
| - | | + | |
| - | | + | |
| - | } else if( state == 2){ // pwm mode | + | |
| - | analogWrite(outPins[outId], | + | |
| - | } else if( state == 3){ // servo mode | + | |
| - | if (servo.attached()) {servo.write(map(value, | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | void setOutState(int outId, int value, Servo servo) { | + | |
| - | // Check last state to turn off | + | |
| - | if ( outState[outId] == 1) {digitalWrite(outPins[outId], | + | |
| - | else if ( outState[outId] == 2) {analogWrite(outPins[outId], | + | |
| - | + | ||
| - | if (value == 3) { | + | |
| - | if (!servo.attached()) {servo.attach(outPins[outId]); | + | |
| - | } else { | + | |
| - | if (servo.attached()) {servo.detach(); | + | |
| - | } | + | |
| - | + | ||
| - | outState[outId] = value; | + | |
| - | } | + | |
| - | </ | + | |
| - | ++++ | + | |