Bonjour tout le monde !
Je profite du dimanche pour bricoler un petit jeu interactif avec des lampes, et je bute sur un problème de syntaxe.
J'ai plusieurs lampes ("led" dans le code) qui ont chacune un interrupteur (un capteur capacitif en fait, "capteur" dans le code).
Pour allumer la lampe i, il faut que la lampe i-1 soit allumée, et caetera. Jusque là pas souci, j'ai mon code et il fonctionne
Sauf que je me suis rendu compte que si on active tous les capteurs simultanément, tout s'allume et on perd l'intérêt du jeu.
Du coup j'ai pensé ajouter une condition du type "si le capteur i est HIGH et que les autres capteurs sont LOW, la lampe i s'allume". Problème, ma syntaxe est fausse, et je ne trouve pas comment formuler la condition autrement (la ligne 19 dans le code suivant) :
int led[] = {3, 4, 5, 6, 7, 8, 9, 10};
int capteur[] = {25, 27, 29, 31, 33, 35, 37, 39};
int etat_led[] = {false, false, false, false, false, false, false, false};
const int NUMLED = 8;
void setup() {
Serial.begin(9600);
int i;
i = 0;
}
void loop() {
int i;
i = 0;
while(i < NUMLED) {
if (digitalRead(capteur[i]) == HIGH){
delay(150);
if ((digitalRead(capteur[i]) == HIGH) && (digitalRead(capteur[!=i])== LOW)){
if (i == 0){
Serial.println(String(i) + " OK");
etat_led[i] = true;
digitalWrite(led[i], HIGH);
}
else {
if (etat_led[i-1] == true){
etat_led[i] = true;
digitalWrite(led[i], HIGH);
}
else {
int j;
j = 0;
while (j < NUMLED){
etat_led[j] = false;
digitalWrite(led[j], LOW);
j = j + 1;
}
}
}
}
}
i = i + 1;
}
Est-ce que vous auriez une idée de formulation différente ?
Merci à vous et bon bricolage ce dimanche