Go Down

Topic: Problema no Arduino (Read 725 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;
}



Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

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