Olá preciso de uma pequena ajuda no meu codigo, estou usando um infrared para sintonizar um canal, mas não sei porque ele repete dados.

As vezes chega na ordem 205 5 e outras vezes 205052. 

Ex:

se eu enviar somente 1 codigo de 1 tecla, funciona sem problema nenhummas se eu enviar a sequencia do canal, éle reproduz o erro

  • se enviar 2 + ok - nao tem erro

  • se enviar 2 + 0 ele recebe 200

  • se enviar 2+0+5 ele recebe 20505 ou as vezes 205052

Aguem tem ideia de onde pode estar o problema?

Já agradeço a ajuda :)

#include <IRremote.h>
IRsend irsend;

int ledPin = 8; //atribui o pino 8 a variável ledPin
int dado; // variavel para guardar dados da porta serial

unsigned int ch2[60] = {2650,900,450,400,500,400,450,850,500,850,1350,850,450,450,450,400,500,400,450,450,450,400,500,400,450,450,900,850,900,850,900,850,500,400,900,850,950,850,450,400,950,400,450,400,500,850,450,450,450,400,500,400,450,450,450,400,900,900,450};

unsigned int ch0[62] = {2700,850,450,400,500,400,450,900,450,850,1350,850,450,450,450,400,500,400,450,450,450,400,500,400,450,450,900,850,900,850,900,900,450,400,900,900,850,900,450,450,900,400,450,450,450,850,450,450,450,400,500,400,450,450,450,400,500,400,450,450,450};

unsigned int ch52[60] = {2700,850,450,450,450,400,500,850,450,850,1350,850,500,400,450,450,450,400,500,400,450,450,450,400,500,400,900,850,950,850,900,850,450,450,450,400,500,400,900,850,500,400,900,400,500,400,450,900,450,400,500,400,450,450,450,400,900,850,950};

unsigned int ok[58] = {2700,850,450,450,450,400,500,850,450,850,1350,850,500,400,450,450,450,400,500,400,450,450,450,400,500,400,900,850,900,850,950,850,450,400,950,850,900,850,450,450,900,400,500,400,450,850,900,900,900,400,450,450,450,850,500,400,450};

void setup()

{
     Serial.begin(9600);
     pinMode(ledPin,OUTPUT); //define o pino o ledPin como saída
}

void loop() {
   //Lê a serial
   //if(Serial.available()){
   dado = Serial.read(); //recebe dados da porta serial

   if( dado == '1'){
      //liga o Led para identificar que o arduino foi encontrado
      digitalWrite(ledPin,HIGH);
      Serial.println("Eu sou Arduino");
   }
   if( dado == '2'){
      for (int i = 0; i < 1; i++) {
         irsend.sendRaw(ch2,sizeof(ch2),36);
         delay(40);
         irsend.sendRaw(ch0,sizeof(ch0),36);
         delay(40);
         irsend.sendRaw(ch52,sizeof(ch52),36);
         delay(40);
         irsend.sendRaw(ok,sizeof(ok),36);
         delay(40);
         Serial.println("Canal sintonizado!");
      }
   }
//}
}

# baseado: 

Exibições: 358

Responder esta

Respostas a este tópico

Ola pessoas,

No fim  Celso daqui do forum me ajudou e acabamos descobrindo que era as amostras do sinal que peguei por um receptor é que estavam com ruido.

Agora é so ficar de olho na amostragem para os proximos cases e tentar arrumar uma amostra melhor. :) valeu (y)

Na verdade é o tamanho do vetor cloquei o tmanho hardcode pq as amostras tem 1 valor a menos pq eh aleatorio e no vetor ele nao eh evado em consideração, entao o vetor sempre vai ser 60, 62 e 60...

CODIGO

 irsend.sendRaw(ok,58,36);

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço