//Entrees
//Memoire image
bool I[3];
//Identification des broches
const uint8_t bp1 = 2;
const uint8_t bp2 = 3;
const uint8_t bp3 = 4;
//Sorties
//Memoire image
bool O[1];
//Identification des broches
const uint8_t led = 5;
//Bits internes
bool B[6];
void setup() {
// Configuration des broches (entrees)
pinMode(bp1, INPUT_PULLUP);
pinMode(bp2, INPUT_PULLUP);
pinMode(bp3, INPUT_PULLUP);
// Configuration des broches (sorties)
pinMode(led, OUTPUT);
// Initialisation des bits internes
memset(B, false, sizeof(B));
}
void loop() {
// Acquisition des entrees
I[0] = (digitalRead(bp1) == LOW);
I[1] = (digitalRead(bp2) == LOW);
I[2] = (digitalRead(bp3) == LOW);
//Traitement des bits internes
B[0] = I[0] && !(B[1]);
B[1] = I[0];
B[2] = I[1] && !(B[3]);
B[3] = I[1];
B[4] = I[2] && !(B[5]);
B[5] = I[2];
//Traitement des sorties
O[0] = !(O[0]) && (B[0] || B[2] || B[4]) || O[0] && !(B[0]) && !(B[2]) && !(B[4]);
// Ecriture des sorties
digitalWrite(led, O[0] ? HIGH : LOW);
}