Programação no arduino com uso de botão de pressão

Olá,

Preciso de ajuda para programação no arduino.

Vou usar um botão de pressão, com isso quero que a cada ativação dele, a cada pressionada,
seja feito um "if", minha dificuldade é essa, de que cada pressionada alterne entre os "if", ou usando outro modo de estrutura para realizar a tarefa.

Ex: primeira pressionada = primeiro "if", segunda pressionada = próximo "if", e assim por diante...

Pode ser que termine na ultima função ou que se repita ao chegar no ultimo.

E se caso uma outra estrutura de controle seja mais adequada, como "while" ou "swith case", favor informar.

Agradeço.

Exibições: 799

Responder esta

Respostas a este tópico

Na condição do if, confere o que já está sendo conferido e também se "já passou por aqui" (cria uma variável pra isso). Daí dentro do if faz o que tiver que fazer e também altera o valor dessa variável de modo que saiba que "já passou por aqui". Com isso no próximo ciclo ele vai passar por esse if pois "já passou por aqui" e vai entrar no próximo. Vai fazendo assim sucessivamente e caso em algum momento queira que se repita tudo outra vez, basta alterar o valor da variável que criou para verificar se "já passou por aqui" para o valor inicial.

Oi 2R, bom dia.

Achei sua explicação muito confusa:

"" a cada pressionada,  seja feito um "if",""  não entendi esta frase.

"" cada pressionada alterne entre os "if", ou usando outro modo de estrutura para realizar a tarefa."" nem esta.

Faça o seguinte:

Com frases curtas, defina o que você quer que seu projeto faça.

E recomendo A N E X A R  aqui um arquivo com o seu code,

pra que possamos dar sugestões de como melhora-lo.

Rui

Ficou meio confuso mesmo, vou tentar esclarecer melhor, sou amador nessas coisas de arduino faço algumas coisas atoa, daí montei alguns LEDs de varias cores, onde na programação, através do monitor serial digitando certa letra, é possível ligar os LEDs de uma cor ("b" para os LEDs azuis, "r" para os vermelhos, e assim por diante). E ainda um comando em que os LEDs ficam rítmicos através de sinal vindo do cabo p2. Daí quero facilitar a operação usando um ou dois botões (pois é só o que tenho), daí com o clique do botão mude de uma cor de LEDs pra outra, para que não seja necessário sempre usar o computador. Acho que melhorou a explicação!

Oi 2R,

kkkkkkk  melhoru +-.

Recomendo que você leia o tópico: http://labdegaragem.com/forum/topics/sugest-o-de-como-postar

Vou dizer como acho que deve ser uma explicação, e o que não entendi:

//---------------------------------------------------------------------------------------------------------------------------

" Sou amador no uso de arduino. "

" Quero montar um  code para controlar LEDs de cores diferentes. "

" Meus objetivos. "

" Ter controle à partir do serial monitor enviando letras. "

       " Cada letra enviada liga um Led de uma cor.

               Ex: "b" para os LEDs azuis, "r" para os vermelhos, e assim por diante. "

        " Ou usar um ou dois botões para mudar a cor de LEDs pra outra.

               Para dispensar o uso do computador"

        " Comandar  LEDs para ficam rítmicos através de um sinal vindo do cabo p2. "

//---------------------------------------------------------------------------------------------------------------------------

Agora o que não entendi:  

Aqui o quis dizer? Desligar um led e ligar o outro?  

   " Ou usar um ou dois botões para mudar a cor de LEDs pra outra. "

 São  só 2 cores de leds?

Que sinal vem pelo cabo p2?  Áudio?  Se for qual o nível de tensão?

Como vai medir e interpretar os valores vindos por este cabo?

Rui

Ta ai a programação.

As luzes são fitas de LEDs que estão instaladas na parede do quarto, é tipo uma pequena boate no meu quarto, pra entender melhor.

Encontrei botões pra ativar cada "if" que tem aí na programação, tipo, cada botão ativa uma cor de fita, se tiver como me ajudar em colocar para que, na programação, ative a função via comando no monitor serial ou no clique do botão, vou agradecer.

Vai ver que ao ativar uma certa cor de LEDs já no começo a função apaga as outras. (Acho que aqui respondi a primeira pergunta)

São 4 cores de LEDs, porem os vermelhos divididos em direito e esquerdo, mas isso só é usado pra parte rítmica. (Segunda pergunta)

Estou usando um dos lados do cabo P2, não sei qual, se é direito ou esquerdo, enfim, daí recebo o valor dele via "analogRead", tem na programação, você deve entender quando vê-la. Sobre a tensão, vem da fonte externa, a imagem anexada mostra o jeito que está montado fisicamente, porém com o Arduino entre o sinal positivo do áudio e um transistor pra cada fita, sendo sinais individuais pra cada cor. Ah, e uma fonte de tomada e não de bateria, como está na imagem. (As duas ultimas linhas de perguntas, acho que respondi)

Grato.

Anexos
Bom dia,
É só fazer como a Amanda comentou.
Eu normalmente crio uma Variavel chamada CONT e vou incrementando ela dentro de cada passagem pelos IFs conforme o número de clicks no botão.
Assim nos "IFs" eu vou testando conforme a var CONT.
Depois de passar por todos os blocos eu zero essa VAR e volto a passar pelo primeiro bloco.

Abraços.

Oi 2R, boa noite.

Veja este code.

Acho que atenderá sua necessidade.

Rui

Anexos

Olá Rui, agradeço por demais a sua ajuda, muito mas muito útil mesmo.

Muito bom pra aprender essas estruturas. O uso do switch case, Serial.available, dei uma pesquisada pra entender eles. Muito interessante.

Alterei o fade dos LEDs:

for(int brilho=0; brilho<=255; brilho++){
    analogWrite(Am, brilho);
    delay(15);
  }

Muito mais prático assim do que do jeito que fiz. kkk deu um trabalhinho ali!

Porém, pra deixar um charme, coloquei pra acender em fade e não funcionou o efeito nos "case", ele fica dando 'loop', daí fica piscando, mas é só deixar pra acender no máximo.

Se tiver como mudar isso eu agradeço, fica legal os LEDs acendendo em fade. Acender em fade e depois continuar acesa até dar outro comando. Pelo que entendi o "break;" faz o "case" virar um loop, certo?!

break é usado para forçar uma saída de uma estrutura condicional ou de repetição.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço