-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFSMeclairage.h
59 lines (45 loc) · 2.24 KB
/
FSMeclairage.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Lumieres::FSMeclairage.h
// Exemple pour le forum 3rails / Julie Dumortier / Licence GPL
//
// Ce fichier concerne la machine à état fini pour gérer un éclairage
//
// === En principe vous n'avez pas à modifier ce fichier =======================
// type d'éclairage
const byte ETYPE_STANDARD = 0;
const byte ETYPE_NEONNEUF = 1;
const byte ETYPE_NEONVIEUX = 2; /* glitch aléatoire */
const byte ETYPE_GYROPHARE = 3;
const byte ETYPE_FLASH = 4;
const byte ETYPE_SOUDURE = 5; /* un seul Poste de soudure par Arduino */
const byte ETYPE_FIRE = 6; /* une seule simulation de feu par Arduino */
const byte ETYPE_CLIGNOTANT= 7; /* éclairage qui ne clignote que s'il n'est pas permanent ! */
const byte ETYPE_BUZZER = 8; /* un seul buzzer par Arduino - se lie automatiauement au Poste de soudure si présent */
const byte ETYPE_SERVO = 128; /* un seul servomoteur sur D9 ou D10 */
const byte ETYPE_NOTUSED = 255;
// state of the FSM : "stateRunning"
// chaque éclairage a un état particulier et un graphe de transition
const byte estate_OFF = 0; /* éclairage éteint */
const byte estate_STPWRUP = 1; /* éclairage en début d'allumage --> démarre la séquence PWRUP sauf si l'éclairage est déjà allumé */
const byte estate_PWRUP = 2; /* éclairage en allumage --> ON quand la séquence PWRUP sera terminée*/
const byte estate_ON = 3; /* éclairage allumé */
// blink transition pour un éclairage
typedef struct _blink {
int duration;
byte intensity;
} blink;
// par défaut, une sortie n'est connectée à aucune entrée
const int OutputNotLinked = 255;
// parametres d'un éclairage
typedef struct _paramOutput {
byte stateRunning; /* état (OFF, STPWRUP, PWRUP ou ON) */
byte statePwrup; /* dans l'état PWRUP, mémoriser la transition en cours */
int stateDelay; /* delay avant la prochaine transition ON OFF */
blink* pblink; /* pointeur sur la table des transitions */
byte maxblink; /* taille de la table des transitions */
byte nextState; /* état une fois que la table des transitions a été parcourue */
byte param;
byte link; /* si l'éclairage est lié à une entrée */
long int duration;
} paramOutput;
// Pour chaque sortie
paramOutput gLight[maxOutputs];