/* Lycée PE MARTIN
Le 17/8/2023
Titre : Système d'Aspiration
Matériels : Arduino Uno, 2 led, 5 switchs et 2 boutons-poussoir sur Pull-Up interne
Description : voir sujet du TP
*/

// Entrées
#define E_P2 12 // Etat logique (Activé / Non Activé) de l'aspiration sur le Poste 2 
#define E_P3 10 //  " Poste 3
#define E_P4 11 //  " Poste 4 
#define E_TP 9  // Trémie pleine
#define E_P 8  // Vide trop poussé
#define E_BPM1 7 // Activation de l'aspiration sur le Poste 1
#define E_BPA1 6 // Désactivation de l'aspiration sur le poste 1

// Sorties
#define S_LED_D1 3
#define S_LED_P1 2

// Initialisation des variables (globales)
bool P1, X, Reset, Set, D1 = LOW;

void setup() {
  // Configuration des E/S
  pinMode(E_P2, INPUT_PULLUP); pinMode(E_P3, INPUT_PULLUP);
  pinMode(E_P4, INPUT_PULLUP); pinMode(E_TP, INPUT_PULLUP);
  pinMode(E_P, INPUT_PULLUP); pinMode(E_BPM1, INPUT_PULLUP);
  pinMode(E_BPA1, INPUT); pinMode(S_LED_D1, OUTPUT);
  pinMode(S_LED_P1, OUTPUT);
}

void loop() {
  // Lecture des entrées
  bool P2 = !digitalRead(E_P2);
  bool P3 = !digitalRead(E_P3);
  bool P4 = !digitalRead(E_P4);
  bool TP = !digitalRead(E_TP);
  bool P = !digitalRead(E_P);
  bool BPM1 = !digitalRead(E_BPM1);
  bool BPA1 = !digitalRead(E_BPA1);

  // Traitement
  X = (P1 && P2) || (P1 && P3) || (P1 && P4) || (P2 && P3) || (P2 && P4) || (P3 && P4);
  Reset = !BPA1 || TP || P;
  Set = !X && BPM1;
  P1 = (P1 || Set) && !Reset;
  D1 = (X || TP || P) && BPM1;

  // Ecriture sur les sorties
  digitalWrite(S_LED_D1, D1);
  digitalWrite(S_LED_P1, P1);
}
P1
P2
P3
P4
P
TP
M1
A1
D1
R1
R2
R3