Machine à états finis sur un Arduino (1 / 7 étapes)

Étape 1: Ce qui est une Machine à états finis ?

Une machine à états finis, ou EFM en abrégé, est une machine (de façon abstraite) qui possède un nombre fini et défini de possibles États dont un seul est actif à la fois. Les États sont reliées par des transitions. Ces transitions ont une certaine direction et ne peuvent être passées dans ce sens – pensez-y comme une rue à sens unique. En outre, une transition a certaines entrées et sorties. Vous pouvez considérer ces comme une condition, vous devrez remplir avant que vous pouvez utiliser la rue à sens unique, et quand on l’utilise, un signal est donné au monde extérieur – par exemple, vous devrez payer des frais avant que vous pouvez utiliser la rue et ensuite votre voiture est comptée.
Un exemple très basique d’un FSM se trouve dans de nombreuses maisons : en poussant un bouton active la lumière dans la cage d’escalier. Après un certain temps, la lumière s’éteint automatiquement. Vous pourriez modéliser ceci comme un FSM avec deux États : allumé et éteint. Il y a une transition d’un État à l’autre et vice versa et la condition est d’appuyer sur le bouton dans une seule direction et qu’un certain temps écoulé dans l’autre sens. Nous pouvons modéliser ce comportement dans un diagramme, la soi-disant statechart. Jetez un oeil à la photo 1.

Le cercle noir plein marque le point d’entrée de l’ordinateur d’État (tout a bien commencer quelque part). Donc, si notre machine démarre, le voyant est éteint. Il reste comme ça, jusqu'à ce que nous utilisons un interrupteur de lumière – la lumière va alors et s’éteint au bout de 30 secondes. En pressant la touche lorsque le feu est déjà allumé ne fait rien, et après 30 secondes, le voyant s’éteint. Ce FSM n’a pas les sorties. Du point de vue mathématique traditionnelle, l’État allumé est équivalente, avec la lumière en marche, mais quand nous commençons vraiment à notre système de programme, bien sûr, nous aurons besoin d’ajouter une sorte de sortie qui fait réellement quelque chose – comme allumer la lumière.

Cette machine de l’état fonctionne, mais c’est un bon système ? Est assez dure 30 secondes ? Pour la plupart des gens, probablement oui, mais le peuple le 10e étage n’aimerez pas notre système. Ils pourraient avoir besoin de plus de 30 secondes, nous allons dire dont ils ont besoin de 40 secondes. Mais ils ont besoin d’attendre les 30 secondes pour passer et le voyant s’éteint pour activer de nouveau la lumière, et qu’ils pourraient être au milieu d’un escalier puis. Donc, ce que nous devons faire est pour permettre à la minuterie de se réinitialiser lorsque le voyant est allumé et le touche à nouveau. Pour cela, nous aurons besoin de re-modéliser notre système, le démarrage de la minuterie de modélisation en tant que sortie de nos transitions et en ajoutant une autre transition, comme peut être vu dans la photo 2.

Ici, vous pouvez voir deux choses :

  • Il est parfaitement acceptable pour une transition passer à l’État, qu'il vient
  • Une transition peut avoir un événement comme une condition pour que la transition se produire ainsi qu’assignés des sorties. L’information qui reste à la barre oblique est l’événement, les informations sur le droit soient la sortie. Des événements sont également considérées comme entrées à la machine, et c’est ce qu’on appelle un entrée-sortie-automate.

Articles Liés

Machine à états finis Arduino et multitâches

Machine à états finis Arduino et multitâches

Une machine à états finis est diagramme utilisé pour organiser les tâches pour contrôler plusieurs systèmes insdustrial (production, radiateur, pompe, convoyeurs...).Tous ces systèmes comprennent des États (associé à une « action », c'est à dire: Dém
Bateau pilote automatique - basée sur l’Arduino

Bateau pilote automatique - basée sur l’Arduino

Voici comment construire un pilote automatique qui peut diriger un RC bateau à waypoints ! Il est facile à construire, basé sur la populaire plate-forme Arduino et idéal pour les amateurs qui veulent certaine pratique soudure ! Avec ce pilote automat
Calculatrice simple basée sur l’Arduino MEGA

Calculatrice simple basée sur l’Arduino MEGA

De nos jours, faire des calculs n'est pas un problème du tout. Calculatrices puissants peuvent être achetés pour quelques euros ou faciles à installer sur les téléphones et les ordinateurs. Cependant, nous avons décidé de transformer notre Arduino en
Tachymètre optique axée sur l’Arduino

Tachymètre optique axée sur l’Arduino

plus de dix ans, j'ai mis en place une page web avec des instructions détaillées sur la construction d'un moteur électrique simple basé sur l'un de monde télévisé de le Beakman. Je l'ai appelé la page "moteur électrique de Beakman" et au fil des
Suivre votre voiture avec un Lojack axée sur l’Arduino

Suivre votre voiture avec un Lojack axée sur l’Arduino

Vol de voiture est un frein réel ! Augmentez vos chances de récupérer votre voiture en installant ce tracker simple axée sur l'Arduino dans votre voiture.Ce projet est assez simple et serait un bon projet pour un nouveau programmeur Arduino vous cher
Présentation Climaduino - Thermostat axée sur l’Arduino vous contrôler depuis votre téléphone !

Présentation Climaduino - Thermostat axée sur l’Arduino vous contrôler depuis votre téléphone !

Mise à jour :Il y a une nouvelle version de la Climaduino et le contrôleur Climaduino avec des changements très importants.Prend en charge plusieurs zonesUtilise la Arduino YúnFonctionne avec a/c centraleCommunique à l'aide du protocole MQTT (peut in
Animation sur un Arduino et K.K. Bossa chanson

Animation sur un Arduino et K.K. Bossa chanson

Que fait-elle ?Joue la chanson K.K. Bossa de Animal Crossing et une animation à l'aide d'un Arduino Uno, un piezo et un 16 X 2 LCD.L'animation est basée sur des Animal Crossing New Leaf.Le top vidéo est avec les villageois masculins et bas vidéo avec
Chronométrage sur ESP8266 & arduino uno sans un RTC (Real Time CLock) ?

Chronométrage sur ESP8266 & arduino uno sans un RTC (Real Time CLock) ?

Comme le titre l'indique, j'ai testé le suivi des temps sur mon arduino uno et l'ESP8266 / conseils Wemos D1 (programmés avec arduino) sans l'utilisation de bibliothèques, internet ou une unité de CCF. Beaucoup de grands instructables ici sur le site
Vous vérifier l’état de wifi avec Arduino Yun

Vous vérifier l’état de wifi avec Arduino Yun

Dans ce tutoriel, vous apprendrez comment obtenir votre Arduino Yun vers le haut et en cours d'exécution afin que vous puissiez exécuter des croquis d'exemple pour le Yun. Dans ce cas, je vais vous montrer comment faire pour exécuter l'exemple WiFiSt
CONDUIT comme lightsensor sur l’arduino

CONDUIT comme lightsensor sur l’arduino

je vous écris cette instructable comme une réponse à certaines des questions de Paolo.[J'ai fait quelques expériences plus sur ce sujet dans ce : Ible]Il n'est pas difficile à utiliser une une LED comme un capteur sur l'Arduino. Il suffit de mettre u
Utilisez vos capteurs de Téléphone android sur l’arduino !

Utilisez vos capteurs de Téléphone android sur l’arduino !

Bonjour, ceci est mon tout premier étape par étape instructable et aujourd'hui, nous allons apprendre comment les capteurs dans votre smartphone android peuvent communiquer avec votre arduino.Dans les smartphones modernes, il y a beaucoup de capteurs
Verre les ordinateurs basés sur l’Arduino Uno

Verre les ordinateurs basés sur l’Arduino Uno

Pour mon projet diplômés de masters ("Gowing ordinateurs, connexion corps, Cutting the Cord") de Konstfack Collège d'artisanat et de Design (céramique et verre/CRAFT), j'ai fait 3 verre ordinateurs basés sur les spécifications de l'Arduino Uno.
Une horloge de QR-code axée sur l’arduino

Une horloge de QR-code axée sur l’arduino

J'ai eu cette idée pendant un certain temps, mais j'ai jamais eu la chance de l'essayer. Vendredi, un collègue m'a donné un écran LCD pour Arduino, et j'ai pensé que c'était le bon moment pour construire une horloge qui communiquent à la fois par le
Plusieurs LED clignotant sur l’Arduino

Plusieurs LED clignotant sur l’Arduino

dans ce tutoriel, je vais vous montrer comment faire plusieurs LEDs clignotent avec Arduino.  Vous aurez besoin de trois LEDs, fils de raccordement, maquette et Arduino.Étape 1: Programmer l'Arduino Maintenant vous devez coller le code suivant dans l