sketch_31_auto_fahren_IR_fernsteuerung

sketch_31_auto_fahren_IR_fernsteuerung
  /*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.h
  /*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
Fahrablaufmodule.h
  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");  
  }