//+-+-+-+-+-+-+- définition des broches d'entrées/sorties -+-+-+-+-+-+-+
//----------------------------------------------------------------------
const int BP1 = 13;
const int BP2 = 12;
const int BP3 = 11;
const int BP4 = 10;
const int BUZ1 = 9;
const int D1 = 7;
const int D2 = 6;
const int D3 = 5;
const int D4 = 4;
const int D5_R = 2;
const int D5_G = 3;
const int RV1 = A0;
#define green 1
#define red 2
#define stop 0
//+-+-+-+-+-+-+- création des variables de gestion -+-+-+-+-+-+-+
//---------------------------------------------------------------
bool LED1 = 0;
bool LED2 = 0;
bool LED3 = 0;
bool LED4 = 0;
int LED5 = 1; //0=stop, 1=vert, 2=rouge (voir #define)
bool Button1 = 1;
bool Button1_ = 1; //previous state of Button1
bool Button2 = 1;
bool Button2_ = 1; //previous state of Button2
bool Button3 = 1;
bool Button3_ = 1; //previous state of Button3
bool Button4 = 1;
bool Button4_ = 1; //previous state of Button4
int Adjust = 0;
int Threshold = 519; //seuil de basculement (variable pour hystérésis)
void setup() {
pinMode(BP1,INPUT);
pinMode(BP2,INPUT);
pinMode(BP3,INPUT);
pinMode(BP4,INPUT);
pinMode(D1,OUTPUT);
pinMode(D2,OUTPUT);
pinMode(D3,OUTPUT);
pinMode(D4,OUTPUT);
pinMode(D5_R,OUTPUT);
pinMode(D5_G,OUTPUT);
pinMode(BUZ1,OUTPUT);
}
void loop() {
//+-+-+-+-+-+-+- Lecture des entrées -+-+-+-+-+-+-+
//-------------------------------------------------
Button1 = digitalRead(BP1);
Button2 = digitalRead(BP2);
Button3 = digitalRead(BP3);
Button4 = digitalRead(BP4);
Adjust = analogRead(RV1);
//+-+-+-+-+-+-+- traitement des données -+-+-+-+-+-+-+
//----------------------------------------------------
if ((Button1 == 0) && (Button1_ == 1)) { //détection du front ! (appui sur BP)
digitalWrite(BUZ1,1); // un beep dans le buzzer
LED1 = ! LED1; // complémentation de l'état de la DEL
digitalWrite(D1,LED1);
}
if ((Button2 == 0) && (Button2_ == 1)) {
digitalWrite(BUZ1,1);
LED2 = ! LED2;
digitalWrite(D2,LED2);
}
if ((Button3 == 0) && (Button3_ == 1)) {
digitalWrite(BUZ1,1);
LED3 = ! LED3;
digitalWrite(D3,LED3);
}
if ((Button4 == 0) && (Button4_ == 1)) {
digitalWrite(BUZ1,1);
LED4 = ! LED4;
digitalWrite(D4,LED4);
}
if ((LED5 == green) && (Adjust > Threshold)) { // détection transition croissante
digitalWrite(BUZ1,1); // un beep dans le buzzer
LED5 = red;
Threshold = Threshold - 14; // hystérésis
digitalWrite(D5_R, HIGH);
digitalWrite(D5_G, LOW);
}
if ((LED5 == red) && (Adjust < Threshold)) { // détection transition décroissante
digitalWrite(BUZ1,1); // un beep dans le buzzer
LED5 = green;
Threshold = Threshold + 14;
digitalWrite(D5_R, LOW);
digitalWrite(D5_G, HIGH);
}
//+-+-+-+-+-+-+- post traitement -+-+-+-+-+-+-+
//---------------------------------------------
Button1_ = Button1;
Button2_ = Button2;
Button3_ = Button3;
Button4_ = Button4;
delay(10); // durée du beep sur le buzzer
digitalWrite(BUZ1,0);
}