Índice:
- Suprimentos
- Etapa 1: definir como funciona: semáforo de pedestres
- Etapa 2: construir o circuito
- Etapa 3: Criação da máquina de estado
- Etapa 4: executando o exemplo
- Etapa 5: código C ++ gerado
- Etapa 6: obtenha o exemplo
Vídeo: Máquina de estado no Arduino - um semáforo de pedestres: 6 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
Olá! Vou mostrar a você como programar um semáforo de pedestres para Arduino em C ++ com uma máquina de estado finito usando YAKINDU Statechart Tools. Isso demonstrará o poder das máquinas de estado e pode ser usado como um modelo para projetos futuros.
Suprimentos
Você só precisa de um Arduino, alguns botões, LEDs, jumper e resistores.
Hardware
- 2x botão de pressão
- 2x semáforos ou você pode usar LEDs com resistores de 220 Ohm
- 2 resistores de 10k Ohm
- Tábua de pão
- Saltador
- Arduino Uno / Mega (ou qualquer outro, que tenha pelo menos 8 GPIOs)
Programas
- YAKINDU Statechart Tools
- Eclipse C ++ IDE para Arduino
Etapa 1: definir como funciona: semáforo de pedestres
Primeiramente, precisamos especificar como o semáforo de pedestres deve funcionar. Tentei resumir os pontos principais:
- Dois semáforos são usados - um para os carros e outro para os pedestres
- O semáforo pode ser ligado usando um botão
- O pedestre pode solicitar o cruzamento da rua pressionando um botão
- O semáforo desligado é indicado piscando os dois LEDs amarelos
- Depois de ligar, o semáforo espera por 10 segundos no modo de segurança
- Após o modo de segurança, os carros sempre têm uma fase verde até que um pedestre inicie uma solicitação
- A solicitação de pedestres para travessia é indicada pelo LED amarelo alternado
Além disso, existem alguns eventos de tempo dependendo da forma como o semáforo funciona.
Etapa 2: construir o circuito
Vamos começar a configurar o circuito. No meu exemplo, como você pode ver na imagem de visualização, usei um Arduino Mega 2560, mas todos os outros Arduino com pelo menos oito GPIOs devem funcionar. Além disso, comprei alguns semáforos de 5V na Amazon. Basta pesquisar por Traffic Light Arduino. Caso contrário, você pode simplesmente usar seis LEDs diferentes. Além disso, você precisa de dois botões e dois resistores de 10k Ohm.
Os três LEDs da esquerda são usados para o tráfego de automóveis e os três LEDs da direita para os pedestres, onde o amarelo pode indicar uma solicitação.
Etapa 3: Criação da máquina de estado
Portanto, como você pode ver, há dois estados principais com membros compostos - estado ativado e estado desativado. Você pode alternar entre os dois estados usando o evento onOff, que está conectado ao botão ON / OFF. No estado inicial, o estado desligado, os dois LEDs amarelos começam a piscar a cada segundo. Uma vez que o semáforo foi ligado, ele começa no Safestate. Após 10 segundos, o comportamento típico dos semáforos será tratado. O LED vermelho e amarelo acenderá no estado StreetPrepare e o semáforo ficará verde após mais 2 segundos. A partir de agora, a máquina de estado está aguardando o evento pedestrianRequest, que está conectado ao segundo botão. Após o envio do evento, a solicitação será indicada alternando o LED amarelo a cada segundo no estado PedWating. 7 segundos depois, o semáforo será alterado primeiro para amarelo e depois para vermelho até que os pedestres recebam o sinal para entrar no estado PedestrianGreen. Depois disso, o PedestrianRed é ativado e o ciclo se repete. Isso só pode ser interrompido desligando o semáforo novamente.
Etapa 4: executando o exemplo
Etapa 5: código C ++ gerado
O código C ++ gerado é um caso de comutação clássico para lidar com a lógica da máquina de estado. Este é apenas um trecho de código de sua aparência:
void TrafficLightCtrl:: runCycle () {clearOutEvents (); para (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {switch (stateConfVector [stateConfVectorPosition]) {case main_region_on_r1_StreetGreen: {main_region_on_r1_StreetGreen_react (true); pausa; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (true); pausa; } padrão: break; } clearInEvents (); }
Etapa 6: obtenha o exemplo
Todo o exemplo está pronto para compilar e executar. Ele vem com as ferramentas YAKINDU Statechart, que são gratuitas para uso não comercial. Após o download, você pode importar o exemplo diretamente na ferramenta:
Arquivo -> Novo -> Exemplo -> Exemplos de gráfico de estado YAKINDU -> Próximo -> Semáforo (C ++) para Arduino
> AQUI você pode baixar YAKINDU Statechart Tools <<
Você pode começar com um teste de 30 dias. Depois, você deve obter uma licença, que é gratuita para uso não comercial!
Recomendado:
Máquina de estado finito em um MSP430: 6 etapas
Máquina de estado finito em um MSP430: Vou mostrar a você como programar um Launchpad MSP430G2 com máquinas de estado finito (FSM) usando YAKINDU Statechart Tools diretamente no Texas Instruments Code Composer Studio. Este tutorial contém seis etapas: Instalando YAKINDU Statechart Tools como
Robô Arduino Otto com máquina de estado: 4 etapas
Robô Arduino Otto com máquina de estado: Visão geral do projeto Neste projeto, quero mostrar a você uma maneira de programar o Robô Otto, que é um robô DIY baseado em Arduino. Usando YAKINDU Statechart Tools (grátis para não comerciais), podemos facilmente usar máquinas de estado para modelar graficamente o comportamento
Projeto de semáforo do Arduino [com travessia de pedestres]: 3 etapas
Projeto de semáforo do Arduino [com passagem de pedestres]: se você está procurando algo fácil, simples e ao mesmo tempo quer impressionar a todos com seu Arduino, o projeto do semáforo é provavelmente a melhor escolha, especialmente quando você é um iniciante no mundo do Arduino. Veremos primeiro ho
Máquina de estado e multitarefa no Arduino com expansores SPI: 3 etapas
Máquina de estado e multitarefa no Arduino com expansores SPI: Na semana passada, eu estava pedindo para criar um sistema para pilotar fogos de artifício com um arduino. Precisava de cerca de 64 saídas para controlar os incêndios. Uma maneira de fazer isso é usar expansores IC. Portanto, 2 soluções estão disponíveis: - um expansor I2C, mas precisa de inversor quando você po
Arduino PLC 32 I / O + Máquina de Estado + SCADA ou HMI: 8 etapas
Arduino PLC 32 I / O + Máquina de Estado + SCADA ou HMI: Muitas maneiras de programar, controlar e supervisionar um sistema industrial com Arduino