/* instructions de pré-compilation pour définir les variables ledR,....,Btn2*/
#define ledR 6
#define ledB 7
#define piezo 8
#define Btn1 10 // boutons pour le piezo
#define Btn2 11 // boutons pour led rouge
#define Btn3 12 // boutons pour led bleue
#define INPUT_MODE 0 // Mode pull-UP pour les boutons
/* instructions de pré-compilation pour définir les variables ledR,....,Btn2*/
/*Variable globales*/
char statebtn1; // Variable pour garder l'etat du bouton 1
char statebtn2; // Variable pour garder l'etat du bouton 2
char statebtn3; // Variable pour garder l'etat du bouton 3
unsigned long timenextledR;
unsigned long timenextledB;
unsigned long timeBtn = millis();
/*Variable globales*/
/*Etats du système*/
char LedRL=2;
char LedRI=7;
char LedBH=3;
char LedBI=8;
char LedBL=4;
char LedBF=9;
char pieH=5;
char pieL=6;
char stateledR=2;
char stateledB=4;
char statepie=6;
char act;
/*Etats du système*/
/*Déclaration des fonctions*/
void event(int a,int b,int c); // fonction pour scructer les evènements
char condition(); // fonction pour vérifier les conditions
void action(char a); // fonction pour faire les actions
/*Déclaration des fonctions*/
void setup() {
Serial.begin(9600); // pour debuter la communication série
for(int i=6;i<9;i++){ // boucle pour configurer les variables ledR,...,piezo en sortie
pinMode(i,OUTPUT);
}
for(int j=10;j<13;j++){ // boucle pour configurer les variables Btn1 et Btn2 en entrée
pinMode(j,INPUT_PULLUP);
}
}
void loop() {
event(Btn1,Btn2,Btn3);
// Afficher sur un moniteur série, la valeur de certaines variables.
Serial.print("l'état du Btn3 est : ");
Serial.println(digitalRead(Btn3));
Serial.print("l'état de statebtn3 est : ");
Serial.println(int(statebtn3));
condition();
Serial.print("l'état de statebtn3 est : ");
Serial.println(int(statebtn3));
action(act);
delay(2000);
}
void event(int a,int b,int c){ // fonction pour scructer les evènements
if(digitalRead(c) == INPUT_MODE && millis() - timeBtn > 500){
timeBtn = millis();
statebtn3=1; //variable pour dire bouton 2 appuyé
}
}
char condition(){
if(statebtn1==1){
if(statepie==pieL){
act=1;
}
else if(statepie==pieH){
act=2;
}
statebtn1=0;
}
if(statebtn2==1){
if(stateledR==LedRL){
act=3;
}
statebtn2=0;
}
if(stateledR==LedRI){
act=4;
}
if(statebtn3==1){
if(stateledB==LedBL){
act=5;
}
else{
act=8;
}
statebtn3=0;
}
if(stateledB==LedBH){
act=6;
}
if(stateledB==LedBI){
act=7;
}
if(stateledB==LedBF){
act=5;
}
return act;
}
void action(char a){
switch(a){
{case 1:
digitalWrite(piezo,HIGH);
statepie=pieH;
act=0;
break;}
{case 2:
digitalWrite(piezo,LOW);
statepie=pieL;
act=0;
break;}
{case 3:
digitalWrite(ledR,HIGH);
timenextledR=millis();
stateledR=LedRI;
act=0;
break;}
{case 4:
if(millis()-timenextledR>=1500){
digitalWrite(ledR,LOW);
stateledR=LedRL;
}
act=0;
break;}
{case 5:
digitalWrite(ledB,HIGH);
timenextledB=millis();
stateledB=LedBH;
act=0;
break;}
{case 6:
if(millis()-timenextledB>=1000){
digitalWrite(ledB,LOW);
stateledB=LedBI;
}
act=0;
break;}
{case 7:
if(millis()-timenextledB>=2000){
stateledB=LedBF;
}
act=0;
break;}
{case 8:
digitalWrite(ledB,LOW);
stateledB=LedBL;
act=0;
break;}
}
}