UN SIMULATEUR DE B200

UN SIMULATEUR DE B200

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
  }
}

 



16/01/2013
0 Poster un commentaire

A découvrir aussi


Inscrivez-vous au blog

Soyez prévenu par email des prochaines mises à jour

Rejoignez les 66 autres membres