Bonjour,
fdunews a été plus rapide que moi!
J'ai repris le même principe que lui pour créer ce code : je me suis posé devant une feuille pour faire la structure puis j'ai remplis les fonctions.
//Constantes pour le parametrage des LEDs (afin d'eviter de fixer la pin dans le code)
#define LED_SEQ1_1 12
#define LED_SEQ1_2 11
#define LED_SEQ1_3 10
#define LED_SEQ2_1 9
#define LED_SEQ2_2 8
#define LED_SEQ2_3 7
#define LED_SEQ2_4 6
#define PIEZZO A0
#define THRESHOLD 100
//Déclaration des variables globales disponibles dans tout le code
int Compteur_Piezzo;
int State_Seq1;
int State_Seq2;
void setup() {
//Declaration des E/S
pinMode(LED_SEQ1_1, OUTPUT);
pinMode(LED_SEQ1_2, OUTPUT);
pinMode(LED_SEQ1_3, OUTPUT);
pinMode(LED_SEQ2_1, OUTPUT);
pinMode(LED_SEQ2_2, OUTPUT);
pinMode(LED_SEQ2_3, OUTPUT);
pinMode(LED_SEQ2_4, OUTPUT);
//Initialisation des E/S
ResetSeq1();
ResetSeq2();
Compteur_Piezzo = 1;
State_Seq1 = 0;
State_Seq2 = 0;
}//setup
void loop() {
//Modification de la sequence sur pression du boutton piezzo
if(analogRead(PIEZZO) >= THRESHOLD) {
Compteur_Piezzo++;
if(Compteur_Piezzo > 2)
Compteur_Piezzo = 1;
}
//Affichage des sequences
if(Compteur_Piezzo == 1) {
ResetSeq2();
IncSeq1();
}
else if(Compteur_Piezzo == 2) {
ResetSeq1();
IncSeq2();
}
else {
SeqErreur();
}
delay(500);
}//loop
void ResetSeq1() {
digitalWrite(LED_SEQ1_1, LOW);
digitalWrite(LED_SEQ1_2, LOW);
digitalWrite(LED_SEQ1_3, LOW);
}
void ResetSeq2() {
digitalWrite(LED_SEQ2_1, LOW);
digitalWrite(LED_SEQ2_2, LOW);
digitalWrite(LED_SEQ2_3, LOW);
digitalWrite(LED_SEQ2_4, LOW);
}
void IncSeq1() {
//En fonction de la variable d'état, on allume et éteint les leds dans l'ordre
if(State_Seq1 == 1) {
digitalWrite(LED_SEQ1_3, LOW);
digitalWrite(LED_SEQ1_1, HIGH);
}
else if(State_Seq1 == 2) {
digitalWrite(LED_SEQ1_1, LOW);
digitalWrite(LED_SEQ1_2, HIGH);
}
else if(State_Seq1 == 3) {
digitalWrite(LED_SEQ1_2, LOW);
digitalWrite(LED_SEQ1_3, HIGH);
}
else {
ResetSeq1();
State_Seq1 = 0;
}
State_Seq1++;
}
void IncSeq2() {
//En fonction de la variable d'état, on allume et éteint les leds dans l'ordre
if(State_Seq2 == 1) {
digitalWrite(LED_SEQ2_4, LOW);
digitalWrite(LED_SEQ2_1, HIGH);
}
else if(State_Seq2 == 2) {
digitalWrite(LED_SEQ2_1, LOW);
digitalWrite(LED_SEQ2_2, HIGH);
}
else if(State_Seq2 == 3) {
digitalWrite(LED_SEQ2_2, LOW);
digitalWrite(LED_SEQ2_3, HIGH);
}
else if(State_Seq2 == 4) {
digitalWrite(LED_SEQ2_3, LOW);
digitalWrite(LED_SEQ2_4, HIGH);
}
else {
ResetSeq2();
State_Seq2 = 0;
}
State_Seq2++;
}
void SeqErreur() {
digitalWrite(LED_SEQ1_1, HIGH);
digitalWrite(LED_SEQ1_2, HIGH);
digitalWrite(LED_SEQ1_3, HIGH);
digitalWrite(LED_SEQ2_1, HIGH);
digitalWrite(LED_SEQ2_2, HIGH);
digitalWrite(LED_SEQ2_3, HIGH);
digitalWrite(LED_SEQ2_4, HIGH);
}
Cet exemple est fonctionnel (je ne souhaitais pas faire compliqué) mais l'utilisation des tableaux est beaucoup plus efficace.
Et je répète ce qui vient d'être écrit : poser ton projet sur un papier (forum) et élabores un code dans son ensemble.
Cela évitera l'assemblage de morceaux qui donne quelque chose d'incompréhensible.
ET SURTOUT : commentez votre code pour les autre et vous plus tard!
En fait vj_muddy tu devrais commencer par lire le très bon tuto du Site du Zero (lien déjà donné par Skywodd : http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html)
Cela t'aiderai beaucoup et comme ça les questions que tu poserai serai vraiment des problèmes. Car là on a un peu l'impression que tu nous demande de faire ton code, ce qui n'est pas exactement l'objectif.