1 | #include <IRremote.h>
|
2 |
|
3 | int irPin = 13; //Pin am Arduino Nano für den IR Receiver
|
4 | int front = 4; //Pin am Arduino Nano für Frontbeleuchtung weiß
|
5 | int rear = 5; //Pin am Arduino Nano für Rückbeleuchtung rot
|
6 | int right = 6; //Pin am Arduino Nano für Blinker rechts
|
7 | int left = 7; //Pin am Arduino Nano für Blinker links
|
8 |
|
9 | byte Warnblinker = 0: //Variable zum Zustand speichern für den Warnblinker / 0=Aus, 1=An
|
10 | byte Licht = 0; //Variable zum Zustand speichern für des Lichts / 0=Aus, 1=An
|
11 | byte Bremse = 0; //Variable zum Zustand speichern für die Bremse / 0=Aus, 1=An
|
12 | int Blinkerintervall = 300; //Variable Zeit des Blinkers
|
13 |
|
14 | IRrecv irrecv(irPin); //Objekt initialisieren für die IR Übertragung
|
15 | decode_results results;
|
16 |
|
17 | void setup() {
|
18 | pinMode (front, OUTPUT); //LED-Pin als Ausgang deklarieren
|
19 | pinMode (rear, OUTPUT); //LED-Pin als Ausgang deklarieren
|
20 | pinMode (right, OUTPUT); //LED-Pin als Ausgang deklarieren
|
21 | pinMode (left, OUTPUT); //LED-Pin als Ausgang deklarieren
|
22 | pinMode (irPin, INPUT); //Den IR Pin als Eingang deklarieren.
|
23 | irrecv.enableIRIn(); //Den IR Pin aktivieren
|
24 | //Serial.begin(9600); //Serielle kommunikation mit 9600 Baud beginnen.
|
25 | }
|
26 |
|
27 | void warnblinker() {
|
28 | if((Warnblinker == 1) //Wenn Variable für den Warnblinker An
|
29 | && (millis()%(Blinkerintervall*2) > Blinkerintervall)){ //Und "Rest" von millis() geteiltdurch Blinkerintervall mal 2, Größer Blinkerintervall
|
30 | digitalWrite(right, HIGH); //Blinker Rechts leuchtet
|
31 | digitalWrite(left, HIGH); //Blinker Links leuchtet
|
32 | }
|
33 | else { //Ansonnsten
|
34 | digitalWrite(right, LOW); //Blinker Rechts leuchtet nicht
|
35 | digitalWrite(left, LOW); //Blinker Links leuchtet nicht
|
36 | }
|
37 | }
|
38 |
|
39 | void fahrbel() {
|
40 | if(Licht == 1) { //Wenn Variable fürs Licht An
|
41 | digitalWrite (front, HIGH); //Vorderlicht leuchtet
|
42 | analogWrite (rear, 100); //Rücklicht leuchtet zu ~40%
|
43 | }
|
44 | else { //Ansonnsten
|
45 | digitalWrite (front, LOW); //Vorderlicht leuchtet nicht
|
46 | digitalWrite (rear, LOW); //Rücklicht leuchtet nicht
|
47 | }
|
48 | }
|
49 |
|
50 | void carbreak() {
|
51 | if(Bremse == 1) { //Wenn Variable für die Bremse An
|
52 | digitalWrite (rear, HIGH); //Rücklicht leuchtet zu 100%
|
53 | }
|
54 | else if (Licht == 1){ //Ansonnsten wenn Variable fürs Licht An
|
55 | analogWrite (rear, 100); //Rücklicht leuchtet zu ~40%
|
56 | }
|
57 | else { //Ansonnsten
|
58 | digitalWrite (rear, LOW); //Rücklicht leuchtet nicht
|
59 | }
|
60 | }
|
61 |
|
62 | void loop() {
|
63 | warnblinker(); //Funktion warnblinker() ausführen
|
64 | if (irrecv.decode(&results)) { //Tastendruck auswerten und in results speichern
|
65 | if (results.value == 3249208323 ){ //Taste für Warnblinker An/Aus
|
66 | Warnblinker != Warnblinker; //Variable für den Warnblinker wechselt An/Aus
|
67 | }
|
68 | if (results.value == 3249193533 ){ //Taste für Licht An/Aus
|
69 | Licht != Licht; //Variable für das Licht wechselt An/Aus
|
70 | fahrbel(); //Funktion fahrbel() ausführen
|
71 | }
|
72 | if (results.value == 3249174918 ){ //Taste für Bremslicht An/Aus
|
73 | Bremse != Bremse; //Variable für die Bremse wechselt An/Aus
|
74 | carbreak(); //Funktion carbreak() ausführen
|
75 | }
|
76 | if (results.value == 3249166758 ){ //Taste für alles Aus
|
77 | Warnblinker = 0; //Variable für Warnblinker auf Aus
|
78 | Licht = 0; //Variable für Licht auf Aus
|
79 | Bremse = 0; //Variable für Warnblinker auf Aus
|
80 | digitalWrite (front, LOW); //Vorderlicht leuchtet nicht
|
81 | digitalWrite (rear, LOW); //Rücklicht leuchtet nicht
|
82 | digitalWrite (left, LOW); //Blinker links leuchtet nicht
|
83 | digitalWrite (right, LOW); //Blinker rechts leuchtet nicht
|
84 | }
|
85 | }
|
86 | irrecv.resume();
|
87 | }
|