Salut tout le monde ! premier poste (après des recherches vaines), je vous expose mon petit problème et vais essayer de faire au mieux.
Débutant en électronique mon premier projet etait un controleur midi-usb à 3 potentiomètres (j'utilise loop be 1 et hairless midiserial bridge pour la connexion midi usb, puis mapping sur ableton).
Aujourd'hui je tente avec 8 potentiomètres à l'aide d'un multiplexeur 8 voie (le CD4051BE).
Le montage multiplexeur-potards fonctionne, je retrouve bien dans le moniteur série mes 8 valeurs de potards différents.
le problème est pour récupérer les valeurs de chaque voie du multiplexeur afin de les utiliser pour transmettre un message midi. j'utilise cette fonction (accompagné d'une librairie midi)qui fonctionnait dans mon ancien projet :
val2 = analogRead(0)/8;
MIDImessage(176,2,val2);
Je pense que le problème vient du fait que chaque potard passe par la même voie analogique, je ne sais pas comment selectionner d'une autre manière la valeur de chaque voie indépendamment..
Quelqu'un peut-il m'éclairer svp ... ? Voici le code :
(je ne travaille que sur trois potard, j'ai reliés les autres à la masse le temps de régler le problème ^^)
//potards
int val = 0;
int val2 = 0;
int val3 = 0;
// Les pins utilisés (multiplexeur)
#define entreeAnalogique A0
#define pinS2 5
#define pinS1 4
#define pinS0 3
void setup()
{
Serial.begin(9600);
pinMode(pinS2, OUTPUT);
pinMode(pinS1, OUTPUT);
pinMode(pinS0, OUTPUT);
}
void loop()
{
// lecture du capteur relié a l'entrée Y0 du CD4051
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, LOW);
Serial.print(analogRead(A0));
Serial.print(" ");
val = analogRead(0)/8; // divise par 8 pour avoir un rang de 0-127 pour le midi
MIDImessage(176,1,val); // 176 = CC command (channel 1 control change), 1 = Which Control, val = value read from Potentionmeter 1 NOTE THIS SAYS VAL not VA1 (lowercase of course)
// lecture du capteur relié a l'entrée Y1 du CD4051
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, LOW);
digitalWrite(pinS0, HIGH);
Serial.print(analogRead(A0));
Serial.print(" ");
val2 = analogRead(0)/8;
MIDImessage(176,2,val2);
// lecture du capteur relié a l'entrée Y2 du CD4051
digitalWrite(pinS2, LOW);
digitalWrite(pinS1, HIGH);
digitalWrite(pinS0, LOW);
Serial.print(analogRead(A0));
Serial.print(" ");
val3 = analogRead(0)/8;
MIDImessage(176,3,val3);
void MIDImessage(byte command, byte data1, byte data2) //pass values out through standard Midi Command
{
Serial.write(command);
Serial.write(data1);
Serial.write(data2);
}
J'espère avoir été assez clair et merci d'avance si quelqu'un réussi à m'aider .. !