Go Down

Topic: Interrupteur crépusculaire temporisé [Résolu] (Read 930 times) previous topic - next topic

Maverik09

Apr 25, 2017, 07:18 pm Last Edit: Apr 26, 2017, 07:06 am by Maverik09
Bonjour,

Voilà je me tourne vers vous car j'ai un petit souci de programmation que je n'arrive pas à mettre en pratique. Et pourtant, la solution doit être fort simple...

Mon épouse à la fâcheuse tendeuse de laisser la lumière de la cave allumé. J'aimerai qu'un buzzer se mette en route après une dizaine de minute de luminosité perçue. J'ai déjà le code pour le fonctionnement basique de l'interrupteur crépusculaire, mais n'arrive pas à intégrer la fonction temporisation.
J'ai essayé avec Delay mais sans succès. Est-ce que millis peut être plus pertinent dans ce cas ?
Voici le code sans temporisation ? Pouvez-vous juste me guider sans me fournir la réponse clé en main, j'aimerai trouver par moi même avec votre aide.

//set pin numbers
const int LEDPIN = 13;
const int buzzerpin = 12;
const int ldrpin = A1;

void setup() {
Serial.begin(9600);

pinMode(LEDPIN,OUTPUT);
pinMode(buzzerpin,OUTPUT);
pinMode(ldrpin, INPUT);
 
}

void loop() {
  int ldrstatus = analogRead(ldrpin);

 
  if (ldrstatus>= 750){
 
   
   
    tone(buzzerpin, 100);
    digitalWrite(LEDPIN, HIGH);
    delay(200);
    noTone(buzzerpin);
    digitalWrite(LEDPIN, LOW);
    delay(100);

    Serial.println("---------ALARM ACTIVATED----------");
 }
 
 
     
     
else{
  noTone(buzzerpin);
  digitalWrite(LEDPIN, LOW);
  Serial.println("ALARM DEACTIVATED");
}
}

Maverik09

Finalement c'est très simple effectivement, dans ma boucle "else" j'ai rajouté delay(montemps);
la le buzzer "buzz" temps que je n'ai pas éteint la lumière. Et temps que la lumière est éteinte, le buzzer ne sonne pas. Et a l'allumage de la lampe, on commence à compter jusqu'à 20secondes par exemple avant de faire sonner le buzzer.
Donc j'ai ce qu'il me faut. Merci quand même ! :)

else{
  delay(20000);
  noTone(buzzerpin);
  digitalWrite(LEDPIN, LOW);
  Serial.println("ALARM DEACTIVATED");
}
}

padouet

Puisque tu as la solution merci de mettre [résolu] dans le titre...

Pour mieux attirer l'attention, pourquoi ne pas faire des bips à ton buzzer plutôt que de le faire sonner de façon continue ?
Theory is when you know how it works and nothing happens.
Practice is when everything works and nobody knows why.
I gathered theory and practice: Nothing works ... and nobody knows why!

J-M-L

Si votre Arduino doit pouvoir faire autre chose que de rester bloqué dans la fonction delay() vous pouvez jeter un œil sur du code pour une machine à état - ça pourrait être adapté à vos besoins (cf mon tuto sur le sujet)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Maverik09

Puisque tu as la solution merci de mettre [résolu] dans le titre...

Pour mieux attirer l'attention, pourquoi ne pas faire des bips à ton buzzer plutôt que de le faire sonner de façon continue ?
C'est déjà ce qu'il fait. J'ai inséré un delay de 200ms pour le faire biper de façon startrekienne ^^"

Go Up