Table des matières:
- Fournitures
- Étape 1: Définir comment cela fonctionne: Feu de circulation pour piétons
- Étape 2: Construire le circuit
- Étape 3: Création de la machine d'état
- Étape 4: Exécuter l'exemple
- Étape 5: Code C++ généré
- Étape 6: Obtenez l'exemple
Vidéo: State Machine sur Arduino - un feu de circulation pour piétons : 6 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Salut ! Je vais vous montrer comment programmer un feu de circulation pour piétons pour Arduino en C++ avec une machine à états finis en utilisant YAKINDU Statechart Tools. Cela démontrera la puissance des machines d'état et peut être utilisé comme modèle pour d'autres projets.
Fournitures
Vous n'avez besoin que d'un Arduino, de boutons-poussoirs, de LED, de cavaliers et de résistances.
Matériel
- 2x bouton poussoir
- 2x feux de circulation ou vous pouvez utiliser des LED avec des résistances de 220 Ohm
- 2x résistances 10k Ohm
- Planche à pain
- Sauteur
- Arduino Uno/Mega (ou tout autre, qui a au moins 8 GPIO)
Logiciel
- Outils de diagramme d'états YAKINDU
- Eclipse C++ IDE pour Arduino
Étape 1: Définir comment cela fonctionne: Feu de circulation pour piétons
Dans un premier temps, nous devons spécifier comment le feu de circulation piéton doit fonctionner. J'ai essayé de résumer les puces:
- Deux feux de circulation sont utilisés - un pour les voitures, l'autre pour les piétons
- Le feu de circulation peut être allumé à l'aide d'un bouton
- Le piéton peut demander de traverser la rue en appuyant sur un bouton
- Le feu de circulation éteint est indiqué par le clignotement des deux LED jaunes
- Après l'allumage, le feu de circulation attend 10 secondes en mode sans échec
- Après le mode sans échec, les voitures ont toujours une phase verte jusqu'à ce qu'un piéton lance une demande
- La demande de passage des piétons est indiquée par le basculement de la LED jaune
De plus, certains événements temporels dépendent du fonctionnement d'un feu de circulation.
Étape 2: Construire le circuit
Commençons à mettre en place le circuit. Dans mon exemple, comme vous pouvez le voir sur l'image d'aperçu, j'ai utilisé un Arduino Mega 2560, mais tous les autres Arduino avec au moins huit GPIO devraient convenir. De plus, j'ai acheté des feux de circulation 5V sur Amazon. Recherchez simplement Traffic Light Arduino. Sinon, vous pouvez simplement utiliser six LED différentes. De plus, vous avez besoin de deux boutons poussoirs et de deux résistances de 10k Ohm.
Les trois LED de gauche sont utilisées pour la circulation automobile et les trois LED de droite pour les piétons, la jaune pouvant indiquer une demande.
Étape 3: Création de la machine d'état
Ainsi, comme vous pouvez le voir, il existe deux états principaux avec des membres composites - état activé et état désactivé. Vous pouvez basculer entre les deux états en utilisant l'événement onOff, qui est câblé au bouton ON/OFF. Dans l'état initial, l'état éteint, les deux LED jaunes commencent à clignoter toutes les secondes. Une fois le feu allumé, il démarre en Safestate. Après 10 secondes, le comportement typique des feux de circulation sera géré. La LED rouge et jaune s'allumera dans l'état StreetPrepare et le feu de circulation passera au vert après 2 secondes supplémentaires. Désormais, la machine d'état attend l'événement piétonRequest, qui est câblé au deuxième bouton. Après l'envoi de l'événement, la demande sera indiquée en basculant la LED jaune toutes les secondes dans l'état PedWating. 7 secondes plus tard, le feu de circulation passera d'abord au jaune, puis au rouge jusqu'à ce que les piétons reçoivent le signal pour passer à l'état PedestrianGreen. Après cela, le PedestrianRed est activé et le cycle se répète. Cela ne peut être interrompu qu'en éteignant à nouveau le feu.
Étape 4: Exécuter l'exemple
Étape 5: Code C++ généré
Le code C++ généré est un cas de commutation classique pour gérer la logique de la machine d'état. Ceci est juste un extrait de code de ce à quoi cela ressemble:
void TrafficLightCtrl::runCycle(){ clearOutEvents(); for (stateConfVectorPosition = 0; stateConfVectorPosition < maxOrthogonalStates; stateConfVectorPosition++) { switch (stateConfVector[stateConfVectorPosition]) { case main_region_on_r1_StreetGreen: { main_region_on_r1_StreetGreen_react Pause; } cas main_region_on_r1_PedWaiting_r1_waitOn: { main_region_on_r1_PedWaiting_r1_waitOn_react(true); Pause; } par défaut: pause; } clearInEvents(); }
Étape 6: Obtenez l'exemple
L'ensemble de l'exemple est prêt à être compilé et exécuté. Il est livré avec YAKINDU Statechart Tools, qui est gratuit pour une utilisation non commerciale. Après téléchargement, vous pouvez importer l'exemple directement dans l'outil:
Fichier -> Nouveau -> Exemple -> Exemples de diagrammes d'états YAKINDU -> Suivant -> Feu de circulation (C++) pour Arduino
> ICI vous pouvez télécharger YAKINDU Statechart Tools <<
Vous pouvez commencer par un essai de 30 jours. Ensuite, vous devez obtenir une licence, qui est gratuite pour une utilisation non commerciale !
Conseillé:
6 ans pour créer un feu de circulation de base avec scratch pour Arduino : 3 étapes
6 ans Création d'un feu de circulation de base avec Scratch pour Arduino : Mon fils était déjà curieux avec mes projets Arduino. Il a joué pendant un certain temps avec Snap Circuits et LEGO. Il a également commencé à construire des projets Scratch. Ce n'était qu'une question de temps pour nous de jouer avec Scratch pour Arduino. C'est notre premier projet. Ob
Feu de circulation Arduino : 3 étapes (avec photos)
Feu de circulation Arduino : cette instructable est dérivée de : Arduino-Traffic-Light-Simulator J'ai utilisé le dessin de cette instructable, pour créer un feu de circulation séparé. J'ai apporté les modifications suivantes : les trous pour les LED sont plus petits, pour les LED de 5 mm (au lieu de 10 mm)
Projet de feux de circulation Arduino [avec passage pour piétons] : 3 étapes
Projet de feux de circulation Arduino [avec passage pour piétons] : si vous recherchez quelque chose de facile, simple et en même temps que vous voulez impressionner tout le monde avec votre Arduino, le projet de feux de circulation est probablement le meilleur choix, surtout lorsque vous êtes un débutant dans le monde d'Arduino. Nous verrons d'abord ho
Feu de circulation Arduino : 8 étapes (avec photos)
Feu de circulation Arduino : ce projet a été réalisé avec des LED de 5 mm et du matériel de montage à LED T1-3/4 Clear Standard pour une meilleure visualisation, et donc en utilisant 3 LED pour afficher séparément ses couleurs rouge, jaune et amp; Vert respectivement
Feu de circulation interactif intelligent : 5 étapes (avec photos)
Feu de circulation interactif intelligent : prêt à construire le feu de circulation le meilleur et le plus interactif au monde ? Bon! Dans ce tutoriel, nous expliquerons comment vous pouvez en construire un vous-même en utilisant Arduino. Composants requis :- Arduino (..duh)- LM317 Mosfet- 2x 60cm Bandes LED RVB analogiques (12V)- Tube PVC