1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
|
/* 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
long int timenextledR;
long int timenextledB;
long int 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() {
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);
condition();
action(act);
}
void event(int a,int b,int c){ // fonction pour scructer les evènements
if(digitalRead(a) == INPUT_MODE && millis() - timeBtn > 500){
timeBtn = millis();
statebtn1=1; //variable pour dire bouton 1 appuyé
}
if(digitalRead(b) == INPUT_MODE && millis() - timeBtn > 500){
timeBtn = millis();
statebtn2=1; //variable pour dire bouton 2 appuyé
}
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;
}
} |
Partager