J-M-L:
Ainsi, le programme sort de la fonction de réglages et reprend la logique normale.
avec la fonction précédente, ça donnerait un truc comme ça:
Je ne dois pas savoir l’intégrer correctement. Cela ne fonctionne pas.
Voici le code modifié
#include <EEPROM.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(3, 5, 6, 7, 8, 9);
/*ENTREES DE IN1 à IN10*/
int horloge = 13;
int intrabox_relais_2 = 15;
int contact_cle = 17;
int boucle_magnetique = 19;
int lecteur_ext = 21;
int lecteur_int = 23;
int bouton_portail = 25;
int bouton_barriere = 27;
int IN9 = 29;
int IN10 = 31;
/*SORTIES DE Q1 à Q3*/
int ouverture_barriere = 18;
int ouverture_portail = 16;
int Q3 = 14;
/*PINS REGLAGES LCD*/
const byte contraste = 2;
const byte retroeclairage = 4;
/*DIP SWITCH ET BOUTONS*/
int entree_menus = 22;
int DIP2 = 24;
int btn_haut = 34;
int btn_bas = 36;
int btn_retour = 38;
int btn_valider = 40;
/*VARIABLES REGLABLES*/
/*MODES*/
int modtempnum;
int modnumero;
/*RETRO ECLAIRAGE*/
int retroreg;
int valretro;
/*CONTRASTE*/
int contrastereg;
int valcontraste;
/*-----LISTING-ETATS-----*/
enum etat : byte {
PROGRAMME_DEBUT,
PROGRAMME_EN_ATTENTE,
PROGRAMME_HORLOGE_INACTIVE,
PROGRAMME_HORLOGE_ACTIVE,
PROGRAMME_MAINTENANCE,
SORTIE_COMMANDE,
REGLAGES_EN_ATTENTE,
MENU_MOD,
AFFICHAGE_MOD,
REGLAGES_MOD,
MENU_RETRO,
AFFICHAGE_RETRO,
REGLAGES_RETRO,
MENU_CONTRASTE,
AFFICHAGE_CONTRASTE,
REGLAGES_CONTRASTE
};
etat etat_programme = PROGRAMME_DEBUT;
etat etat_reglages = REGLAGES_EN_ATTENTE;
void setup() {
/*ENTREES DE IN1 à IN10*/
pinMode(horloge, INPUT);
pinMode(intrabox_relais_2, INPUT);
pinMode(contact_cle, INPUT);
pinMode(boucle_magnetique, INPUT);
pinMode(lecteur_ext, INPUT);
pinMode(lecteur_int, INPUT);
pinMode(bouton_portail, INPUT);
pinMode(bouton_barriere, INPUT);
pinMode(IN9, INPUT);
pinMode(IN10, INPUT);
/*SORTIES DE Q1 à Q3*/
pinMode(ouverture_barriere, OUTPUT);
pinMode(ouverture_portail, OUTPUT);
pinMode(Q3, OUTPUT);
/*DIP SWITCH ET BOUTONS*/
pinMode(btn_haut, INPUT);
pinMode(btn_bas, INPUT);
pinMode(btn_valider, INPUT);
pinMode(btn_retour, INPUT);
pinMode(entree_menus, INPUT);
pinMode(DIP2, INPUT);
/*PINS REGLAGES LCD*/
pinMode(contraste, OUTPUT);
pinMode(retroeclairage, OUTPUT);
/*REGLAGES LCD*/
analogWrite(contraste, 120);
analogWrite(retroeclairage, 150);
/*ADRESSES EEPROM*/
EEPROM.get(10, modnumero);
EEPROM.get(20, valretro);
EEPROM.get(30, valcontraste);
/*DEMARRAGE LCD*/
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Gestionnaire ");
delay(800);
lcd.setCursor(0, 1);
lcd.print("Multi-Commandes ");
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("GMC ");
delay(800);
lcd.setCursor(0, 1);
lcd.print("v2.02 ");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" AFI ");
delay(800);
lcd.setCursor(0, 1);
lcd.print(" 05 56 61 62 91 ");
delay(5000);
lcd.clear();
}
void loop() {
EEPROM.get(20, valretro);
EEPROM.get(30, valcontraste);
analogWrite(retroeclairage, valretro);
analogWrite(contraste, valcontraste);
if (digitalRead(entree_menus) == HIGH) {
reglages();
} else {
if (modnumero == 1) {
programme_normal();
}
if (modnumero == 2) {
programme_inverse();
}
if (modnumero == 3) {
programme_full();
}
}
}
void programme_normal() {
switch (etat_programme) {
case PROGRAMME_DEBUT:
lcd.clear();
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, LOW);
etat_programme = PROGRAMME_EN_ATTENTE;
break;
case PROGRAMME_EN_ATTENTE:
if ((digitalRead(contact_cle) == HIGH) && (digitalRead(horloge) == LOW)) {
digitalWrite(ouverture_barriere, HIGH);
digitalWrite(ouverture_portail, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
etat_programme = PROGRAMME_HORLOGE_INACTIVE;
}
if ((digitalRead(contact_cle) == HIGH) && (digitalRead(horloge) == HIGH)) {
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
etat_programme = PROGRAMME_HORLOGE_ACTIVE;
}
if (digitalRead(contact_cle) == LOW) {
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
etat_programme = PROGRAMME_MAINTENANCE;
}
break;
case PROGRAMME_HORLOGE_INACTIVE:
if (digitalRead(horloge) == HIGH) {
etat_programme = PROGRAMME_DEBUT;
}
if ((digitalRead(horloge) == LOW) && (digitalRead(boucle_magnetique) == HIGH)) {
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
lcd.setCursor(0, 1);
lcd.print("DETECTION BOUCLE");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == LOW) && (digitalRead(lecteur_int) == HIGH)) {
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
lcd.setCursor(0, 1);
lcd.print("LECTEUR INT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == LOW) && (digitalRead(lecteur_ext) == HIGH)) {
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
lcd.setCursor(0, 1);
lcd.print("LECTEUR EXT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == LOW) && (digitalRead(intrabox_relais_2) == HIGH)) {
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
lcd.setCursor(0, 1);
lcd.print("CDE INTRATONE ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(contact_cle) == LOW) {
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
etat_programme = PROGRAMME_MAINTENANCE;
}
break;
case PROGRAMME_HORLOGE_ACTIVE:
if (digitalRead(horloge) == LOW) {
etat_programme = PROGRAMME_DEBUT;
}
if ((digitalRead(horloge) == HIGH) && (digitalRead(boucle_magnetique) == HIGH)) {
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
lcd.setCursor(0, 1);
lcd.print("DETECTION BOUCLE");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == HIGH) && (digitalRead(lecteur_int) == HIGH)) {
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
lcd.setCursor(0, 1);
lcd.print("LECTEUR INT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == HIGH) && (digitalRead(lecteur_ext) == HIGH)) {
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
lcd.setCursor(0, 1);
lcd.print("LECTEUR EXT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == HIGH) && (digitalRead(intrabox_relais_2) == HIGH)) {
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
lcd.setCursor(0, 1);
lcd.print("CDE INTRATONE ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(contact_cle) == LOW) {
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
etat_programme = PROGRAMME_MAINTENANCE;
}
break;
case PROGRAMME_MAINTENANCE:
if (digitalRead(contact_cle) == HIGH) {
etat_programme = PROGRAMME_DEBUT;
}
if (digitalRead(boucle_magnetique) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("DETECTION BOUCLE");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(lecteur_int) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("LECTEUR INT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(lecteur_ext) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("LECTEUR EXT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(intrabox_relais_2) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("CDE INTRATONE ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(bouton_portail) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("BOUTON PORTAIL ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(bouton_barriere) == HIGH) {
digitalWrite(ouverture_portail, LOW);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("BOUTON BARRIERE ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
break;
/*-----Programme permettant de sortir après une commande-------*/
case SORTIE_COMMANDE:
if ((digitalRead(boucle_magnetique) == LOW) && (digitalRead(lecteur_int) == LOW) && (digitalRead(lecteur_ext) == LOW) && (digitalRead(intrabox_relais_2) == LOW) && (digitalRead(bouton_portail) == LOW) && (digitalRead(bouton_barriere) == LOW)) {
etat_programme = PROGRAMME_DEBUT;
}
break;
}
}
void programme_inverse() {
switch (etat_programme) {
case PROGRAMME_DEBUT:
analogWrite(retroeclairage, 150);
lcd.clear();
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, LOW);
etat_programme = PROGRAMME_EN_ATTENTE;
break;
case PROGRAMME_EN_ATTENTE:
if ((digitalRead(contact_cle) == HIGH) && (digitalRead(horloge) == LOW)) {
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
etat_programme = PROGRAMME_HORLOGE_INACTIVE;
}
if ((digitalRead(contact_cle) == HIGH) && (digitalRead(horloge) == HIGH)) {
digitalWrite(ouverture_barriere, HIGH);
digitalWrite(ouverture_portail, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
etat_programme = PROGRAMME_HORLOGE_ACTIVE;
}
if (digitalRead(contact_cle) == LOW) {
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
etat_programme = PROGRAMME_MAINTENANCE;
}
break;
case PROGRAMME_HORLOGE_INACTIVE:
if (digitalRead(horloge) == HIGH) {
etat_programme = PROGRAMME_DEBUT;
}
if ((digitalRead(horloge) == LOW) && (digitalRead(boucle_magnetique) == HIGH)) {
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
lcd.setCursor(0, 1);
lcd.print("DETECTION BOUCLE");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == LOW) && (digitalRead(lecteur_int) == HIGH)) {
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
lcd.setCursor(0, 1);
lcd.print("LECTEUR INT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == LOW) && (digitalRead(lecteur_ext) == HIGH)) {
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
lcd.setCursor(0, 1);
lcd.print("LECTEUR EXT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == LOW) && (digitalRead(intrabox_relais_2) == HIGH)) {
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
lcd.setCursor(0, 1);
lcd.print("CDE INTRATONE ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(contact_cle) == LOW) {
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
etat_programme = PROGRAMME_MAINTENANCE;
}
break;
case PROGRAMME_HORLOGE_ACTIVE:
if (digitalRead(horloge) == LOW) {
etat_programme = PROGRAMME_DEBUT;
}
if ((digitalRead(horloge) == HIGH) && (digitalRead(boucle_magnetique) == HIGH)) {
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
lcd.setCursor(0, 1);
lcd.print("DETECTION BOUCLE");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == HIGH) && (digitalRead(lecteur_int) == HIGH)) {
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
lcd.setCursor(0, 1);
lcd.print("LECTEUR INT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == HIGH) && (digitalRead(lecteur_ext) == HIGH)) {
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
lcd.setCursor(0, 1);
lcd.print("LECTEUR EXT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == HIGH) && (digitalRead(intrabox_relais_2) == HIGH)) {
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
lcd.setCursor(0, 1);
lcd.print("CDE INTRATONE ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(contact_cle) == LOW) {
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
etat_programme = PROGRAMME_MAINTENANCE;
}
break;
case PROGRAMME_MAINTENANCE:
if (digitalRead(contact_cle) == HIGH) {
etat_programme = PROGRAMME_DEBUT;
}
if (digitalRead(boucle_magnetique) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("DETECTION BOUCLE");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(lecteur_int) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("LECTEUR INT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(lecteur_ext) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("LECTEUR EXT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(intrabox_relais_2) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("CDE INTRATONE ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(bouton_portail) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("BOUTON PORTAIL ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(bouton_barriere) == HIGH) {
digitalWrite(ouverture_portail, LOW);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("BOUTON BARRIERE ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
break;
/*-----Programme permettant de sortir après une commande-------*/
case SORTIE_COMMANDE:
if ((digitalRead(boucle_magnetique) == LOW) && (digitalRead(lecteur_int) == LOW) && (digitalRead(lecteur_ext) == LOW) && (digitalRead(intrabox_relais_2) == LOW) && (digitalRead(bouton_portail) == LOW) && (digitalRead(bouton_barriere) == LOW)) {
etat_programme = PROGRAMME_DEBUT;
}
break;
}
}
void programme_full() {
switch (etat_programme) {
case PROGRAMME_DEBUT:
analogWrite(retroeclairage, 150);
lcd.clear();
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, LOW);
etat_programme = PROGRAMME_EN_ATTENTE;
break;
case PROGRAMME_EN_ATTENTE:
if ((digitalRead(contact_cle) == HIGH) && (digitalRead(horloge) == LOW)) {
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
etat_programme = PROGRAMME_HORLOGE_INACTIVE;
}
if ((digitalRead(contact_cle) == HIGH) && (digitalRead(horloge) == HIGH)) {
digitalWrite(ouverture_barriere, HIGH);
digitalWrite(ouverture_portail, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
etat_programme = PROGRAMME_HORLOGE_ACTIVE;
}
if (digitalRead(contact_cle) == LOW) {
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
etat_programme = PROGRAMME_MAINTENANCE;
}
break;
case PROGRAMME_HORLOGE_INACTIVE:
if (digitalRead(horloge) == HIGH) {
etat_programme = PROGRAMME_DEBUT;
}
if ((digitalRead(horloge) == LOW) && (digitalRead(boucle_magnetique) == HIGH)) {
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
lcd.setCursor(0, 1);
lcd.print("DETECTION BOUCLE");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == LOW) && (digitalRead(lecteur_int) == HIGH)) {
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
lcd.setCursor(0, 1);
lcd.print("LECTEUR INT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == LOW) && (digitalRead(lecteur_ext) == HIGH)) {
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
lcd.setCursor(0, 1);
lcd.print("LECTEUR EXT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == LOW) && (digitalRead(intrabox_relais_2) == HIGH)) {
digitalWrite(ouverture_portail, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE OFF ");
lcd.setCursor(0, 1);
lcd.print("CDE INTRATONE ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(contact_cle) == LOW) {
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
etat_programme = PROGRAMME_MAINTENANCE;
}
break;
case PROGRAMME_HORLOGE_ACTIVE:
if (digitalRead(horloge) == LOW) {
etat_programme = PROGRAMME_DEBUT;
}
if ((digitalRead(horloge) == HIGH) && (digitalRead(boucle_magnetique) == HIGH)) {
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
lcd.setCursor(0, 1);
lcd.print("DETECTION BOUCLE");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == HIGH) && (digitalRead(lecteur_int) == HIGH)) {
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
lcd.setCursor(0, 1);
lcd.print("LECTEUR INT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == HIGH) && (digitalRead(lecteur_ext) == HIGH)) {
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
lcd.setCursor(0, 1);
lcd.print("LECTEUR EXT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if ((digitalRead(horloge) == HIGH) && (digitalRead(intrabox_relais_2) == HIGH)) {
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HORLOGE ON ");
lcd.setCursor(0, 1);
lcd.print("CDE INTRATONE ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(contact_cle) == LOW) {
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
etat_programme = PROGRAMME_MAINTENANCE;
}
break;
case PROGRAMME_MAINTENANCE:
if (digitalRead(contact_cle) == HIGH) {
etat_programme = PROGRAMME_DEBUT;
}
if (digitalRead(boucle_magnetique) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("DETECTION BOUCLE");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(lecteur_int) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("LECTEUR INT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(lecteur_ext) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("LECTEUR EXT ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(intrabox_relais_2) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("CDE INTRATONE ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(bouton_portail) == HIGH) {
digitalWrite(ouverture_portail, HIGH);
digitalWrite(ouverture_barriere, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("BOUTON PORTAIL ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
if (digitalRead(bouton_barriere) == HIGH) {
digitalWrite(ouverture_portail, LOW);
digitalWrite(ouverture_barriere, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MODE MAINTENANCE");
lcd.setCursor(0, 1);
lcd.print("BOUTON BARRIERE ");
delay(200);
etat_programme = SORTIE_COMMANDE;
}
break;
/*-----Programme permettant de sortir après une commande-------*/
case SORTIE_COMMANDE:
if ((digitalRead(boucle_magnetique) == LOW) && (digitalRead(lecteur_int) == LOW) && (digitalRead(lecteur_ext) == LOW) && (digitalRead(intrabox_relais_2) == LOW) && (digitalRead(bouton_portail) == LOW) && (digitalRead(bouton_barriere) == LOW)) {
etat_programme = PROGRAMME_DEBUT;
}
break;
}
}
void reglages() {
switch (etat_reglages) {
case REGLAGES_EN_ATTENTE:
if (digitalRead(entree_menus) == LOW) {
delay(500);
/*loop();*/
return;
}
else {
digitalWrite(ouverture_barriere, LOW);
digitalWrite(ouverture_portail, LOW);
etat_reglages = MENU_MOD;
}
break;
case MENU_MOD:
lcd.setCursor(0, 0);
lcd.print("MODES DE ");
lcd.setCursor(0, 1);
lcd.print("FONCTIONNEMENT ");
delay(200);
if (digitalRead(btn_valider) == HIGH) {
lcd.clear();
etat_reglages = AFFICHAGE_MOD;
delay(200);
}
if (digitalRead(btn_bas) == HIGH) {
lcd.clear();
etat_reglages = MENU_RETRO;
delay(200);
}
if (digitalRead(entree_menus) == LOW) {
lcd.clear();
etat_reglages = REGLAGES_EN_ATTENTE;
delay(200);
}
break;
case AFFICHAGE_MOD:
lcd.setCursor(0, 0);
lcd.print("Mode : ");
EEPROM.get(10, modnumero);
modtempnum = modnumero;
etat_reglages = REGLAGES_MOD;
delay(400);
break;
case REGLAGES_MOD:
lcd.setCursor(0, 0);
lcd.print("Mode : ");
if (modtempnum == 1) {
lcd.setCursor(0, 1);
lcd.print("Normal ");
}
if (modtempnum == 2) {
lcd.setCursor(0, 1);
lcd.print("Inverse ");
}
if (modtempnum == 3) {
lcd.setCursor(0, 1);
lcd.print("Complet ");
}
if (digitalRead(btn_haut) == HIGH) {
delay(200);
modtempnum = modtempnum + 1;
modtempnum = constrain(modtempnum, 1, 3);
lcd.clear();
etat_reglages = REGLAGES_MOD;
}
if (digitalRead(btn_bas) == HIGH) {
delay(200);
modtempnum = modtempnum - 1;
modtempnum = constrain(modtempnum, 1, 3);
lcd.clear();
etat_reglages = REGLAGES_MOD;
}
if (digitalRead(btn_valider) == HIGH) {
modnumero = modtempnum;
EEPROM.put(10, modnumero);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" REGLAGES ");
lcd.setCursor(0, 1);
lcd.print(" ENREGISTRES ");
delay(1500);
etat_reglages = MENU_MOD;
}
if (digitalRead(btn_retour) == HIGH) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" REGLAGES ");
lcd.setCursor(0, 1);
lcd.print("NON ENREGISTRES ");
delay(1500);
etat_reglages = MENU_MOD;
}
if (digitalRead(entree_menus) == LOW) {
lcd.clear();
etat_reglages = REGLAGES_EN_ATTENTE;
return;
}
break;
case MENU_RETRO:
lcd.setCursor(0, 0);
lcd.print("VALEUR DU ");
lcd.setCursor(0, 1);
lcd.print("RETRO-ECLAIRAGE ");
delay(200);
if (digitalRead(btn_haut) == HIGH) {
lcd.clear();
etat_reglages = MENU_MOD;
delay(200);
}
if (digitalRead(btn_valider) == HIGH) {
lcd.clear();
etat_reglages = AFFICHAGE_RETRO;
delay(200);
}
if (digitalRead(btn_bas) == HIGH) {
lcd.clear();
etat_reglages = MENU_CONTRASTE;
delay(200);
}
if (digitalRead(entree_menus) == LOW) {
lcd.clear();
etat_reglages = REGLAGES_EN_ATTENTE;
return;
}
break;
case AFFICHAGE_RETRO:
lcd.setCursor(0, 0);
lcd.print("Retro-ecl : ");
EEPROM.get(20, valretro);
retroreg = valretro;
etat_reglages = REGLAGES_RETRO;
delay(400);
break;
case REGLAGES_RETRO:
lcd.setCursor(0, 0);
lcd.print("Retro-ecl : ");
lcd.setCursor(12, 1);
lcd.print(retroreg/25*10);
lcd.setCursor(15, 1);
lcd.print("%");
if (digitalRead(btn_haut) == HIGH) {
delay(200);
retroreg = retroreg + 10;
retroreg = constrain(retroreg, 25, 250);
lcd.clear();
etat_reglages = REGLAGES_RETRO;
}
if (digitalRead(btn_bas) == HIGH) {
delay(200);
retroreg = retroreg - 10;
retroreg = constrain(retroreg, 25, 250);
lcd.clear();
etat_reglages = REGLAGES_RETRO;
}
if (digitalRead(btn_valider) == HIGH) {
valretro = retroreg;
EEPROM.put(20, valretro);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" REGLAGES ");
lcd.setCursor(0, 1);
lcd.print(" ENREGISTRES ");
delay(1500);
etat_reglages = MENU_RETRO;
}
if (digitalRead(btn_retour) == HIGH) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" REGLAGES ");
lcd.setCursor(0, 1);
lcd.print("NON ENREGISTRES ");
delay(1500);
etat_reglages = MENU_RETRO;
}
if (digitalRead(entree_menus) == LOW) {
lcd.clear();
etat_reglages = REGLAGES_EN_ATTENTE;
}
break;
case MENU_CONTRASTE:
lcd.setCursor(0, 0);
lcd.print("VALEUR DU ");
lcd.setCursor(0, 1);
lcd.print("CONTRASTE ");
delay(200);
if (digitalRead(btn_haut) == HIGH) {
lcd.clear();
etat_reglages = MENU_RETRO;
delay(200);
}
if (digitalRead(btn_valider) == HIGH) {
lcd.clear();
etat_reglages = AFFICHAGE_CONTRASTE;
delay(200);
}
if (digitalRead(entree_menus) == LOW) {
lcd.clear();
etat_reglages = REGLAGES_EN_ATTENTE;
delay(200);
}
break;
case AFFICHAGE_CONTRASTE:
lcd.setCursor(0, 0);
lcd.print("Contraste : ");
EEPROM.get(30, valcontraste);
contrastereg = valcontraste;
etat_reglages = REGLAGES_CONTRASTE;
delay(400);
break;
case REGLAGES_CONTRASTE:
lcd.setCursor(0, 0);
lcd.print("Contraste : ");
lcd.setCursor(12, 1);
lcd.print(contrastereg/25*10);
lcd.setCursor(15, 1);
lcd.print("%");
if (digitalRead(btn_haut) == HIGH) {
delay(200);
contrastereg = contrastereg + 10;
contrastereg = constrain(contrastereg, 25, 250);
lcd.clear();
etat_reglages = REGLAGES_CONTRASTE;
}
if (digitalRead(btn_bas) == HIGH) {
delay(200);
contrastereg = contrastereg - 10;
contrastereg = constrain(contrastereg, 25, 200);
lcd.clear();
etat_reglages = REGLAGES_CONTRASTE;
}
if (digitalRead(btn_valider) == HIGH) {
valcontraste = contrastereg;
EEPROM.put(30, valcontraste);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" REGLAGES ");
lcd.setCursor(0, 1);
lcd.print(" ENREGISTRES ");
delay(1500);
etat_reglages = MENU_CONTRASTE;
}
if (digitalRead(btn_retour) == HIGH) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" REGLAGES ");
lcd.setCursor(0, 1);
lcd.print("NON ENREGISTRES ");
delay(1500);
etat_reglages = MENU_CONTRASTE;
}
if (digitalRead(entree_menus) == LOW) {
lcd.clear();
etat_reglages = REGLAGES_EN_ATTENTE;
return;
}
break;
}
}