Exercice : Machine de vote
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 l'équation logique de commande du voyant, en fonction des variables d'entrées. Attention : il s'agit bien de proposer une équation logique (nous n'utiliserons pas de tests comme l'instruction if
par exemple)
Simulation
On se propose d'utiliser le schéma suivant pour simuler le fonctionnement de la machine de vote :
Question
Vous réaliserez et testerez une implémentation du système de vote. On utilisera ici les fonctions pinMode()
pour l'initialisation des bits de port,
pour la lecture et digitalRead
()
pour l'écriture.digitalWrite
()
Solution
bool directeur, adjointA,adjointB,adjointC;
bool voyant;
void setup(){
pinMode(DIRECTEUR, INPUT);
pinMode(ADJOINT_A, INPUT);
pinMode(ADJOINT_B, INPUT);
pinMode(ADJOINT_B, INPUT);
pinMode(VOYANT, OUTPUT);
}
void loop(){
//Lecture des entrées
directeur = digitalRead(DIRECTEUR);
adjointA = digitalRead(ADJOINT_A);
adjointB = digitalRead(ADJOINT_B);
adjointC = digitalRead(ADJOINT_C);
//Calcul de l'équation D.C + D.B + D.A + C.B.A = D.(A + B + C) +C.B.A
voyant = (directeur & (adjointA | adjointB | adjointC)) | (adjointA & adjointB & adjointC);
//Partie opérative
digitalWrite(VOYANT, voyant);
}