Bonjour!
Je ne suis pas expert en programmation, mais avec les exemples, j'arrive généralement à mes fins.
Or, cette fois si je bloque sur un détails qui me semble simplement stupide...
Dans mon programme, j'utilise un clavier 12 touches (vu que je l'avais déjà en stock ^^) pour choisir différent mode de fonctionnement dans le prog. 6 modes (touche 1 à 6) et 1 stop (touche 0). Le tout contrôlé par la librairie keypad.h
Ce que je cherche à faire, c'est que lorsque je rentre dans une des 6 fonctions (le stop peu être envoyé une seule fois, peu m'importe) celle-ci soie éffectué en boucle infini jusqu'à ce que je presse une autre touche du clavier.
Or, dans le moment, ce que j'arrive à faire est une seule lecture du case et le programme revient au départ pour attendre une nouvelle touche. J'ai tester quelques méthodes avec des if, des do/while, if else, changé le break de place, mettre une conditions sur le break, mais au final, sois le programme s'effectue une fois, ou il ne veut plus sortir de la boucle.
J'ai joint ici un programme vraiment de base mais qui revient au même que mon programme complet. Et surtout, 30 lignes c'est plus rapide à analysé que 550 lignes
Pour info, le keypad fonctionne bien, chaque "sous-programme" correspondant à chaque case fonctionne bien lorsqu'il sont utilisé séparément. C'est juste le fait de faire tourner le case en boucle infinie qui me pose problème.
Voila! J'espère avoir expliqué assez éfficacement, je n'est pas l'habitude d'expliquer mes programmes ^^' juste le produit final une fois fonctionnel...
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'#','0','*'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(19200);
}
void loop(){
char key = keypad.getKey();
if (key != NO_KEY){
switch (key) {
case '1' : Serial.println("Accelerometre"); break;
case '2' : Serial.println("Accelerometre avec moteur dc"); break;
case '3' : Serial.println("Accelerometre pour bras"); break;
case '4' : Serial.println("Joystique"); break;
case '5' : Serial.println("Joystique avec moteur dc"); break;
case '6' : Serial.println("Joystique pour bras"); break;
case '0' : Serial.println("Stop"); break;
}
}
}