En attente d'un évènement d'entrée

Bonjour !

Voilà, je sèche un peu, je n'arrive pas à trouver une méthode digne de ce nom consistant à attendre un évènement et à réagir en fonction, le tout en utilisant des tableaux.
Je n'ai jamais utilisé de tableaux jusqu'à maintenant, d'où ma difficulté je pense. Mon choix d'utilisation de tableaux se porte justement sur le fait que je n'en ai jamais utilisé et que je souhaite essayer.

Pour faire simple, ce que je souhaite faire, c'est attendre qu'un bouton soit enfoncé, et si c'est le cas, qu'une note MIDI correspondant au bouton soit envoyé et qu'une LED soit allumé par la même occasion.

J'ai donc quelques questions :

  • l'utilisation de tableaux est-elle judicieuse dans mon cas ?
  • comment puis-je cleaner la partie " envoi des notes + allumage led en fonction du bouton enfoncé" ?
  • mon code en l'état actuel est-il fonctionnel ? (je le saurai après test ça)

Voici pour le moment le code tel qu'il est sans avoir été testé :

#include <MIDI.h>

boolean bouton[] = {4, 6, 13, 19, 18}; // pins où sont connectés les boutons

boolean led[] = {11, 13, 15, 16, 17}; // pins où sont connectées les leds


void setup(){
  
  Serial.begin(31250);
  MIDI.begin();
  
  // initialisation des entrées boutons

  for (int i = 0; i < 5; i++){
    pinMode(bouton[i], INPUT);
  }
  
  //initialisation des sorties leds

  for (int i = 0; i < 5; i++){
    pinMode(led[i], OUTPUT);
  }
}

void loop(){
    
  // mise au niveau BAS des boutons et des leds

  for (int i = 0; i < 5; i++){
    digitalWrite(bouton[i], LOW);
    digitalWrite(led[i], LOW);  
  }
  
  
  // envoi des notes + allumage led en fonction du bouton enfoncé

  if (digitalRead(bouton[0] == HIGH)){
    MIDI.sendNoteOn(40, 127, 1);
    digitalWrite(led[0], HIGH);
    delay(100);
    digitalWrite(led[0], LOW);
  }
  
  if (digitalRead(bouton[1] == HIGH)){
    MIDI.sendNoteOn(41, 127, 1);
    digitalWrite(led[1], HIGH);
    delay(100);
    digitalWrite(led[1], LOW);
  }
  
  if (digitalRead(bouton[2] == HIGH)){
    MIDI.sendNoteOn(42, 127, 1);
    digitalWrite(led[2], HIGH);
    delay(100);
    digitalWrite(led[2], LOW);
  }
  
  if (digitalRead(bouton[3] == HIGH)){
    MIDI.sendNoteOn(43, 127, 1);
    digitalWrite(led[3], HIGH);
    delay(100);
    digitalWrite(led[3], LOW);
  }
  
  if (digitalRead(bouton[4] == HIGH)){
    MIDI.sendNoteOn(44, 127, 1);
    digitalWrite(led[4], HIGH);
    delay(100);
    digitalWrite(led[4], LOW);
  }
}

Je pensai remplacer la partie actuelle "envoi des notes + allumage led en fonction du bouton enfoncé" par une simple boucle :

for (int i = 0; i < 5; i++){
  if (digitalRead(bouton[i] == HIGH)){
    MIDI.sendNoteOn(40 + i, 127, 1);
    digitalWrite(led[i], HIGH);
    delay(100);
    digitalWrite(led[i], LOW);
  }

Qu'en pensez-vous ?

Merci beaucoup d'avance ! :slight_smile:

boolean bouton[] = {4, 6, 13, 19, 18}; // pins où sont connectés les boutons

un boolean , c'est vrai ou faux.
Les numéros de pins sont des entiers (int).

Ah oui ! Je me suis un peu emmêlé, merci :slight_smile: