Go Down

Topic: Iremote urgente (Read 4184 times) previous topic - next topic

Geek Ionizado

Pessoal estou precisando fazer um negócio pra um trabalho urgente, estou usando a lib Iremote e o meu controle é assim, cada botão tem um código, quando clica no botão power e solta rapidinho ele envia 551489775, e quando clica e segura ele envia 551489775 uma vez e logo depois tudo que ele envia é 4294967295. Portanto eu fiz um código pra quando eu segurar o botão power ele acenda um LED, mas não está funcionando. Alguém pode analisar o código? Muito obrigado!

if (code=="551489775") {
     while(code=="4294967295") {
digitalWrite(led, HIGH);
     }
   }  else {
      digitalWrite(led, LOW);
   }

rafaelski

Assim realmente não vai funcionar, pq você está testando se o código é igual a ...775, logo ele não poderá ser também igual a ...295.

entendeu?

se ele é ...775 --> enquanto ele também for ...295 .  não tem como.

tenta testar os dois juntos usando o "ou" ( "||" )

if (code == ......775 || ......295) {
   faça o que vc quer
}
else {  faça outra coisa }


Isso deve funcionar se ele enviar o código enqto estiver apertado e qndo vc soltar ele parar de enviar, ou enviar outra coisa.


Espero que dê certo.

Geek Ionizado

Olá.

Não posso fazer isso porque não quero que ele seja ou um ou outro, tem que ser um e depois o outro.
Eu mudei pra isso:

if (code=="551489775") {
funcao_que_busca_o_novo_codigo();
    while(code=="4294967295") {
digitalWrite(led, HIGH);
    }
  }  else {
     digitalWrite(led, LOW);
  }
Depois que ele acha o número ele busca pelo novo código, mas continua não funcionando!

Samuel Rodolfo

Olá,
Sou novo aqui no Forum e em arduino, Estou adquirindo a minha Placa ainda, mas no entanto sou programador por oficio e hobby.

Pelo que entendi não existe a pocibilidade de contar se o botao está pressionado, e esse controle ocorre dentro da area de ação do botao. Entao tente isso.

if (code=="551489775") {
   while(code=="551489775") { // Garante que manteve o botao pressionado
       conta = conta + 1 ; // crie essa variavel conta quantas vezes rodou esse while(tempo de pressionamento)
       digitalWrite(led, HIGH);
       if(conta >= 5){ // Após algum tempo presionado permite trocar o código.
          conta = 0; // Zera o contador.
          code = "4294967295"; // Muda o codigo.
       }
   }
 }  else {
    digitalWrite(led, LOW);
 }

Go Up