dessine moi un m0u10n

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. :smiley: