Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


projets:artdevivre:accueil

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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:53]
laurent [Description]
projets:artdevivre:accueil [2019/12/18 17:54]
laurent [Photos]
Ligne 4: Ligne 4:
   * Date : décembre / 2019   * Date : décembre / 2019
   * Licence : libre !   * Licence : libre !
-  * Contexte :  +  * Fichiers : {{ :projets:artdevivre:piano.zip |code Arduino}}  
-  * Fichiers : code Arduino  +  * Lien : [[https://www.lartdevivre.org/165-rien-n-arrive-et-ca-arrive-souvent|page du spectacle]]
-  * Lien : lien vers un site éventuellement+
  
  
Ligne 14: Ligne 13:
 ===== Description ===== ===== Description =====
 Dans le cadre de la création de son spectacle **Rien n'arrive ! Et ça arrive souvent !**, la compagnie [[https://www.lartdevivre.org/|l'Art de Vivre]] nous a confié la fabrication d'un contrôleur MIDI utilisant des leviers pour déclencher des sons. Dans le cadre de la création de son spectacle **Rien n'arrive ! Et ça arrive souvent !**, la compagnie [[https://www.lartdevivre.org/|l'Art de Vivre]] nous a confié la fabrication d'un contrôleur MIDI utilisant des leviers pour déclencher des sons.
-L'association [[https://laissezpasser.fr/|laisser passer]] nous a permis d'extraire de leur matériaux portuaires à recycler huit leviers articulés en aluminium qui seront la base du contrôleur.+L'association [[https://laissezpasser.fr/|Laisser Passer]] nous a permis d'extraire de leur matériaux portuaires à recycler huit leviers articulés en aluminium qui seront la base du contrôleur.
 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 maintenant solidement le tout à été fabriqué en acier soudé. Enfin, un cadre maintenant solidement le tout à été fabriqué en acier soudé.
  
 ===== Matériaux ===== ===== Matériaux =====
-  * Leviers : récupération portuaire issu de Laissez Passer +  * Leviers : récupération portuaire issu du stock de [[https://laissezpasser.fr/|Laisser Passer]] 
-  * Socle : profilé en L acier 4mm+  * 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, potentiomètre   * Électronique : arduino Leonardo, boutons étanches de récupération, potentiomètre
  
Ligne 29: Ligne 29:
  
 Pour lire les valeurs brutes et calibrer les entrées analogiques, un **define** en première ligne peut être dé-commenté. Il transforme alors le port USB de l'arduino Leonardo non plus en périphérique MIDI mais en port série, permettant de lire sur le moniteur série d'Arduino les valeurs brutes et mise à l'échelle MIDI des capteurs telles qu'elles sont envoyées en mode normal.  Pour lire les valeurs brutes et calibrer les entrées analogiques, un **define** en première ligne peut être dé-commenté. Il transforme alors le port USB de l'arduino Leonardo non plus en périphérique MIDI mais en port série, permettant de lire sur le moniteur série d'Arduino les valeurs brutes et mise à l'échelle MIDI des capteurs telles qu'elles sont envoyées en mode normal. 
 +<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'arduino.
 +le code téléchargeable en en-tête n'en possède pas pour rester compatible avec toutes les versions d'IDE d'Arduino.
 +</WRAP>
 +
 Le code du projet peut être consulté ci-dessous : Le code du projet peut être consulté ci-dessous :
 ++++ arduinoLeonardo.ino| ++++ arduinoLeonardo.ino|
-<code cpp>//#define SERIAL +<code cpp>//#define CALIBRATION 
-#if !defined(SERIAL)+#ifndef CALIBRATION
   #include "MIDIUSB.h"   #include "MIDIUSB.h"
 #endif #endif
Ligne 62: Ligne 67:
 }; };
  
-digital digitals[] = { {"A0", 33, 2, true, DEBOUNCE, 0}, {"F0", 29, 3, true, DEBOUNCE, 0}, {"D0", 26, 4, true, DEBOUNCE, 0}, {"G0", 31, 5, true, DEBOUNCE, 0}, +digital digitals[] = { {"A0", 33, 2, true, DEBOUNCE, 0}, {"F0", 29, 3, true, DEBOUNCE, 0}, 
-                       {"E0", 28, 6, true, DEBOUNCE, 0}, {"B0", 35, 7, true, DEBOUNCE, 0}, {"C0", 24, 8, true, DEBOUNCE, 0}, {"Bb0", 34, 9, true, DEBOUNCE, 0},};+                       {"D0", 26, 4, true, DEBOUNCE, 0}, {"G0", 31, 5, true, DEBOUNCE, 0}, 
 +                       {"E0", 28, 6, true, DEBOUNCE, 0}, {"B0", 35, 7, true, DEBOUNCE, 0}, 
 +                       {"C0", 24, 8, true, DEBOUNCE, 0}, {"Bb0", 34, 9, true, DEBOUNCE, 0},}; 
 +                       
 unsigned int digitalsCount = sizeof(digitals)/sizeof(digital); unsigned int digitalsCount = sizeof(digitals)/sizeof(digital);
  
Ligne 76: Ligne 84:
     analogs[i].currentValue = map(analogRead(analogs[i].pin), analogs[i].calibMin, analogs[i].calibMax, 0, 127);     analogs[i].currentValue = map(analogRead(analogs[i].pin), analogs[i].calibMin, analogs[i].calibMax, 0, 127);
   }   }
-  #if defined(SERIAL)+  #ifdef CALIBRATION
     Serial.begin(115200);     Serial.begin(115200);
     delay(100);     delay(100);
Ligne 91: 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"+String(analogRead(analogs[i].pin))+", SCALED : "+ String(analogs[i].currentValue));           Serial.println(analogs[i].name + ": RAW"+String(analogRead(analogs[i].pin))+", SCALED : "+ String(analogs[i].currentValue));
         //analogs[i].lastValue = analogs[i].currentValue;         //analogs[i].lastValue = analogs[i].currentValue;
Ligne 109: 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+":ON");         Serial.println(digitals[i].name+":ON");
       #else       #else
Ligne 119: 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+":OFF");         Serial.println(digitals[i].name+":OFF");
       #else       #else
Ligne 128: Ligne 136:
     digitals[i].lastState = currentState;     digitals[i].lastState = currentState;
   }   }
-  #if !defined(SERIAL)+  #ifndef CALIBRATION
     MidiUSB.flush();     MidiUSB.flush();
   #endif   #endif
Ligne 134: 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 153: Ligne 161:
 ++++ ++++
 ===== Photos ===== ===== Photos =====
-Autres photos, galerie, ... 
  
 +{{gallery>?&crop&lightbox}}
/home/resonancg/www/wiki/data/pages/projets/artdevivre/accueil.txt · Dernière modification: 2019/12/19 15:05 de laurent