Adquira estes componentes na Loja do Lab de Garagem
Neste tutorial vamos mostrar como utilizar o IR Control Kit da Sparkfun. O Kit vem com dois emissores Infravermelho, dois receptores Infravermelho e o Controle Remoto. Ao apertar um botão do controle remoto, um LED acenderá. É um LED para cada botão do controle remoto.
Você pode utilizar também a biblioteca IRRemote.
Faça a seguinte ligação no Arduino:
Depois de feito as ligações acima, passe a programação abaixo:
int irPin = 2; //Sensor pin 1 wired to Arduino's pin 2
int statLED = 3;
int statLED1 = 4;
int statLED2 = 5;
int statLED3 = 6;
int statLED4 = 7;
int statLED5 = 8;
int statLED6 = 9; //Toggle the status LED every time Power is pressed
int start_bit = 2200; //Start bit threshold (Microseconds)
int bin_1 = 1000; //Binary 1 threshold (Microseconds)
int bin_0 = 400; //Binary 0 threshold (Microseconds)
void setup() {
pinMode(statLED, OUTPUT);
pinMode(statLED1, OUTPUT);
pinMode(statLED2, OUTPUT);
pinMode(statLED3, OUTPUT);
pinMode(statLED4, OUTPUT);
pinMode(statLED5, OUTPUT);
pinMode(statLED6, OUTPUT);
digitalWrite(statLED, LOW);
digitalWrite(statLED1, LOW);
digitalWrite(statLED2, LOW);
digitalWrite(statLED3, LOW);
digitalWrite(statLED4, LOW);
digitalWrite(statLED5, LOW);
digitalWrite(statLED6, LOW);
pinMode(irPin, INPUT);
Serial.begin(9600);
Serial.println("Waiting: ");
}
void loop() {
int key = getIRKey(); //Fetch the key
if(key != 0) //Ignore keys that are zero
{
Serial.print("Key Recieved: ");
switch(key)
{
case 144: Serial.print("CH Up");
if(digitalRead(statLED) == LOW) //This toggles the statLED every time power button is hit
digitalWrite(statLED, HIGH);
else
digitalWrite(statLED, LOW);
break;
case 145: Serial.print("CH Down");
if(digitalRead(statLED1) == LOW) //This toggles the statLED every time power button is hit
digitalWrite(statLED1, HIGH);
else
digitalWrite(statLED1, LOW);
break;
case 146: Serial.print("VOL Right");
if(digitalRead(statLED2) == LOW) //This toggles the statLED every time power button is hit
digitalWrite(statLED2, HIGH);
else
digitalWrite(statLED2, LOW);
break;
case 147: Serial.print("VOL Left");
if(digitalRead(statLED3) == LOW) //This toggles the statLED every time power button is hit
digitalWrite(statLED3, HIGH);
else
digitalWrite(statLED3, LOW);
break;
case 148: Serial.print("Mute");
if(digitalRead(statLED4) == LOW) //This toggles the statLED every time power button is hit
digitalWrite(statLED4, HIGH);
else
digitalWrite(statLED4, LOW);
break;
case 165: Serial.print("AV/TV");
if(digitalRead(statLED5) == LOW) //This toggles the statLED every time power button is hit
digitalWrite(statLED5, HIGH);
else
digitalWrite(statLED5, LOW);
break;
case 149:
Serial.print("Power");
if(digitalRead(statLED6) == LOW) //This toggles the statLED every time power button is hit
digitalWrite(statLED6, HIGH);
else
digitalWrite(statLED6, LOW);
break;
}
Serial.println();
}
}
int getIRKey() {
int data[12];
int i;
while(pulseIn(irPin, LOW) < start_bit); //Wait for a start bit
for(i = 0 ; i < 11 ; i++)
data[i] = pulseIn(irPin, LOW); //Start measuring bits, I only want low pulses
for(i = 0 ; i < 11 ; i++) //Parse them
{
if(data[i] > bin_1) //is it a 1?
data[i] = 1;
else if(data[i] > bin_0) //is it a 0?
data[i] = 0;
else
return -1; //Flag the data as invalid; I don't know what it is! Return -1 on invalid data
}
int result = 0;
for(i = 0 ; i < 11 ; i++) //Convert data bits to integer
if(data[i] == 1) result |= (1 i);
return result; //Return key number
}
A função int getIRKey() conta o tempo do pulso em LOW que o controle remoto transmite. Para cada botão é um número de pulsos diferente. Portanto, ao apertar o botão POWER, por exemplo, o Arduino detectará LOW, fará a contagem em microssegundos e guardará na matriz data[i]. Depois o Arduino fará uma comparação de todos os elementos da matriz com as constantes bin_1 e bin_0 e transfomará os dados em binário (0 ou 1). Por fim converterá os dados em bits para inteiro. Ao terminar, o Arduino volta para o loop() e verifica cada caso, acendendo o LED correspondente ao dado inteiro que foi convertido.
E é isso! Esperamos que tenha gostado! Se tiver dúvidas sobre o tutorial, poste aqui neste blog! Em caso de sugestões, clique aqui! Para ver outros tutoriais e projetos desenvolvidos pela equipe LdG e por outros garagistas, clique aqui e aqui! Até a próxima!
Referências:
http://labdegaragem.com/profiles/blogs/tutorial-emissor-e-receptor-...
Comentar
Olá pessoal, tenho um probleminha com a biblioteca do IRrecv_Dump, me aparecem vários erros quando tento copilar, estão dizendo para cada um dos objetos que não foram declarados no Scoope, alguém pode me ajudar, desde já obrigado !!
Por que não estão mais vendendo esse kit na loja do LdG?
Olá José
Isso, é necessário a biblioteca que criei para o controle remoto.
O link para baixar a biblioteca é https://www.dropbox.com/s/c97f7jmt6repqt9/SparkfunRemoteControl.rar
No tutorial você vai encontrar como fazer para adicionar essa biblioteca ao seu projeto.
Olá Celso, não consegui fazer o tutorial funcionar. É preciso alguma biblioteca especifica p/ este controle alem da IRRemote?
tenho o sensor IR , mais nao tenho o controle , posso usar outro controle ? algum tipo de controle universal?
Pessoal, sem querer me gabar, gostaria de comentar que no meu blog procuro incluir nas postagens com tutoriais, a lista de materiais usados e, sempre que possível, incluo links para os produtos e datasheets.
http://robomaniablog.blogspot.com.br/search/label/tutorial%20arduin...
Se quiserem dar uma passa por lá, serão muito bem vindos. Aceito sugestões e colaborações.
Abs
Euclides vou te adicionar como amigo....aceita ai!!! valeu
Falou tudo!
Marcos, neste quesito as mulheres deixam a gente no chinelo. Você já viu receita de culinária que não comece pelos "ingredientes"??? Sabe porque isso não ocorre? Simples: Culinária é uma "ciência" milenar (e bota milênios nisso...) e "tecnologia" é uma "ciência nenenzinha" ainda e os "grandes papas" do assunto não conseguiram chegar em um acordo de como fazer uma lista de necessidades para apresentar a quem dependa da solução, ou nunca leram uma revista da Saber Eletrônica para aprender com os "simples" de projeto. Resultado? Isso que nós vemos na Internet...falta de informação, informação truncada, resistores com qualquer cor lançado em esquemas Fritzing, não há compromisso...o negócio é encher linguiça...pode ser frango, porco, carne...qq. coisa...e eu ???? Rio (do verbo rir)....rsrsrsrsrsrsrsrssrssssss....
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)