erreur sur le post du code
/* script epuré avec les etapes du code d'achess */
/* la cellule photo*/
const int analogInPin = A0; // cellule photoelectrique sur broche A0
/*la porte*/
const int moteurA = 6; // moteur porte
const int moteurB = 7; // moteur porte
int ENA = 10; // broche PWM moteur
/* les fin de courses haut et bas */
const int hallhaut = 4; // broche D4 fin de course haut
const int hallbas = 5; // Broche D5 fin de course bas
int sensorValuehaut = 0 ; // variable de stockage FDC haut
int sensorValuebas = 0 ; // variable de stockage FDC bas
// les variables :
unsigned long chrono = 0;// variable contenant un temps mémorisé en millisecondes.
unsigned long retard = 10000; // 10sec
bool ouvert;
bool clos;
bool tourne = 0; // indique que le moteur tourne
/*les leds pour verifier l'etat de la porte */
const int LedVerte =9; // LedVerte connectée sur broche D9
const int LedRouge =8; // LedRouge connectée sur broche D8
void setup() {
Serial.begin(9600); // port com
pinMode (LedVerte, OUTPUT); // declare la broche LedVerte comme une sortie
pinMode (LedRouge, OUTPUT); // declare la broche LedRouge comme une sortie
pinMode (moteurA, OUTPUT); // declare la broche comme sortie
pinMode (moteurB, OUTPUT); // declare la broche comme sortie
pinMode (ENA, OUTPUT); // declare la broche PWM comme une sortie
pinMode( hallhaut, INPUT); // declare la broche comme une entrée
pinMode( hallbas, INPUT); // declare la broche comme une entrée
}
/* parametre de d'ouverture et fermeture de la porte */
void ouverture(){ // enclenche l'ouverture de la porte
digitalWrite (ENA, HIGH); // active le L298
digitalWrite (LedVerte, HIGH); // on allume la Led verte
digitalWrite (LedRouge, LOW); // on eteind la Led rouge
digitalWrite (moteurA, HIGH); // ouverture porte
digitalWrite (moteurB, LOW); // ouverture porte
analogWrite (ENA,160); // PWM moteur a l'ouverture (0.255)
tourne = true; // le moteur tourne et l'etat de la cellule n'est pas pris en compte
}
void fermeture(){
digitalWrite (ENA, HIGH); // active le L298
digitalWrite (LedVerte, LOW); // on eteint la Led verte
digitalWrite (LedRouge, HIGH); // on allume la led rouge
digitalWrite (moteurA, LOW); // fermeture porte
digitalWrite (moteurB, HIGH); // fermeture porte
analogWrite (ENA, 100); //PWM moteur a la fermeture (0.255)
tourne = true; // le moteur tourne et l'etat de la cellule n'est pas pris en compte
}
void stop()// arret du moteur
{
digitalWrite (moteurA, LOW); // arret porte
digitalWrite (moteurB, LOW); // arret porte
digitalWrite (ENA, LOW); // desactive le l298
tourne = false;
}
void loop() {
/* partie affichage sur le moniteur serie*/
Serial.print("cellule = ");
Serial.print(analogRead(analogInPin)); // on imprime la valeur de la cellule sur le moniteur serie
Serial.print(" moteurA = ");
Serial.print(digitalRead (moteurA) );
Serial.print(" moteurB = ");
Serial.print(digitalRead (moteurB));
Serial.print (" FDC haut =");
Serial.print(digitalRead( hallhaut )); // on affiche sur le port serie
Serial.print(" FDC bas =");
Serial.println(digitalRead( hallbas )); // on affiche sur le port serie
/*partie lancement du d'ouverture ou fermeture en fonction de la cellule*/
if (!ouvert) // si la valeur lue est correspondante au jour
{ // et fdc non atteint
if (analogRead(analogInPin) > 300)// jour
{
if (!tourne && ((millis() - chrono) > retard)) ouverture();
}
else chrono = millis();// RAZ si jour pas maintenu
if (!sensorValuehaut)//fdc haut atteint
{
stop(); // si fin de course haut activé
ouvert = true; // c'est ouvert
clos = false; // c'est fermée
}
}
if (!clos)
{
if (analogRead(analogInPin) < 100) // si la valeur lue est correspondante a la nuit
{
if (!tourne && ((millis() - chrono) > retard))fermeture();
}
else chrono = millis();
if (sensorValuebas == LOW && analogRead(analogInPin) < 100) // si fin de course bas activé et (cellule <100 sinon empeche l'ouverture de la porte)
{
stop();
ouvert = false;
clos = true;
}
}
}
j'ai remarqué que sur le code d'Achess qu'il y avait un conflit lorsque l'on charge le code
si la porte est fermé et qu'il fait jour rien se passe il faut cacher la cellule et la on repart sur le fonctionnement normal ce n'est absolument pas bloquant
et si comprend bien c'est liée a la condition de la cellule et du capteur
