/*
Test du détecteur de lumière
Nécessite :
- capteur de lumière
- servo-moteur
- bouton poussoir
- LED
Les n° de ports à utiliser sont indiqués dans constantes.h
Eric DUQUENOY
Université du Littoral - Côte d'Opale
Décembre 2020
This example code is in Creative Commons :
https://creativecommons.org/licenses/by-nc/3.0/fr/
*/
#include "constantes.h"
#include "passage.h"
#include "iv.h"
#include "barriere.h"
#include "voyant.h"
/*Initialisation des variables */
bool flagVoiturePresente=0; //Mémorise la présente de la voiture sur le détecteur
/*Réglages de base */
void setup() {
Serial.begin(9600);//Initialise le port série (pour l'affichage dans la fenêtre Moniteur)
barriereInitialise(PORT_SERVO);//Initialisation du servo sur le bon port
passageInitialise(PORT_LIGHT_SENSOR);
ivInitialise(PORT_BP);
if(!voyantInitialise(PORT_LED)){Serial.println("Problème voyant !!!!");};
barriereFermer() ; //La barrière doit être fermée au départ
delay(1000);//On attend 5s avant de démarrer le programme
Serial.println("Demarrage du programme");
if(getBarriereEtat()){Serial.println("Barriere fermee");}
else{Serial.println("Barriere ouverte");}//On teste l'état de la barrière au démarrage
}
/*Boucle principale */
void loop() {
if(getIvEtat() && getBarriereEtat()){//Ouverture si BP enfoncé et barrière fermée
//On ouvre la barrière
barriereOuvrir();
//etatBarriere = getBarriereEtat();//La fonction membre "ouvrir" renvoie l'état de la barrière
Serial.println("Ouverture");
}
if(!getBarriereEtat() && !getPassageVoiture()){
if(!flagVoiturePresente){
flagVoiturePresente = true;
Serial.println("Voiture présente");
}
}
if(getPassageVoiture() && flagVoiturePresente){
barriereFermer();
flagVoiturePresente = false;
setIvEtat(0); //Réinitialise l'interrupteur virtuel
Serial.println("Voiture partie");
Serial.println("Fermeture");
}
if(!getBarriereEtat()){
voyantClignotant(millis());
//Serial.println("Clignote");
}
else{
setVoyantStop();
//Serial.println("Eteint");
}
//ledAllume();delay(500);ledEteint();delay(500);
}