Die Arduino Infrarot Fernbedienung wird weiter optimiert und angepasst. Der Code aus der letzten Woche soll nun also so modifiziert werden, um das zu machen was er machen soll…
Aufgabenstellung:
Diese Infrarot-Projekt soll folgende Aufgabe erfüllen:
Taste 1 = rote LED leuchtet
Taste 2 = grüne LED leuchtet
Taste 3 = rote und grüne LED leuchten
Taste 4 = rote LED blinkt
Taste 5 = grüne LED blinkt
Taste 6 = rote und grüne LED blinken
Als IR-Receiver kommt auch immer noch der TSOP 4830 zum Einsatz.
Programmierung 1:
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int led1 = 2;
int led2 = 3;
int ledstatus1 = 0; //Definiere denn Status1 (an/aus)
int ledstatus2 = 0;//Definiere denn Status2 (an/aus)
void setup()
{
Serial.begin(9600);
pinMode (2, OUTPUT);
pinMode (3, OUTPUT); //12 und 13 als OUTPUT setzen
pinMode (11, OUTPUT);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results))
{
Serial.println(results.value, DEC);
switch(results.value){
case (16) :
if (ledstatus1 == 0)
{
digitalWrite(led1, HIGH);
ledstatus1++;
}
else
{
digitalWrite(led1, LOW);
ledstatus1--;
}
delay(1); break;
case (2064) :
if (ledstatus2 == 0)
{
digitalWrite(led2, HIGH);
ledstatus2++;
}
else
{
digitalWrite(led2, LOW);
ledstatus2--;
}
delay(1);
break;
default: delay(1);
}
irrecv.resume();
}
}
Dieser Code mit Tastentoggle läuft auch, ist aber nicht ganz das was ich mir vorgestellt habe.
Da es sich aber um einen wichtigen Code auf dem Weg zum eigentlichen Ziel handelt, habe ich ihn hier auch dokumentiert.
Mit dem Begriff Tastentoggle meine ich, dass die Taste die entsprechende LED sowohl einschaltet als auch ausschaltet. Der nächste Code ist meine Anpassung davon mit dem was ich Normalschaltung nenne.
Programmierung 2:
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int led1 = 2;
int led2 = 3;
void setup()
{
Serial.begin(9600);
pinMode (2, OUTPUT);
pinMode (3, OUTPUT);
pinMode (11, OUTPUT);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results))
{
Serial.println(results.value, DEC);
switch(results.value)
{
case (16) :
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
delay(1);
break;
case (2064) :
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(1);
break;
default: delay(1);
}
irrecv.resume();
}
}