Bonjour,
J'essaie de m'inspirer des posts existants pour faire une porte automatique (qui s'ouvre avec le soleil, et se ferme avec la nuit).
Le montage est assez simple: pas de capteurs fin de course, une LDR pour la détection de luminosité, un L298P pour le pilotage du vérin 12V, une résistance de 10kohms, une alim DC
Je pense qu'il y a une erreur dans mon code car rien ne se passe lorsque je téléverse le programme sur l'Arduino, que je masque la LDR pour l'assombrir ou pas, le vérin ne bouge pas.
int LuminositePin = A0; // Déclaration broche LDR
int Luminosite = 0; // Variable de la luminosité
int Seuil_Jour = 450; // Variable de luminosité seuil pour le jour
int Seuil_Nuit = 200; // Variable de luminosité seuil pour la nuit
int Tempo_luminosite = 2000; // Temporisation luminosité 20 secondes = 20000ms
boolean mem_h = false, mem_b = false, mem_fdc_ferme = false, mem_fdc_ouvert = false; // Déclaration des mémoires
boolean mem_lumiere = false; // Déclaration de la mémoire lumière
boolean mem_init = false; // Déclaration de la mémoire initialisation
boolean Detecte_lumiere = false; // Déclaration variable détection lumière
boolean Jour = true; // Déclaration variable Jour = 1 | Nuit = 0
boolean Initialisation = false; // Déclaration variable initialisation
boolean tempoActive = false; // État d'activation de la tempo
unsigned long tempoDepart = 0; // Temps à l'activation de la tempo
void setup() {
pinMode(12, OUTPUT);
}
void Rentree_verin(){
digitalWrite(12, HIGH); // Sortie du vérin
analogWrite(3, 255); // Vitesse maximale pour le vérin
delay(10000);
}
void Sortie_verin(){
digitalWrite(12, LOW); // Rentrée du vérin
analogWrite(3, 255); // Vitesse maximale pour le vérin
delay(10000) ;
}
void loop() {
Luminosite = analogRead(LuminositePin);
if (Luminosite >= Seuil_Jour)
{
Detecte_lumiere = true;
}
if (Luminosite <= Seuil_Nuit)
{
Detecte_lumiere = false;
}
if (Detecte_lumiere != mem_lumiere) {
tempoActive = true;
tempoDepart = millis();
}
if (Detecte_lumiere && tempoActive && ((millis() - tempoDepart) >= Tempo_luminosite))
{
Jour = true;
tempoActive = false;
Sortie_verin();
}
mem_lumiere = Detecte_lumiere;
if (!Detecte_lumiere && tempoActive && (millis() - tempoDepart) >= Tempo_luminosite)
{
Jour = false;
tempoActive = false;
Rentree_verin();
}
mem_lumiere = Detecte_lumiere;
}
Merci d'avance pour votre aide