Arduino Forum

Forum 2005-2010 (read only) => International => Portugues => Topic started by: geekionizado on Jan 20, 2011, 09:49 pm

Title: Iremote urgente
Post by: geekionizado on Jan 20, 2011, 09:49 pm
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);
   }
Title: Re: Iremote urgente
Post by: rafaelski on Jan 20, 2011, 11:29 pm
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.
Title: Re: Iremote urgente
Post by: geekionizado on Jan 20, 2011, 11:31 pm
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!
Title: Re: Iremote urgente
Post by: samuelrrm on Jan 24, 2011, 03:41 am
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);
 }