Estou com dificuldades para fazer o acionamento do controle RC6 .Usei o controle nec e funcionou perfeitamente alguém já passou por este problema? Estou tentando controlar um receptor da Embratel atual claro tv.

Estou usando esta exemplo para receber dados do controle:

/*
* IRremote: IRrecvDump - dump details of IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*/

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}

// based on Print::printNumber
void printHex64(unsigned long long n)
{
unsigned char buf[sizeof(unsigned long long) * 2];
unsigned long i = 0;

if (n == 0) {
Serial.print('0');
return;
}

while (n > 0) {
buf[i++] = n & 0xf;
n >>= 4;
}

for (; i > 0; i--) {
Serial.print((char) (buf[i - 1] < 10 ?
'0' + buf[i - 1] :
'A' + buf[i - 1] - 10));
}
}


// Dumps out the decode_results structure.
// Call this after IRrecv::decode()
// void * to work around compiler issue
//void dump(void *v) {
// decode_results *results = (decode_results *)v
void dump(decode_results *results) {
int count = results->rawlen;
if (results->decode_type == UNKNOWN) {
Serial.print("Unknown encoding: ");
}
else if (results->decode_type == NEC) {
Serial.print("Decoded NEC: ");
}
else if (results->decode_type == SONY) {
Serial.print("Decoded SONY: ");
}
else if (results->decode_type == RC5) {
Serial.print("Decoded RC5: ");
}
else if (results->decode_type == RC6) {
Serial.print("Decoded RC6: ");
}
printHex64(results->value);
Serial.print(" (");
Serial.print(results->bits, DEC);
Serial.println(" bits)");
Serial.print("Raw (");
Serial.print(count, DEC);
Serial.print("): ");

for (int i = 0; i < count; i++) {
if ((i % 2) == 1) {
Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
}
else {
Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
}
Serial.print(" ");
}
Serial.println("");
}


void loop() {
if (irrecv.decode(&results)) {
dump(&results);
irrecv.resume(); // Receive the next value
}
}

E este e o que envia para tv

/*
* IRremote: IRsendDemo - demonstra o envio de codigos IR com IRsend
* Um LED IR deve ser conectado a porta PWM 3 do Arduino.
* Versao 0.1 Julho, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*/

#include <IRremote.h>

IRsend irsend;

void setup()
{
Serial.begin(9600);
}

void loop() {
char c = Serial.read();
if (c == 'a') {
for (int i = 0; i < 1; i++) {
irsend.sendRC6(0x80542720, 36);
delay(40);
}
}
if (c == 'b') {
for (int i = 0; i < 1; i++) {
irsend.sendRC6(0x8054A721, 36);
delay(40);
}
}
}

Exibições: 2774

Responder esta

Respostas a este tópico

Oi Nelcimar.

Estou tentando usar um controle remoto. Peguei alguns exemplos, gerei meu código, porém, quando mando compilar, ele dá erro na biblioteca IRemote. Tu passou por isso? Te alguma dica que possa me ajudar?

Obrigado.

O erro:

In file included from C:\arduino-1.0.5\libraries\IRremote\IRremote.cpp:15:
C:\arduino-1.0.5\libraries\IRremote\/IRremoteInt.h:146: error: 'uint8_t' does not name a type
C:\arduino-1.0.5\libraries\IRremote\/IRremoteInt.h:147: error: 'uint8_t' does not name a type
C:\arduino-1.0.5\libraries\IRremote\/IRremoteInt.h:148: error: 'uint8_t' does not name a type

ja tentou baixar a lib de outra fonte? as vezes algumas LIBs tem incompatibilidade com a versão da IDE que está usando.

Perfeito. Era exatamente isso. Muito obrigado!!!!

Olá! Conseguisse clonar o sinal do controle da Via Embratel (Claro TV)? Eu já tentei vários modos diferentes, inclusive este que você postou acima mas nem sinal do receptor aparentar receber algum comando...

Abraço!

Na verdade, estava apenas vendo como funcionava aqueles controles para carrinhos. Isso que falou já é muito complexo pro meu conhecimento. Risos... Quem sabe um dia. Sinto não poder retribuir. Abraço.

Hehe!!! Pensa que o único controle que eu preciso clonar é o único que eu não consigo clonar, é pra acabar... hehe!!!

putz... Boa sorte!! Se eu achar algo nesse sentido, te aviso.

amigo tente usar o modo de envio pelo codigo RAW.

utilize o exemplo IRrecvDump e armazene o codigo recebido,

para enviar guarde-o em uma variável tipo 

unsigned int var[tam], onde o comprimento da var "tam" deve ser o valor retornado como RAW no recebimento.

remova os sinais de "-" e o primeiro valor recebido

para o envio utilize

irsend.sendRaw(var, tam, 38)

Hum, entedo, ao invés de enviar o RC6, envio o código RAW, que será armazenado em alguma variável (um vetor), seria mais ou menos isso? Vou tentar fazer isso, pois essa possibilidade não testei ainda...

Assim que testar digo se deu boa!!!

Abraços!!!

Opa Millencolinhc!!! Cara, deu boa!!! Essa forma que você sugeriu funcionou certinho para clonar o controle da Claro TV! Agora é só montar a rede, fazer um programa com interface gráfica amigável num servidor e fazer tudo funcionar... Claro, que como tenho módulos XBee que utilizei no meu artigo da pós, vou fazer a rede baseada nessa tecnologia (até para economizar e não precisar comprar nada por enquanto... hehe).

Abraço!!!

Vocês conseguiram resolver a questão do controle da claro tv?

Estou tentando enviar o RAW para acionar um canal e não consigo...

Obrigado

Opa, consegui e já estou utilizando na minha casa, juntamente com o shield ethernet.

Como ficou a clonagem, que resultados ele trouxe para algum botão??? Qualquer coisa posta uma parte do código para ver o que pode estar acontecendo...

Abraço

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço