// Entrées détecteur de niveaux const int B = 2; // Bas const int H = 3; // Haut // Sorties indicateurs (LEDs) const int Flag_B = 5; const int Flag_H = 6; int HB_val=0; // Sortie pompe const int P_LED = 9; const int P = 10; void setup() { Serial.begin(9600); //Init pinMode(B,INPUT); pinMode(H,INPUT); pinMode(Flag_B,OUTPUT); pinMode(Flag_H,OUTPUT); pinMode(P,OUTPUT); pinMode(P_LED,OUTPUT); digitalWrite(Flag_B, LOW); digitalWrite(Flag_H, LOW); digitalWrite(P_LED, LOW); digitalWrite(P, HIGH); } void loop() { /*Serial.println(GetHB(H, B)); delay(1000); */ // Etat '1' while(1) { // Lectures H & B HB_val=GetHB(H, B); // Condition de l'activation des sorties if(HB_val==0) { SetPompe(1, P,P_LED); SetLED(HB_val,Flag_B, Flag_H); } // Condition de passage à l'état suivant if(HB_val==1) break; // Délais (pas necessaire) delay(200); } // Etat '2' while(1) { HB_val=GetHB(H, B); if(HB_val==1) { SetPompe(1, P,P_LED); SetLED(HB_val,Flag_B, Flag_H); } if(HB_val==3) break; delay(200); } // Etat '3' while(1) { HB_val=GetHB(H, B); if((HB_val==3)||(HB_val==2)) { SetPompe(0, P,P_LED); SetLED(HB_val,Flag_B, Flag_H); } if(HB_val==1) break; delay(200); } // Etat '4' while(1) { HB_val=GetHB(H, B); if(HB_val==1) { SetPompe(0, P,P_LED); SetLED(HB_val,Flag_B, Flag_H); } if(HB_val==0) break; delay(200); } } int GetHB(int H_Pin, int B_Pin) { int HB=0; if(digitalRead(B_Pin)==1) HB=HB+1; if(digitalRead(H_Pin)==1) HB=HB+2; return HB; } void SetLED(byte HB_val, int Flag_BB, int Flag_HH ) { switch (HB_val) { case 0: digitalWrite(Flag_BB, LOW); digitalWrite(Flag_HH, LOW); break; case 1: digitalWrite(Flag_BB, HIGH); digitalWrite(Flag_HH, LOW); break; case 2: digitalWrite(Flag_BB, LOW); digitalWrite(Flag_HH, HIGH); break; case 3: digitalWrite(Flag_BB, HIGH); digitalWrite(Flag_HH, HIGH); break; } } void SetPompe(byte P_val, int PP, int P_LEDD ) { if(P_val==0) { digitalWrite(P_LEDD, LOW); digitalWrite(PP, HIGH); } else { digitalWrite(P_LEDD, HIGH); digitalWrite(PP, LOW); } }