Aquí us ensenyaré com fer coses amb el comandament IR!
En aquest cas, quan premem les tecles de l'1 al 4 encendrem leds i amb el botó de power els tancarem tots!
Recordeu que dintre de cada cas hi podeu escriure el que volgueu!
Un augment o disminució del temps de delay, moure un servo a diferents llocs, fer moure els motors endavant o endarrere...
Intenteu usar la imaginació de tot el que sabeu!
Recordeu que dintre de cada cas hi podeu escriure el que volgueu!
Un augment o disminució del temps de delay, moure un servo a diferents llocs, fer moure els motors endavant o endarrere...
Intenteu usar la imaginació de tot el que sabeu!
La connexió serà la següent, i la posició dels pins està escrita en el codi:
Com veureu aquí hi ha el codi:
/*
* Codi per a llegir el valor del IR i poder fer alguna cosa
* per casos de cada tecla.
* Hi ha leds conectats, apretant la tecla 1 a 5 els encenem a voluntat.
* Després, apretant power s'apaguen.
* Dins de cada case es podria posar "motors endavant, gir, etc"
* per a controlar el robot per IR
* A més de esriure per serial el nom de cada botó, llegeix qualsevol valor de mando
* Així que es pot adaptar per a llegir gairebé qualsevol!
*/
#include <IRremote.h>
/*decàrregade la llibreria: https://github.com/shirriff/Arduino-IRremote/archive/master.zip
* S'ha de canviar el nom de la carpeta descomprimida a IRremote
* S'ha de col·locar la carpeta a arduino-1.x/libraries/IRremote
* Hauria de quedar així: arduino-1.x/libraries/IRremote/IRremote.cpp
*/
int RECV_PIN = 8; ¨ //pin on tenim el OUTPUT del sensor IR
int Led1 = 4; // LED1 connectat al pin digital 4
int Led2 = 5; // LED2 connectat al pin digital 5
int Led3 = 6; // LED3 connectat al pin digital 6
int Led4 = 7; // LED4 connectat al pin digital 7
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Comencem el programa IR
pinMode(Led1, OUTPUT);
pinMode(Led2, OUTPUT);
pinMode(Led3, OUTPUT);
pinMode(Led4, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) { //si reb algun dada IR
long int decCode = results.value;
Serial.println(decCode); //Escriu el que ha llegit
switch (results.value) { //Executa el cas del número rebut
case 16753245:
Serial.println("Power Button"); //apagarem els 4 leds
digitalWrite(Led1, LOW);
digitalWrite(Led2, LOW);
digitalWrite(Led3, LOW);
digitalWrite(Led4, LOW);
break;
case 16736925:
Serial.println("Mode Button");
break;
case 16769565:
Serial.println("Mute Button");
break;
case 16720605:
Serial.println("Playpause Button");
break;
case 16712445:
Serial.println("Left Button");
break;
case 16761405:
Serial.println("Right Button");
break;
case 16769055:
Serial.println("EQ Button");
break;
case 16754775:
Serial.println("- Button");
break;
case 16748655:
Serial.println("+ Button");
break;
case 16738455:
Serial.println("0 Button");
break;
case 16750695:
Serial.println("shuffle Button");
break;
case 16756815:
Serial.println("U/SD Button");
break;
case 16724175:
Serial.println("1 Button");
digitalWrite(Led1, HIGH); // Encenem el LED1
break;
case 16718055:
Serial.println("2 Button");
digitalWrite(Led2, HIGH); // Encenem el LED2
break;
case 16743045:
Serial.println("3 Button");
digitalWrite(Led3, HIGH); // Encenem el LED3
break;
case 16716015:
Serial.println("4 Button");
digitalWrite(Led4, HIGH); // Encenem el LED4
break;
case 16726215:
Serial.println("5 Button");
break;
case 16734885:
Serial.println("6 Button");
break;
case 16728765:
Serial.println("7 Button");
break;
case 16730805:
Serial.println("8 Button");
break;
case 16732845:
Serial.println("9 Button");
break;
default:
Serial.println("Waiting ...");
}
irrecv.resume(); // Esperem a rebre el següent valor
}
}
El resultat de prémer les tecles 1, 2 , 3, 4 i Power és el següent:
Com podem veure, de vegades apareix el -1 Waitng... això és per que no li he deixat temps a esperar-se, he premut les tecles molt ràpid.
El procediment és el següent:
amb irrecv.enableIRIn() comencem el programa que comença a llegir sense parar el sensor IR.
Quan arribem a irrecv.decode() el programa treu un valor, però amb "&result" no donarà cap valor fins que torni a rebre alguna cosa.
Guardem el valor a una dada i la imprimim per serial.
Llavors com em rebut un valor, l'utilitzem per a canviar de "cas", i dintre de cada un farem el que volgem.
Per exemple, si tenim aquest programa:
switch (X) {
Quan arribem a irrecv.decode() el programa treu un valor, però amb "&result" no donarà cap valor fins que torni a rebre alguna cosa.
Guardem el valor a una dada i la imprimim per serial.
Llavors com em rebut un valor, l'utilitzem per a canviar de "cas", i dintre de cada un farem el que volgem.
Per exemple, si tenim aquest programa:
switch (X) {
case 1:
Programa1;
brake;
case 2:
Programa2;
brake;
default:
Programadefault;
}
cada vegada que passi per switch, si el valor de la dada X és 1, carregarà el programa 1, si X==2, carregarà el programa2, i si no és cap d'aquests valors, el programadefault.
Cap comentari:
Publica un comentari a l'entrada