Projeto.ino

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.

Exibições: 350

Anexos

Responder esta

Respostas a este tópico

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!

Boa tarde JR,

veja se este sketch te atende:   

Projeto.ino

RV

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 ledAmarelo acende muito rapidamente e apaga, logo em seguida acende o ledVermelho. O ledVerde2.está correto e acende normalmente.

O que era pra acontecer ao apertar o Botão1 uma vez:

  • O ledAmarelo acende e permanece aceso, liga-se o ledVerde2 normalmente e apaga o ledVerde. O ledVerde está apagado, de fato.

Quando eu aperto o Botão2:

  • O ledAmarelo acende normal, o ledVerde2 e o ledVerde também permanece acesos.

O que era pra acontecer ao apertar o Botão2 se o Botão1 só foi apaertado uma vez:

  • Somente o ledVerde fica aceso.

sketch.mp4

Segue o vídeo do funcionamento do seu sketch.

VideoProjeto.mp4

Segue um vídeo de como deve ser o funcionamento do projeto.

Bom dia JR,

veja se este está certo.

Projeto_V03.ino

RV

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.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço