Exemples¶
Tous les exemples sont dans StateCharts.Examples. Chacun est couvert par un scénario de la suite de vérification.
TrafficLight — feu tricolore¶

Le pseudo-état initial mène à red (4 s), puis green (3 s), yellow (1 s), et retour à red. Les transitions sont des événements temporels after(delay).
color.y(blocActions.SetIntegerrelié aux sortiesdo) : 1 = rouge, 2 = jaune, 3 = vert ;cycles: nombre d'entrées dansred, compté sur l'impulsionred.entry. Il vaut 1 dès t = 0 ;green.entry,red.exit,goGreen.effect: impulsions de 0,1 s à 4 s.
Thermostat — régulation tout-ou-rien d'une pièce¶

Une pièce (capacité thermique, pertes vers l'extérieur à 5 °C) chauffée par un radiateur de 500 W. Le régulateur est une machine à états utilisée comme bloc, ThermostatChart (hérite de StateCharts.Chart) : entrée T, sortie heating.
off → on: transition de complétion avec la garde[T < TLow](19 °C) ;on → off: événement de changementwhen(T > THigh)(21 °C) ;heatingest la sortiedodeon.

La pièce part de 15 °C : la machine entre dans off et le quitte aussitôt pour on, au même instant. La température oscille ensuite entre 19 et 21 °C. À tracer : room.T (en °C) et controller.heating ; ouvrir controller (clic droit → Open Class) pour voir le diagramme.
Toggle — bouton poussoir¶

Un bouton (button, appuyé 0,2 s chaque seconde à partir de 0,5 s) allume puis éteint une lampe à chaque appui. Les deux transitions ont un déclencheur signal : elles franchissent au front montant de leur entrée signal, si bien que le bouton maintenu n'éteint pas la lampe aussitôt.
on.do: la lampe ;on.entry,on.exit: impulsions à l'allumage et à l'extinction ;switchOn.effect,switchOff.effect: impulsions à chaque franchissement ;presses: nombre de franchissements.
Sorting — tri de pièces¶

Une pièce arrive chaque seconde (événement signal sur arrival). Le pseudo-état de choix choice l'envoie vers heavy ou light selon son poids, puis la machine revient dans idle après 0,5 s (after(0.5 s)). Après quatre pièces, l'arrivée suivante mène à l'état final done.
Les trois transitions qui partent du choix montrent les priorités : finish [count >= 4] (1), toHeavy [weight > 5] (2), toLight sans garde (3 : la branche « sinon »).
AutomaticDoor — porte automatique¶

Un état avec trois transitions sortantes. La porte s'ouvre sur appel (closed → opening), passe à open quand elle est entièrement ouverte (when(door.y >= 1)), puis à closing après 5 s. La position de la porte est l'intégrale de la vitesse donnée par les sorties do de opening et closing (blocs motor et door).
Depuis closing, trois transitions partent de trois côtés différents :
reopenObstacle(priorité 1, côté bas) : garde[obstacle.y], un obstacle rouvre la porte ;reopenCall(priorité 2, côté gauche) : événement signal, un appel pendant la fermeture rouvre la porte ;closedReached(priorité 3, côté haut) : événementwhen(door.y <= 0), la porte est fermée.
Scénario : appels à 1 s, 14 s et 30 s, obstacle à 23 s. La première fermeture (9 s) va jusqu'au bout ; la deuxième (22 s) est interrompue par l'obstacle, la troisième (29 s) par l'appel ; la dernière (36 s) se termine à 39 s. À tracer : door.y et les sorties do des états.