sketch_31_auto_fahren_IR_fernsteuerung

sketch_31_auto_fahren_IR_fernsteuerung
  /*Steuerung des Autos mit Infrarot-Fernbedienung. 
    Das Auto faehrt nur solange wie die jeweilige Taste gedrueckt wird, bei Loslassen stoppt es.
    Die Codes wurden vorher ermittelt mit Sketch 30 und sind in Codes.h angegeben.*/   
  
  #include <IRremote.h>
  #include "Codes.h"
  #include "Fahrablauf.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;
        default: break;
      }
    }
    else
    {
      if(millis() - preMillis > 200)
      {
      stopp();                             //Stoppen, wenn die Taste nicht mehr gedrueckt ist
      preMillis = millis();
      }
    }
  } 
Codes.h
  /*Codes*/
  #define F 16718055                              // FORWARD  (Button " ↑ ")
  #define B 16730805                              // BACK     (Button " ↓ ")
  #define L 16716015                              // LEFT     (Button " ← ")
  #define R 16734885                              // RIGHT    (Button " → ")
Fahrablauf.h
  void forward()
  {   
    digitalWrite(7, HIGH);            // Schalte Motoren RECHTS ein 
    digitalWrite(17, LOW);                                                      
    analogWrite(5, 180);               // Setze die Geschwindigkeit zwischen 0...255
    digitalWrite(11, HIGH);            // Schalte Motoren LINKS ein 
    digitalWrite(8, LOW);                                
    analogWrite(6, 180);              // Setze die Geschwindigkeit zwischen 0...255
    Serial.println("FORWARD");
  }
  
  void back()
  {   
    digitalWrite(7, LOW);            // Schalte Motoren RECHTS ein 
    digitalWrite(17, HIGH);                                                      
    analogWrite(5, 180);              // Setze die Geschwindigkeit zwischen 0...255
    digitalWrite(11, LOW);            // Schalte Motoren LINKS ein 
    digitalWrite(8, HIGH);                                
    analogWrite(6, 180);               // Setze die Geschwindigkeit zwischen 0...255
    Serial.println("BACK");
  }
  
  void left()
  {   
    digitalWrite(7, HIGH);            // Schalte Motoren RECHTS ein 
    digitalWrite(17, LOW);                                                      
    analogWrite(5, 180);              // Setze die Geschwindigkeit zwischen 0...255
    digitalWrite(11, LOW);            // Schalte Motoren LINKS ein 
    digitalWrite(8, HIGH);                                
    analogWrite(6, 180);               // Setze die Geschwindigkeit zwischen 0...255
    Serial.println("LEFT");
  }
  
  void right()
  {   
    digitalWrite(7, LOW);            // Schalte Motoren RECHTS ein 
    digitalWrite(17, HIGH);                                                      
    analogWrite(5, 180);              // Setze die Geschwindigkeit zwischen 0...255
    digitalWrite(11, HIGH);            // Schalte Motoren LINKS ein 
    digitalWrite(8, LOW);                                
    analogWrite(6, 180);               // 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");  
  }