Exercice : Machine de vote (version avec tableau)
Simulateur

Cet exercice est à réaliser avec le simulateur en ligne Wokwi
Équations du système de vote
Le comité directeur d'une entreprise est constitué de quatre membres :
le directeur D
ses trois adjoints A, B, C.
Voici le fonctionnement du vote lors des réunions :
les décisions sont prises à la majorité,
chaque personne dispose d'un interrupteur pour voter sur lequel elle appuie en cas d'accord avec le projet soumis au vote,
en cas d'égalité du nombre de voix, celle du directeur compte double.
On vous demande de réaliser un dispositif logique permettant l'affichage du résultat du vote sur une LED.

Question
Établissez la table de vérité de commande du voyant en fonction des variables d'entrées.
Simulation
On se propose d'utiliser le schéma suivant pour simuler le fonctionnement de la machine de vote :
De droite à gauche : directeur, adjoint a, adjoint b, adjoint c.
Question
Vous réaliserez et testerez une implémentation du système de vote utilisant un tableau qui permettra de stocker la table de vérité.
Solution
bool table[]={0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1};
byte votes;
void setup(){
DDRD = PORTD_INITIAL; //Réglage du sens des bits de port
PORTD = PORTD & LED_OFF;//Extinction de la LED
}
void loop()
{
//Lecture des entrées
votes = (PIND & MASK) >> 4; //masquage du quartet poids faibles et décalage gauche de 4 positions
//Ecriture
if(table[votes]){
PORTD = PORTD | LED_ON;
//digitalWrite(PORT_LED, HIGH); //Variante
}
else{
PORTD = PORTD & LED_OFF;
//digitalWrite(PORT_LED, LOW); //Variante
}
/* Autre variante en replacement du if...else : digitalWrite(PORT_LED,table[votes]); */
}
/*
D C B A Voyant
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 1
1 0 0 0 0
1 0 0 1 1
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
*/