Code SIOC des clignotants
Cet article décrit la méthode que j'ai utilisée pour programmer des clignotants de fréquence différente de la seconde.
En effet je trouve qu'un tableau de bord qui commence à s' étoffer à besoin de clignotements différents pour attirer l'attention et se rapprocher du réel.
Au départ j'utilisais le code de Nico Kahn basée sur la variable timer de Fs, ce blinker comptait jusqu'à 9999 et repartait à zéro.
Pour une raison que je n'ai jamais pu déterminer ce compteur qui me servait à l'époque à faire clignoter mon alarme rouge warning, s'arrêtait et bloquait de façon aléatoire.
Il me fallait imaginer une autre solution et n'ayant rien trouvé sur les forums, l'idée m'est venue d'utiliser la variable des secondes de Fs, en effet on est sûr qu'elle change toutes les secondes, elle ne plante pas et donc elle permet de lancer des commandes, des routines ou des vérifications toutes les secondes.
Dans un premier temps, j'ai programmé derrière cette variable, un bout de code avec la fonction modulo pour faire clignoter ma led, cela fonctionne de façon impeccable, je n'ai plus d'arrêt de compteur.
Code clignotement à la seconde
Var 0104, name sec_fs, Link FSUIPC_INOUT, Offset $023a, Length 1 // secondes de FS
{
&clignoseconde = MOD &sec_fs ,2
&clignodemisec = 1
&clignodemisec = delay 0, 50
}
var 0913, name clignoseconde
{
IF &MASTER_WARNING > 1 // si au moins 1 alarme rouge ON la led Warning clignote
{
IF &BATTERY = 1
{
&WARNING_LED = &clignoseconde
}
}
ELSE
{
&WARNING_LED = 0
}
}
Ensuite il m'est venu l'idée de rajouter des fréquences de clignotement supérieures, pour ce faire j'ai tout simplement créé des variables supplémentaires
Exemple clignodemisec
var 0914, name clignodemisec // clignotant 1/2 seconde
{
&clignoquartsec = 1
&clignoquartsec = delay 0, 15
}
Principe de fonctionnement
Comme la variable clignosec change toutes les secondes, je rajoute sous cette variable un bout de code qui change l'état de la variable clignodemisec et la passe à l'état 1.
Ensuite derrière cette ligne une fonction delay éteint la led.
Cette variable cligno demisec va donc changer d'état toutes les demi secondes.
Il suffit ensuite de créer une variable clignoquartsec (quart de seconde) et de mettre sous la variable clignodemisec une ligne qui change la variable clignoquartsec puis une fonction delay
A son tour la variable clignoquartsec va changer d'état tous les quarts de secondes, on peut enchainer ainsi sur le huitième de seconde
Le code des autres clignotants
var 0918, name clignoquartsec // clignotant 1/4 seconde
{
&clignohuitsec = 1
&clignohuitsec = delay 0, 7
}
var 0919,name clignohuitsec // clignotant huitième de seconde
{
if &ALT_ALERT_LEd = 1
{
&ALT_ALERT_LE1 = &clignohuitsec
}
}
Inscrivez-vous au blog
Soyez prévenu par email des prochaines mises à jour
Rejoignez les 122 autres membres