Mais uma Idéias

Hoje estou bombando os posts enchendo vocês com problemas, mas tive uma idéia....

Comprei um LED, não sei se se chama isso, mas é Emissor Infra Vermelho, quero saber se posso criar algum código para controlar a televisão?

Iria ficar show de bola.

Tenho LED Transmissor e Receptor Infra Vermelho, mas não consigo usar...

Ve se isto ajuda,

http://arduinobrasil.blogspot.com/2010/01/construir-um-sensor-de-proximidade-por.html

Eu tenho um esquema bem funcional, um receptor de infra vermelho onde voce conseguer ver os codigos que o teu transmissor da tua tv manda, e um esqueminha de um transmissor de infra-vermelho , aí voce pode clonar o seu controle remoto, so que estou viajando e isto esta no meu desktop, assim que voltar posto aki!

Tens o modelo?

Alguns emissores fazem a modulação necessária para transmitir comandos para a TV, outros não e tens de a fazer por software. Eu tenho ideia que havia uma biblioteca para o Arduino com isso.

Este é o protocolo usado nas TVs e outros aparelhos:

Atenção que eventualmente podes ter de programar um receptor para apanhares os códigos todos da TV através do comando.

Já agora e como curiosidade, uma coisa interessante que dá para fazer com o receptor é uma tomada controlada por controlo remoto. Quando desligas a TV com o controlo remoto, ela fica consumindo energia (nalguns casos até 25% do funcionamento normal). Então, imagina que criavas um receptor com um controlo de relés para a alimentação da TV, DVD, etc... sempre que carregasses no botão da TV para desligar a TV, desligavas também a electricidade para esses aparelhos acabando por poupar algum dinheiro ao fim do mês. :wink:

O receptor é este!

/*

#include <avr/interrupt.h>
#include <avr/io.h>

#define TIMER_RESET TCNT1 = 0
#define SAMPLE_SIZE 64

int IRpin = 2;
unsigned int TimerValue[SAMPLE_SIZE];
char direction[SAMPLE_SIZE];
byte change_count;
long time;

void setup() {
Serial.begin(9600);
Serial.println("Analyze IR Remote");
TCCR1A = 0x00; // COM1A1=0, COM1A0=0 => Disconnect Pin OC1 from Timer/Counter 1 -- PWM11=0,PWM10=0 => PWM Operation disabled
// ICNC1=0 => Capture Noise Canceler disabled -- ICES1=0 => Input Capture Edge Select (not used) -- CTC1=0 => Clear Timer/Counter 1 on Compare/Match
// CS12=0 CS11=1 CS10=1 => Set prescaler to clock/64
TCCR1B = 0x03; // 16MHz clock with prescaler means TCNT1 increments every 4uS
// ICIE1=0 => Timer/Counter 1, Input Capture Interrupt Enable -- OCIE1A=0 => Output Compare A Match Interrupt Enable -- OCIE1B=0 => Output Compare B Match Interrupt Enable
// TOIE1=0 => Timer 1 Overflow Interrupt Enable
TIMSK1 = 0x00;
pinMode(IRpin, INPUT);
}

void loop()
{
Serial.println("Waiting...");
change_count = 0;
while(digitalRead(IRpin) == HIGH) {}
TIMER_RESET;
TimerValue[change_count] = TCNT1;
direction[change_count++] = '0';
while (change_count < SAMPLE_SIZE) {
if (direction[change_count-1] == '0') {
while(digitalRead(IRpin) == LOW) {}
TimerValue[change_count] = TCNT1;
direction[change_count++] = '1';
} else {
while(digitalRead(IRpin) == HIGH) {}
TimerValue[change_count] = TCNT1;
direction[change_count++] = '0';
}
}
Serial.println("Bit stream detected!");
change_count = 0;
time = (long) TimerValue[change_count] * 4;
Serial.print(time);
Serial.print("\t");
Serial.println(direction[change_count++]);
while (change_count < SAMPLE_SIZE) {
time = (long) TimerValue[change_count] * 4;
Serial.print(time);
Serial.print("\t");
Serial.println(direction[change_count-1]);
Serial.print(time);
Serial.print("\t");
Serial.println(direction[change_count++]);
}
Serial.println("Bit stream end!");
delay(2000);
}

Já ouviu falar a biblioteca IRremote do Ken Shirrif?

ela já tá prontinha pra usar, decodifica e transmite quase todos os protocolos de controles remotos...
Só não sei se ela funciona com a IDE 1.0 do arduino. Eu uso aqui a versão 0022 e roda perfeito :slight_smile: