Mini Défi #7 : Clignotement de lampe Résolu

04/07/2025 Apprentissage PLC > Exercices et projets d'entraînement

🔧 Contexte :

Tu dois faire clignoter une lampe de manière régulière, 1 seconde ON / 1 seconde OFF, en boucle.

Mais attention : tu veux que la lampe clignote uniquement quand un bouton est appuyé.
Dès que le bouton est relâché, la lampe s’éteint immédiatement.

 

🧠 Objectifs :

  • Gérer un clignotement alterné et stable

  • Interrompre proprement le clignotement dès relâchement du bouton

  • Ne pas utiliser de blocs BLINK tout prêts (défi de logique !)

 

🎯 À toi de jouer :

  • Propose ta solution en Ladder, ST, ou même en pseudo-code

  • Bonus : ajoute une temporisation d’anticoincement pour éviter les rebonds

Réponses

05/07/2025 00:22

Ma proposition pour le defie7 

if button then
 TON_1 (IN := TON_2.Q,PT := T#1s);      
 TON_2 (IN := NOT TON_1.Q,PT := T#1s);
  END_IF;
 if TON_2.Q then   

    lampe :=flashlight;  
   END_IF;

06/07/2025 12:00

Voici ma réponse en ladder, biensûr si vous avez des idées d'amélioration n'hésitez pas : I:0.0 représente mon bouton et O:0.0 représente la lampe : 

06/07/2025 12:21

J'ai remarqué plus tard qu'on peut supprimer le "T:1.DN" sur la ligne TON

06/07/2025 21:44

// TON1 : TEMPS DE ON
// TON2 : TEMPS DE OFF

IF BOUTON 
THEN TON1(TON2.Q,t#1s);
    TON2(NOT TON1.Q,t#1s);
    LAMPE:=TON2.Q;
    ELSE LAMPE:=FALSE;
END_IF;

08/07/2025 07:07

📅 Correction du Mini-Défi #7 – Clignotement de lampe

Faire clignoter une lampe ? Facile.
Mais le faire proprement, avec interruption immédiate et sans blocs tout faits ? C’est là qu’on teste les vrais réflexes 🔧

 

🎯 Objectif :

  • Lampe active 1 seconde ON / 1 seconde OFF

  • Fonctionnement uniquement si le bouton est appuyé

  • Extinction immédiate dès relâchement

 

✅ Exemple de solution en Structured Text :

🔄 Variante Ladder :

.

 

🔧 Points clés :

  • Pas de BLINK

  • Interruption gérée dès le relâchement du bouton

  • Séparation entre tempo et commande lampe

23/08/2025 20:11
Ce message a été supprimé.
23/08/2025 20:13

Bonjour 

Je voulais proposer ma variante avec l'utilisation de la valeur de temporisation en cours. J'utilise beaucoup cette méthode pour faire ce type d'application de Cligno asynchrone ou d'étape

 

VAR

    Cligno : Bool := False;

    Tempo : TON

    Bouton : Bool := False;

End_Var

 

 

Tempo(In := Bouton AND Not Tempo.Q , PT := T#2s) 

 

Cligno := Tempo.ET<1000;

 

 

Lampe := Cligno