Go Down

Topic: Problema no Arduino (Read 960 times) previous topic - next topic

aurinojr

Pessoal estou com um problema, como sou iniciante ainda não consegui consertar é o seguinte vou postar meu código
Code: [Select]
#include <IRremote.h>

#define t1 FFA25D
#define t3 FF22DD

#define pinLed 8

int RECV_PIN = 11;
//int valor;

boolean ledAtivado = false;

decode_results resCtrl;

IRrecv cRecpIR(RECV_PIN);

void setup()
{
cRecpIR.enableIRIn(); //habilita receptor IR
  Serial.begin(9600);
  pinMode(8, OUTPUT);
pinMode(11, INPUT);

}
void liga_1ed(){   //função ligar led
digitalWrite(pinLed, HIGH);
ledAtivado = true;
}
void desl_1ed(){   //função desliga o led
digitalWrite(pinLed, LOW);
ledAtivado = false;
}

void loop(){
   
if (cRecpIR.decode(&resCtrl)){
  switch (resCtrl.value, HEX){
  case t1: //acende a luz.
   if (!ledAtivado){
    liga_1ed();
    Serial.println("LIGADO");
   }
   break;
   case t3:
     if (ledAtivado){
       desl_1ed();
       Serial.println("DESLIGADO");
     }
   cRecpIR.resume();
  }
}
  }
 


ele tá mostrando o seguinte erro:
controlerbeta.cpp: In function 'void loop()':
controlerbeta:37: error: 'FFA25D' was not declared in this scope
controlerbeta:43: error: 'FF22DD' was not declared in this scope
só que como vcs veem, ele já está declarado no escopo, alguem ai pode me ajudar?

bubulindo

Não está, não...

O que tu declaraste foi isto FFA25D e FF22DD, que para o compilador não é mais que um conjunto de letras e números.

Se declarares isto correctamente assim:

Code: [Select]

#define t1 0xFFA25D
#define t3 0xFF22DD


O código provavelmente vai dar-te outro erro no switch.

isto:

Code: [Select]
switch (resCtrl.value, HEX){

Deve ser assim:

Code: [Select]
switch (resCtrl.value){

O motivo para isto é que o Arduino não faz ideia se tu queres ver em hexadecimal, ascii, decimal ou binário. Quer tu definas 0xFFA25D, 16753245 ou 0b111111111010001001011101, o programa vai comportar-se da mesma forma.
Já agora, coloca algo assim:

Code: [Select]

  switch (resCtrl.value, HEX){
  case t1: //acende a luz.
   if (!ledAtivado){
    liga_1ed();
    Serial.println("LIGADO");
   }
   break;
   case t3:
     if (ledAtivado){
       desl_1ed();
       Serial.println("DESLIGADO");
     }
   cRecpIR.resume();
   break; //adicionado
   default:
   char temp [7];
   itoa(resCtrl.value, temp, 16);
   Serial.println(temp); //assim sabes o que recebeste se não for igual a t1 ou t3.
   break;
}



This... is a hobby.

aurinojr

Vlw bubulindo, eu num sabia que tinha que colocar o 0x antes do numero hex, mas ainda sim tem um probleminha, o led liga, mas na hora de desligar ele nem desliga nem manda nenhuma informação pro computador dizendo qual o numero equivalente ao botão pressionado!!

aurinojr

Já consegui aqui! agora quero montar um módulo relé alguem ai sabe???

Go Up