Boa tarde pessoal. Sou iniciante no mundo da eletrônica. Estou começando por Arduino, por isso ainda não domino as boas práticas de programação e peço desculpas caso meu código não esteja legível.
Andei pesquisando aqui no fórum mesmo algo relacionado com meu problema. Consegui achar um código um pouco parecido com o meu, mas não funcionava da mesma forma. Mesmo assim tentei aplicar as idéias dele, mas meu código não funcionou.
O problema é o seguinte: tenho um ambiente, onde podem entrar no máximo 2 pessoas nele. Quando tiver pelo menos 1 pessoa dentro, a energia elétrica desse ambiente é ligada, caso contrário desligada. O estado inicial do ambiente é desligado, sem pessoas e sem energia ligada. As pessoas podem entrar e saída do ambiente a qualquer momente, desde que respeite a capacidade máxima dele.
Pois bem, meu código funciona da seguinte forma:
Botão 1: Registra entrada de pessoas
Botão 2: Registra saída de pessoas
LedVerde: Estado inicial do ambiente
LedAmarelo: Indica a entrada de 1 pessoas no ambiente
LedVermelho: Indica a entrada de 2 pessoas no ambiente
LedVerde2: Indica a energia elétrica do ambiente
Como o estado inicial do ambiente é desligado, então o LedVerde fica ligado inicialmente. No momento que entra 1 pessoa, liga-se o LedAmarelo e o LedVerde2 e apaga-se o LedVerde.
Aqui temos dois caminhos: essa pessoa que entrou pode sair ou entrar mais uma pessoa no ambiente.
Se sair, então apaga-se o LedAmarelo e o LedVerde2 e liga-se o LedVerde novamente (voltando ao estado inicial).
Se entrar mais uma pessoa, então apaga-se o LedAmarelo e acende-se o LedVermelho e o LedVerde2 permanece ligado.
Se (com o LedVermelho aceso) sair uma pessoa: liga-se o LedAmarelo e o LedVerde2 permanece
ligado.
Se (com o LedVermelho aceso) sair duas pessoa: liga-se apenas o LedVerde inidicando que voltou ao estado inicial e apaga-se os outros LEDs.
Pois bem, o meu código tem 1 problema: ele só executa esse ciclo 1 vez. Eu preciso que esse ciclo fique rodando o tempo inteiro, pois ele simula a entrada e saída de pessoas em um ambiente 24h por dia. Alguém pode me ajudar? Agradeço desde já.
Obs: Peço desculpas se postei no lugar errado, eu li as regras antes de postar, mas fiquei em dúvida se esse assunto está sendo direcionado pro local certo. E também desculpem se não está tão suscinta a explicação, o objetivo foi tentar deixá-la o mais clara possível.
Tags:
Olá Juscelino.
Implemente uma Máquina de Estados, e será moleza fazer todo o controle. Aqui no LDG já implementei diversas, para resolver problemas semelhantes ao seu, e alguns mais complexos. Todos são facilmente implementados com uma Máquina de Estados.
Segue links de algumas implementações que fiz aqui, e que podem te servir de exemplo:
- Máquina JMelo: "Sequenciamento de LEDs"
- Máquina Lucas Piedra: "Cronometragem com Botão"
- Máquina Luiz Henrique: "Controlando Semáforo"
- Máquina Francikleber: "Controle com Toque"
- Máquina Oziel Marques: "Pisca-Pisca esperto com LED"
- Máquina Controle de Janelas Automáticas: "Janelas Automáticas"
- Máquina Luzes Automáticas em Corredor: "Luzes Automáticas em Corredor"
- Máquina Luzes Automáticas em Escadaria: "Luzes Automáticas em Escadaria"
Se vc é muito iniciante, recomendo também que acompanhe um tópico onde estarei demonstrando e implementando uma Máquina de Estados passo a passo nos próximos dias, justamente com a intenção de que se possa aprender sobre isto.
Acompanhe neste link no LDG: "Controle Múltiplo de Lâmpada de Aquário"
Abrçs,
Elcids
Olá, Elcids.
Muito obrigado por me responder. Sou muito iniciante sim, gosto muito de ficar treinando esses projetinhos básicos. Vou acompanhar com certeza seus tópicos, pois quero aprender sempre mais. Porém, eu não citei anteriormente, mas esse projeto que estou desenvolvendo faz parte de uma apresentação que vou fazer sobre ele na próxima segunda. Por hora, vou concentrar meus esforços no seu funcionamento e, após, voltarei ao fórum para acompanhar suas explicações. Obrigado!
Poxa RV, muito obrigado por disponibilizar um pouco do seu tempo para tentar me ajudar. Nem sei como agradecer. Não te respondi antes porque estava tentando adaptá-lo, mas não consegui. Então, o seu sketch tá muito próximo do que eu preciso, porém tem algumas falhas que ainda o acompanham, são elas:
Quando eu aperto o Botão1:
O que era pra acontecer ao apertar o Botão1 uma vez:
Quando eu aperto o Botão2:
O que era pra acontecer ao apertar o Botão2 se o Botão1 só foi apaertado uma vez:
Segue o vídeo do funcionamento do seu sketch.
Segue um vídeo de como deve ser o funcionamento do projeto.
Sensacional! Era isso mesmo. Agora está funcionando corretamente. Mais uma vez muito obrigado, fico muito feliz por ter pessoas assim disposta a ajudar os outros sem receber nada em troca. Vocês são raros. Parabéns!
O problema foi resolvido. O usuário RV adicionou ( ao primeiro sketch enviado por ele) uma variável booleana "setada" para nível lógico falso e adicionou a mesma ao sketch dentro de um comando while para que o projeto ficasse em loop sempre.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por