Go Down

Topic: Receptor IR (Read 897 times) previous topic - next topic

lucas-appr2

Olá comprei um Receptor IR com controle remoto (o que ainda está no plastico) com uma Arduino Nano para fazer alguns testes. Não achei nenhum exemplo pratico do tipo: Se X tecla do controle for apertada saida Y acende. As fotos estão todas abaixo, se alguem puder dar uma ajuda.




OBS: Algum moderador por favor diminua a imagem pois tirei com o iPhone e nao achei aqui no forum uma opção para diminuir.

bubulindo

Procura por RC-5. É o protocolo usado nesses comandos.

Também acho que existe já uma libraria para o Arduino.
This... is a hobby.

Kotch


Olá comprei um Receptor IR com controle remoto (o que ainda está no plastico) com uma Arduino Nano para fazer alguns testes. Não achei nenhum exemplo pratico do tipo: Se X tecla do controle for apertada saida Y acende. As fotos estão todas abaixo, se alguem puder dar uma ajuda.


Para iniciar os teus teste de uma olhada!

int ir_pin = 2;            //Sensor pin 1 wired through a 220 ohm resistor
int led_pin = 13;             //"Ready to Recieve" flag, not needed but nice
int debug = 0;             //Serial connection must be started to debug
int start_bit = 2000;         //Start bit threshold (Microseconds)
int bin_1 = 1000;             //Binary 1 threshold (Microseconds)
int bin_0 = 400;              //Binary 0 threshold (Microseconds)

void setup() {
  pinMode(led_pin, OUTPUT);      //This shows when we're ready to recieve
  pinMode(ir_pin, INPUT);
  digitalWrite(led_pin, LOW);       //not ready yet
  Serial.begin(9600);
}

void loop() {
  int key = getIRKey();          //Fetch the key
  Serial.print("Key Recieved: ");
  Serial.println(key);
}

int getIRKey() {
  int data[12];
  digitalWrite(led_pin, HIGH);      //Ok, i'm ready to recieve
  while(pulseIn(ir_pin, LOW) < 2200) { //Wait for a start bit
  }
  data[0] = pulseIn(ir_pin, LOW);   //Start measuring bits, I only want low pulses
  data[1] = pulseIn(ir_pin, LOW);
  data[2] = pulseIn(ir_pin, LOW);
  data[3] = pulseIn(ir_pin, LOW);
  data[4] = pulseIn(ir_pin, LOW);
  data[5] = pulseIn(ir_pin, LOW);
  data[6] = pulseIn(ir_pin, LOW);
  data[7] = pulseIn(ir_pin, LOW);
  data[8] = pulseIn(ir_pin, LOW);
  data[9] = pulseIn(ir_pin, LOW);
  data[10] = pulseIn(ir_pin, LOW);
  data[11] = pulseIn(ir_pin, LOW);
  digitalWrite(led_pin, LOW);

  if(debug == 1) {
    Serial.println("-----");
  }
  for(int i=0;i<11;i++) {        //Parse them
    if (debug == 1) {
     Serial.println(data);
    }
    if(data > bin_1) {        //is it a 1?
   data = 1;
    }  else {
   if(data > bin_0) {      //is it a 0?
     data = 0;
   } else {
    data = 2;           //Flag the data as invalid; I don't know what it is!
   }
    }
  }

  for(int i=0;i<11;i++) {        //Pre-check data for errors
    if(data > 1) {
   return -1;              //Return -1 on invalid data
    }
  }

  int result = 0;
  int seed = 1;
  for(int i=0;i<11;i++) {        //Convert bits to integer
    if(data == 1) {
   result += seed;
    }
    seed = seed * 2;
  }
  return result;              //Return key number
}


8)
????????????????????

ViniciusPolo

Olá.
Recomendo essa biblioteca.
Muito facil de instalar, inclusive com uma pequena mudança já funciona no Arduino IDE 1.0.
Acompanha diversos exemplos.
http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
Precisa de produtos para seu Arduino?
Não deixe de ver meus produtos no Mercado Livre!
http://lista.mercadolivre.com.br/_CustId_76934379

Go Up