Mini Défi #7 : Clignotement de lampe Résolu
🔧 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
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;

Koala097
Yoyo
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 :

Koala097
Yoyo
J'ai remarqué plus tard qu'on peut supprimer le "T:1.DN" sur la ligne TON
SebastienLL
None
// 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;

Maitre du Jeu
"One who knows nothing can understand nothing" - Master Xehanort
📅 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
bmarco
None
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