No caso o codigo que estou tentando criar vai funcionar da seguinte maneira:

Com um posh button vc consegue liga e desligar dois leds pra ficar mais claro vou explicar melhor:

com um único botão vc liga o primeiro led, depois de 2seg. o primeiro led desliga automaticamente e ja fica no estado para ligar o segundo led. No segundo toque no botão vc liga o segundo led depois de 2seg. o segundo led desliga automaticamente volta para o estado anterior pronto pra ligar o primeiro led.

Ficando assim um loop sucessivo.

tudo isso com um único botão e usando dois pinos do arduino vamos supor o pino 9 e o pino 10 mais pode ser qual pino desde que seja usado dois pinos.

Se alguém poder mim ajudar Por favor. Estou precisando deste codígo.

Não conseguir criar este codigo.

Exibições: 889

Responder esta

Respostas a este tópico

bom dia JMelo.

     Um Sistema como este descrito por você, é facilmente implementado com uma "Máquina de Estados". Acredito que você não conheça a técnica, assim como uma infinidade de pessoas. A implementação de uma  "Máquina de Estados"  via sofware, é um processo simples, mas extremamente sistemático, ou seja: uma "Máquina de Estados" é sempre implementada da mesma forma, seguindo rigorosamente uma "receita" (ou técnica). Ocorre que muita gente faz implementações empíricas de "Máquina de Estados" (tenho visto aos montes por aí), e sempre há a dificuldade em implementar certos comportamentos, além do que não é incomum que a "Máquina de Estados" nunca funcione como exatamente esperado, causando uma certa frustração no implementador (talvez até uma certa indignação, pois dá a impressão que a "Máquina de Estados" é rebelde, ou que não é simples sua implementação). E isto ocorre exatamente pelo desconhecimento da técnica sistemática de implementação.

      Por isso, estou aproveitando seu post e dúvida, para mostrar a implementação de uma "Máquina de Estados" que atende a descrição que você fez. Essa implementação segue 100% a técnica sistemática (e clássica) de implementação de uma "Máquina de Estados".

      Apenas ressaltando: a técnica de "Máquina de Estados", resolve 99,99% das proposições de implementação de código. Ou seja, praticamente qualquer problema do dia a dia que você precise resolver via programação, pode ser resolvido facilmente com uma "Máquina de Estados". Inclusive posso afirmar sem dúvida, que este percentual se aplica aos problemas de programação que aparecem aqui no Garagem.

     Sua proposição de funcionamento com o Botão e dois LEDs, exige uma máquina de 4 estados, e esta reduzida quantidade de estados, a torna quase ideal para que outras pessoas possam entender e aprender a técnica. Digo "quase ideal" porque na sua proposição, há contagem de tempo envolvida, que embora seja tratada na "Máquina de Estados" da mesma forma como qualquer outro evento, pode fazer algumas pessoas acharem um pouco mais complexa, embora não seja (tanto que o total de estados exigidos é de apenas 4).

     Claro que uma "Máquina de Estados" com menor quantidade de estados, pode ser ainda mais didática para aprendizado. Mas uma pitadinha a mais de tempero não faz mal algum.

     Nota sobre o Hardware:  sua descrição menciona apenas "dois pinos". Bem JMelo, isto é possível, mas vai exigir mais hardware, ou seja, mais circuitos. E no caso, para manter a simplicidade, usando apenas o Arduino (que tem pinos suficientes para sua proposição), liguei cada elemento (os dois LEDs e o Botão) em um pino separado. Com isso temos o "LED 1" em um pino, o "LED 2" em outro pino, e o Botão em outro pino. Isso resultou em três pinos. Caso vc queira aprender técnicas de Hardware que permitem fazer o mesmo com apenas dois pinos, eu posso descrever posteriormente, mas note que nada muda na "Máquina de Estados" para este outro Hardware.

     A implementação de uma "Máquina de Estados", sempre se inicia pelo "Diagrama de Estados" da Máquina. Jamais se vai ao código primeiro. Apenas depois de se ter o funcionamento da "Máquina de Estados" completamente descrito no "Diagrama de Estados", é que se inicia a codificação da mesma através de um programa (seja em que plataforma for, neste seu caso, o Arduino). Para sua proposição, eu mostro o "Diagrama de Estados" na figura a seguir (para "zoom", clique na figura ou abra em outra aba do seu navegador):

     O digrama é bastante simples. Mas é comum as pessoas terem dúvida sobre como ele funciona, quando não estão acostumadas a usar a técnica. Assim caso vc tenha alguma dificuldade em entender isso, pergunte aqui, que te auxiliarei.

     Também fiz a implementação no Proteus, a fim de que se possa ver o funcionamento "real" da "Máquina de Estados". O circuito é mostrado na figura a seguir:

      O código do Arduino, a implementação no Proteus, e outros documentos (como o "Diagrama de Estados", formato Visio), estão no anexo no final deste post.

      Observe que no texto deste post, não há descrição da implementação. Isto é proposital, pra instigar as pessoas a analisarem a estrutura do código, e assim aprenderem a técnica de implementação. Claro que estou falando de pessoas realmente interessadas em aprender. E para estas pessoas será moleza, pois a técnica é simples, e o código a segue rigorosamente, sendo assim bastante didático.  Mas não descarto futuramente um post onde eu venha  a descrever a técnica em maiores detalhes.

      Nota final:  como você especificou um período de 2 segundos para os LEDs ficarem ligados, não há necessidade de tratamento especial para o "bouncing" mecânico do Botão. Caso você reduza este tempo para menos de meio segundo, então é importante começar a considerar o tratamento do "bouncing" do Botão. Mas felizmente, a disciplina e a organização da "Máquina de Estados", facilitam tremendamente isso, já que a técnica clássica de implementação permite tratar todos os elementos do Sistema de forma totalmente independente.

     Fico à disposição para quaisquer dúvidas que possam existir.

     Abrçs,

     Elcids

Anexos

Elcis chagas muito obrigado por sua ajuda, vou começar os fazer os teste e qualquer duvida eu postarei.

Fico grato por ter pessoas que disponibilizam para poder ajudar outras. Muito obrigado abraços...

Eu detesto fazer o papel do chato, mas alguém tem fazer isso.
Conforme vamos envelhecendo, ficamos cada vez mais ranzinzas.


O Rui Viana fez um post explicando como postar: http://labdegaragem.com/forum/topics/sugest-o-de-como-postar.

O Flávio Hernan já explicou aqui também que devemos escolher um bom nome para o post e evitar escrever títulos como: “Ajudem-me pelo amor de Deus!”.


Sou da área de exatas, mas sempre falo aos meus alunos:

- A disciplina mais importante que vocês devem conhecer é o PORTUGUÊS. É necessário saber escrever e interpretar textos.


Por isso, se possível, peço para corrigir o título e o conteúdo do post.

De “MIM ajudar”
Para: “ME ajudar”

De “poshbutton”
Para:  “push button”


Isso vai melhorar a qualidade do fórum e todos vão agradecer.

Obrigado amigo pela ajuda. Vou corrigir.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço