Salut Fdufnews et merci beaucoup pour les précieuses informations !
J'ai du faire quelque ajustements aux valeurs que tu m'a donné, mais tu m'a mis sur la voie et maintenant un de mes principaux problèmes est réglé !
Voici le code dans l'état actuel :
// Constantes d'entrées :
const int CH1 = A1; // Bouton de contrôle du canal 1
const int CH2 = A2; // Bouton de contrôle du canal 2
const int CH3 = A3; // Bouton de contrôle du canal 3
const int CH4 = A4; // Bouton de contrôle du canal 4
const int CH5 = A5; // Bouton de contrôle du canal 5
const int CH6 = A6; // Bouton de contrôle du canal 6
const int MST = A7; // Bouton de contrôle du canal Master
// Constantes de sorties :
const int CH1_FX1= 0; // Sortie pour router le canal 1 sur le bus FX1
const int CH1_FX2= 1; // Sortie pour router le canal 1 sur le bus FX2
const int CH2_FX1= 2; // Sortie pour router le canal 2 sur le bus FX1
const int CH2_FX2= 3; // Sortie pour router le canal 2 sur le bus FX2
const int CH3_FX1= 4; // Sortie pour router le canal 3 sur le bus FX1
const int CH3_FX2= 5; // Sortie pour router le canal 3 sur le bus FX2
const int CH4_FX1= 6; // Sortie pour router le canal 4 sur le bus FX1
const int CH4_FX2= 7; // Sortie pour router le canal 4 sur le bus FX2
const int CH5_FX1= 8; // Sortie pour router le canal 5 sur le bus FX1
const int CH5_FX2= 9; // Sortie pour router le canal 5 sur le bus FX2
const int CH6_FX1= 10; // Sortie pour router le canal 6 sur le bus FX1
const int CH6_FX2= 11; // Sortie pour router le canal 6 sur le bus FX2
const int MST_FX1= 12; // Sortie pour router le canal Master sur le bus FX1
const int MST_FX2= 13; // Sortie pour router le canal Master sur le bus FX1
// Définition des variables :
int CH1_State = 0; // Variable CH1
int CH2_State = 0; // Variable CH2
int CH3_State = 0; // Variable CH3
int CH4_State = 0; // Variable CH4
int CH5_State = 0; // Variable CH5
int CH6_State = 0; // Variable CH6
int MST_State = 0; // Variable CH7
int I0V = 587;
int I3VL = 637;
int I3VH = 737;
int I5VL = 973;
int I5VH = 1073;
void setup() {
// Activation du port série afin de tester les entrées analogiques
// Serial.begin(9600);
// Initialisation des entrées :
pinMode(CH1, INPUT);
pinMode(CH2, INPUT);
pinMode(CH3, INPUT);
pinMode(CH4, INPUT);
pinMode(CH5, INPUT);
pinMode(CH6, INPUT);
pinMode(MST, INPUT);
// Initialisation des sorties :
pinMode(CH1_FX1, OUTPUT);
pinMode(CH1_FX2, OUTPUT);
pinMode(CH2_FX1, OUTPUT);
pinMode(CH2_FX2, OUTPUT);
pinMode(CH3_FX1, OUTPUT);
pinMode(CH3_FX2, OUTPUT);
pinMode(CH4_FX1, OUTPUT);
pinMode(CH4_FX2, OUTPUT);
pinMode(CH5_FX1, OUTPUT);
pinMode(CH5_FX2, OUTPUT);
pinMode(CH6_FX1, OUTPUT);
pinMode(CH6_FX2, OUTPUT);
pinMode(MST_FX1, OUTPUT);
pinMode(MST_FX2, OUTPUT);
}
void loop() {
// Test de la lecture analogique du bouton :
int sensorValue = analogRead(CH3);
float voltage = sensorValue * (5.0 / 1023.0);
float value = sensorValue;
Serial.println(value);
// Lecture de l'état des entrées :
CH1_State = analogRead(CH1);
CH2_State = analogRead(CH2);
CH3_State = analogRead(CH3);
CH4_State = analogRead(CH4);
CH5_State = analogRead(CH5);
CH6_State = analogRead(CH6);
MST_State = analogRead(MST);
// Channel 1 :
if (CH1_State < I0V) // Si l'entrée est à 0V :
{ digitalWrite(CH1_FX1, LOW);
digitalWrite(CH1_FX2, LOW); }
else if (CH1_State > I3VL && CH2_State < I3VH) // Si l'entrée est à 3.3V :
{ digitalWrite(CH1_FX1, HIGH);
digitalWrite(CH1_FX2, LOW); }
else if (CH1_State > I5VL && CH2_State < I5VH) // Si l'entrée est à 5V :
{ digitalWrite(CH1_FX1, LOW);
digitalWrite(CH1_FX2, HIGH);}
// Channel 2 :
if (CH2_State < I0V) // Si l'entrée est à 0V :
{ digitalWrite(CH2_FX1, LOW);
digitalWrite(CH2_FX2, LOW); }
else if (CH2_State > I3VL && CH2_State < I3VH) // Si l'entrée est à 3.3V :
{ digitalWrite(CH2_FX1, HIGH);
digitalWrite(CH2_FX2, LOW); }
else if (CH2_State > I5VL && CH2_State < I5VH) // Si l'entrée est à 5V :
{ digitalWrite(CH2_FX1, LOW);
digitalWrite(CH2_FX2, HIGH);}
// Channel 3 :
if (CH3_State < I0V) // Si l'entrée est à 0V :
{ digitalWrite(CH3_FX1, LOW);
digitalWrite(CH3_FX2, LOW); }
else if (CH3_State > I3VL && CH2_State < I3VH) // Si l'entrée est à 3.3V :
{ digitalWrite(CH3_FX1, HIGH);
digitalWrite(CH3_FX2, LOW); }
else if (CH3_State > I5VL && CH2_State < I5VH) // Si l'entrée est à 5V :
{ digitalWrite(CH3_FX1, LOW);
digitalWrite(CH3_FX2, HIGH);}
// Channel 4 :
if (CH4_State < I0V) // Si l'entrée est à 0V :
{ digitalWrite(CH4_FX1, LOW);
digitalWrite(CH4_FX2, LOW); }
else if (CH4_State > I3VL && CH2_State < I3VH) // Si l'entrée est à 3.3V :
{ digitalWrite(CH4_FX1, HIGH);
digitalWrite(CH4_FX2, LOW); }
else if (CH4_State > I5VL && CH2_State < I5VH) // Si l'entrée est à 5V :
{ digitalWrite(CH4_FX1, LOW);
digitalWrite(CH4_FX2, HIGH);}
// Channel 5 :
if (CH5_State < I0V) // Si l'entrée est à 0V :
{ digitalWrite(CH5_FX1, LOW);
digitalWrite(CH5_FX2, LOW); }
else if (CH5_State > I3VL && CH2_State < I3VH) // Si l'entrée est à 3.3V :
{ digitalWrite(CH5_FX1, HIGH);
digitalWrite(CH5_FX2, LOW); }
else if (CH5_State > I5VL && CH2_State < I5VH) // Si l'entrée est à 5V :
{ digitalWrite(CH5_FX1, LOW);
digitalWrite(CH5_FX2, HIGH);}
// Channel 6 :
if (CH6_State < I0V) // Si l'entrée est à 0V :
{ digitalWrite(CH6_FX1, LOW);
digitalWrite(CH6_FX2, LOW); }
else if (CH6_State > I3VL && CH2_State < I3VH) // Si l'entrée est à 3.3V :
{ digitalWrite(CH6_FX1, HIGH);
digitalWrite(CH6_FX2, LOW); }
else if (CH6_State > I5VL && CH2_State < I5VH) // Si l'entrée est à 5V :
{ digitalWrite(CH6_FX1, LOW);
digitalWrite(CH6_FX2, HIGH);}
// Master :
if (MST_State < I0V) // Si l'entrée est à 0V :
{ digitalWrite(MST_FX1, LOW);
digitalWrite(MST_FX2, LOW); }
else if (MST_State > I3VL && CH2_State < I3VH) // Si l'entrée est à 3.3V :
{ digitalWrite(MST_FX1, HIGH);
digitalWrite(MST_FX2, LOW); }
else if (MST_State > I5VL && CH2_State < I5VH) // Si l'entrée est à 5V :
{ digitalWrite(MST_FX1, LOW);
digitalWrite(MST_FX2, HIGH);}
// Marqueur de fin de programme
}
C'est certainement pas très impressionnant, mais c'est une avancée majeure pour moi !!
Il me reste à trouver comment faire pour que l'état soit mémorisé, à savoir par exemple :
Si A1 = 3.3V CH1_FX1 = ON (et reste à on)
Si A1 = 3.3V CH1_FX1 = OFF
SI A1 = 3.3V CH1_FX1 = ON (et reste à on)
SI A1 = 5V CH1_FX1 = OFF et CH1_FX2 = ON (et reste à on)
Ect...
Je pense avoir vu des tutos là dessus sur le net, je vais essayer de les retrouver et de comprendre comment les implanter dans le code qui est un peu plus compliqué que ce qu'avec quoi j'ai l'habitude de jouer.
Merci encore et bonne journée !!