/*Steuerung des Autos mit Infrarot-Fernbedienung. Die Codes wurden vorher ermittelt mit Sketch 30 und sind in Codes.h angegeben. Das Bibliotheksprogramm "IRremote by Armin Joachimsmeyer" muss installiert sein.*/ #include <IRremote.hpp> #include "Codes.h" #include "Fahrablaufmodule.h" #define RECV_PIN 12 IRrecv irrecv(RECV_PIN); //IRremote.h den Eingangs Pin mitteilen decode_results results; unsigned long val; unsigned long preMillis; void setup() { Serial.begin(9600); /*Programmiere Arduino Pins als Ausgang (fuer Motoren)*/ pinMode(7, OUTPUT); pinMode(17, OUTPUT); pinMode(5, OUTPUT); pinMode(11, OUTPUT); pinMode(8, OUTPUT); pinMode(6, OUTPUT); irrecv.enableIRIn(); // Eingang auf Pin D12 aktivieren } void loop() { if (irrecv.decode(&results)) // Wenn IRremote.h ein decodiertes Signal liefert ... { preMillis = millis(); val = results.value; irrecv.resume(); //Timer startet neu (neue Messung durchfuehren) switch(val) { case F: forward(); break; //break: Programm springt weiter (wird auch bei for-Schleifen benutzt) case B: back(); break; case L: left(); break; case R: right(); break; case S: stopp(); break; default: break; } } else { if(millis() - preMillis > 200) { //stopp(); //Wenn aktiviert wird - stoppt immer wenn keine Taste gedrueckt ist preMillis = millis(); } } }
/*Codes*/ #define F 16718055 // FORWARD (Button " Pfeil vor ") #define B 16730805 // BACK (Button " Pfeil rueck ") #define L 16716015 // LEFT (Button " Pfeil links ") #define R 16734885 // RIGHT (Button " Pfeil rechts ") #define S 16726215 // STOPP (Button " OK ") #define H 16750695 // HUPEN (Button " 0 ") hier nicht programmiert #define A 16738455 // GREIFER AUF (Button " * ") hier nicht programmiert #define Z 16756815 // GREIFER ZU (Button " # ") hier nicht programmiert
void forward() { digitalWrite(7, HIGH); // Schalte Motoren RECHTS ein digitalWrite(17, LOW); analogWrite(5, 150); // Setze die Geschwindigkeit zwischen 0...255 digitalWrite(11, HIGH); // Schalte Motoren LINKS ein digitalWrite(8, LOW); analogWrite(6, 150); // Setze die Geschwindigkeit zwischen 0...255 Serial.println("FORWARD"); } void back() { digitalWrite(7, LOW); // Schalte Motoren RECHTS ein digitalWrite(17, HIGH); analogWrite(5, 150); // Setze die Geschwindigkeit zwischen 0...255 digitalWrite(11, LOW); // Schalte Motoren LINKS ein digitalWrite(8, HIGH); analogWrite(6, 150); // Setze die Geschwindigkeit zwischen 0...255 Serial.println("BACK"); } void left() { digitalWrite(7, HIGH); // Schalte Motoren RECHTS ein digitalWrite(17, LOW); analogWrite(5, 150); // Setze die Geschwindigkeit zwischen 0...255 digitalWrite(11, LOW); // Schalte Motoren LINKS ein digitalWrite(8, HIGH); analogWrite(6, 150); // Setze die Geschwindigkeit zwischen 0...255 Serial.println("LEFT"); } void right() { digitalWrite(7, LOW); // Schalte Motoren RECHTS ein digitalWrite(17, HIGH); analogWrite(5, 150); // Setze die Geschwindigkeit zwischen 0...255 digitalWrite(11, HIGH); // Schalte Motoren LINKS ein digitalWrite(8, LOW); analogWrite(6, 150); // Setze die Geschwindigkeit zwischen 0...255 Serial.println("RIGHT"); } void stopp() { digitalWrite(7, LOW); // Schalte alle Motoren aus digitalWrite(17, LOW); digitalWrite(11, LOW); digitalWrite(8, LOW); Serial.println("STOP"); }