Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


Panneau latéral

projets:p6:accueil

Ceci est une ancienne révision du document !


P6

  • Porteur du projet : Jérôme (resonance)
  • Date : 02/2016 - …
  • Licence : libre !
  • Contexte : Projet de contrôleur MIDI
  • Fichiers : …

Description

Contrôleur MIDI réalisé avec des capteurs piézo-électriques.

Schéma électronique

Moulage silicone

// P6 project
// http://reso-nance.org/wiki/projets/p6/accueil
// Moule 3D pour un capteur piézo-électrique
// Moulage en silicone
// mars 2016
 
// Variables
$fn=80; // résolution
epaisseur=3; 
interieur=6;
 
// Affichage de l'objet
p6_mold();
 
// Objet 3D
module p6_mold(){
    container();
    piezo();
}
 
// Modules
module container(){
    difference(){
        cylinder(r = 26, h = epaisseur+interieur);
        translate([0,0,epaisseur]) cylinder(r = 23, h = interieur+1);    
  }
}
 
module piezo(){
    cylinder(r = 23, h = epaisseur);
    cylinder(r = 20, h = epaisseur + 3);
    cylinder(r = 14, h = epaisseur + 4);
   // pour les fils
    //translate([14,0,0]) cylinder(r = 2, h = epaisseur + interieur);
   rotate([90,0,0]) translate([-2,7,0]) cube([4,2,20]);
}

Boîtier

Code Arduino

/*
 * P6 project
 * Teensy MIDI with 6 analog sensors
 *
 */
 
boolean DEBUG = false;
 
// Analog sensors
int anaPins[] = {21,20,19,18,17,16}; // analog pins
const int anaNb = 6;
int anaValues[anaNb]; // current analog values
int anaLastValues[anaNb]; // previous analog values
 
// MIDI
const int channel = 1;
int anaCtl[] = {1,2,3,4,5,6}; // midi mapping
 
// Sampling rate
const long interval = 30;
unsigned long currentMillis;
unsigned long previousMillis = 0;
 
void setup() { 
  if (DEBUG) Serial.begin(9600);
} 
 
void loop() {
  currentMillis = millis();
  if(currentMillis - previousMillis >= interval) {
      previousMillis = currentMillis;
      for (int i = 0; i < anaNb; i++) {
        anaValues[i] = analogRead(anaPins[i]) / 4 ;
        if (anaValues[i] != anaLastValues[i]) {
           usbMIDI.sendControlChange(anaCtl[i], anaValues[i], channel);
           if (DEBUG)Serial.print(anaValues[i]);
           if (DEBUG)Serial.print("\t");
           anaLastValues[i] = anaValues[i];
        }
 
      }
      if (DEBUG)Serial.println();
   }
 
  // MIDI Controllers should discard incoming MIDI messages.
  while (usbMIDI.read()) {
  }
}
/home/resonancg/www/wiki/data/attic/projets/p6/accueil.1463129701.txt.gz · Dernière modification: 2016/05/13 10:55 de resonance