Descrición:

Imos utilizar o mando que aparece na imaxe, pero tamén poderiamos facer probas cun mando da televisión dos que temos por casa. Nese caso previamente debemos identificar o código que envía cada tecla e facer o programa en función do mesmo.
Montaxe:
Segundo o teu modelo de receptor IR, debes identificar os pins VCC, GND e sinal. Se os conectas mal podes estragar o teu receptor e xa non conseguirás nada. Consulta o datasheet.


Programas:
O primeiro que debemos facer é instalar unha librería que me permita empregar un mando. Eu usei a librería IRremote que vén neste enlace de GitHub.
1. Códigos
Este programa ímolo utilizar para ver o código que emite cada tecla en hexadecimal. Abre a consola, preme en cada unha das teclas e copia o resultado para poder programar despois en función deses valores.
#include <IRremoteInt.h>
#include <IRremote.h>
int RECV_PIN = 3; // Pin que recibe o sinal IR
IRrecv irrecv(RECV_PIN);
decode_results results;
// Configuración:
void setup() {
Serial.begin(9600); // Comunicación serie
while(!Serial);
irrecv.enableIRIn(); // Comunicación IR
}
// Programa:
void loop() {
if (irrecv.decode(&results)){ // Se hai sinal no receptor
Serial.println(results.value, HEX); // imprime o valor en hexadecimal
irrecv.resume(); // Prepárase para recibir o seguinte valor
}
delay(10);
}
/* Resultados obtidos:
0 FD30CF
1 FD08F7
2 FD8877
3 FD48B7
4 FD28D7
5 FDA857
6 FD6897
7 FD18E7
8 FD9867
9 FD58A7
*/
2. Leds
Imos acender e apagar un leds premendo nas teclas do mando. Modifica os valores hexadecimais segundo o teu mando e as teclas que desexes utilizar para o control.
#include <IRremoteInt.h>
#include <IRremote.h>
int led1=13;
int led2=12;
int RECV_PIN = 3; // Pin que recibe o sinal IR
IRrecv irrecv(RECV_PIN);
decode_results results;
// Configuración
void setup() {
Serial.begin(9600); // Comunicación serie
while(!Serial);
irrecv.enableIRIn(); // Comunicación IR
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
}
// Programa
void loop() {
results.value=0;
if (irrecv.decode(&results)){
Serial.println(results.value, HEX); // imprime o valor en hexadecimal
irrecv.resume();
if(results.value == 0xFD08F7){ // tecla 1 acender Led1
digitalWrite(led1,HIGH);
Serial.println(results.value, HEX);
}
if(results.value == 0xFD28D7){ // tecla 4 apagar Led1
digitalWrite(led1,LOW);
Serial.println(results.value, HEX);
}
if(results.value == 0xFD8877){ // tecla 2 acender Led2
digitalWrite(led2,HIGH);
Serial.println(results.value, HEX);
}
if(results.value == 0xFDA857){ // tecla 5 apagar Led2
digitalWrite(led2,LOW);
Serial.println(results.value, HEX);
}
if(results.value == 0xFD30CF){ // tecla 0 apagar todos
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
Serial.println(results.value, HEX);
}
delay(200);
irrecv.resume();
}
}
Propostas:
- Mando da tele: Proba descubrir o código de varias teclas do mando da túa tele, equipo de música, etc.
- Control: Fai que premendo teclas do mando se executen diversos programas dos que xa tes feitos. Por exemplo, tecla1:escintileo, tecla2: melodía, tecla3:coche fantástico, tecla4: xiro dun motor cara á esquerda, tecla5: xiro cara á dereita, tecla6: parada, ou o que se che ocorra. Define funcións para cada un dos programas.
- Ascensor: Para o proxecto dun ascensor de 3 pisos, utiliza un mando para introducir o piso ao que desexas ir.