// Ce programme est un signal de B.A.L lie a un canton
// Il utilise deux detecteurs d'occupation signal LOW si occupe
// Christian BEZANGER - Juillet 2022 - Domaine public
// Signal a cathodes communes mais signal a anodes communes possible
//
#define vert 0
#define rouge 1
#define orange 2
#define detecteurCanton 3
#define detecteurCantonSuivant 4
#define ledON HIGH // LOW si signal a anodes communes
#define ledOFF LOW // HIGH si signal a anodes communes
boolean etatCanton=false;
boolean etatCantonSuivant=false;
void setup()
{
pinMode(vert, OUTPUT);
pinMode(rouge, OUTPUT);
pinMode(orange, OUTPUT);
pinMode(detecteurCanton, INPUT_PULLUP);
pinMode(detecteurCantonSuivant, INPUT_PULLUP);
digitalWrite(vert, ledOFF);
digitalWrite(rouge, ledOFF);
digitalWrite(orange, ledOFF);
}
void loop()
{
// Lecture des detecteurs
if(digitalRead(detecteurCanton)==HIGH) {
etatCanton = false;
}
if(digitalRead(detecteurCanton)==LOW) {
etatCanton = true;
}
if(digitalRead(detecteurCantonSuivant)==HIGH) {
etatCantonSuivant = false;
}
if(digitalRead(detecteurCantonSuivant)==LOW) {
etatCantonSuivant = true;
}
// Traitement des données
if(!etatCanton && !etatCantonSuivant) {
digitalWrite(orange, ledOFF);
digitalWrite(rouge, ledOFF);
digitalWrite(vert, ledON);
}
if(etatCanton && !etatCantonSuivant) {
digitalWrite(vert, ledOFF);
digitalWrite(orange, ledOFF);
digitalWrite(rouge, ledON);
}
if(etatCanton && etatCantonSuivant) {
digitalWrite(vert, ledOFF);
digitalWrite(orange, ledOFF);
digitalWrite(rouge, ledON);
}
if(!etatCanton && etatCantonSuivant) {
digitalWrite(vert, ledOFF);
digitalWrite(rouge, ledOFF);
digitalWrite(orange, ledON);
}
// Fin de programme
}
tiny:PB5
tiny:PB3
tiny:PB4
tiny:GND
tiny:PB0
tiny:PB1
tiny:PB2
tiny:VCC
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
r1:1
r1:2
sw1:1
sw1:2
sw1:3
sw2:1
sw2:2
sw2:3