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, digitalRead() pour la lecture et digitalWrite() pour l'écriture.

Solution

1
#define DIRECTEUR 7
2
#define ADJOINT_A 6
3
#define ADJOINT_B 5
4
#define ADJOINT_C 4
5
#define VOYANT 2
6
bool directeur, adjointA,adjointB,adjointC;
7
bool voyant;
8
void setup(){
9
  pinMode(DIRECTEUR, INPUT);
10
  pinMode(ADJOINT_A, INPUT);
11
  pinMode(ADJOINT_B, INPUT);
12
  pinMode(ADJOINT_B, INPUT);
13
  pinMode(VOYANT, OUTPUT);
14
}
15
16
void loop(){
17
  //Lecture des entrées
18
  directeur = digitalRead(DIRECTEUR);
19
  adjointA = digitalRead(ADJOINT_A);
20
  adjointB = digitalRead(ADJOINT_B);
21
  adjointC = digitalRead(ADJOINT_C);
22
  
23
  //Calcul de l'équation D.C + D.B + D.A + C.B.A = D.(A + B + C) +C.B.A
24
  voyant = (directeur & (adjointA | adjointB | adjointC)) | (adjointA & adjointB & adjointC);
25
  
26
  //Partie opérative
27
  digitalWrite(VOYANT, voyant);
28
}
29