.

Arduino Servo Infrarot Fernsteuerung

Bei diesem Experiment dachte ich an einen Antennen Rotor, mit dem ich die Antenne drehen kann. Am besten geht dafür natürlich ein Schrittmotor oder Stepper. Da ich noch auf den Treiber warten musste, habe ich damit angefangen, ein Servo per Infrarot Fernsteuerung zu drehen.

arduino servo ir fernsteuerung

Man kann jede x-beliebige IR Fernsteuerung nehmen. Im Funduino Starterkit ist eine kleine Fernsteuerung dabei aber mir war die von einem alten Fernseher lieber, weil sich die Knöpfe besser drücken ließen.

Video Anleitung "Mit Arduino ein Servo per Infrarot Fernsteuerung kontrollieren"

 

Als erstes muss man herausfinden, was passiert, wenn man auf die Knöpfe der Fernsteuerung drückt. Da das Arduino Board eine serielle Schnittstelle (COM3 bei mir) hat, kann man mit einem Terminalprogramm, wie dem kostenlosen Hterm, mitlesen, welche Daten gesendet werden.

terminalprogramm hterm arduino ir fernsteuerung

Das brauchst du

  • IRremote Library für Arduino (kostenlos)
    Einfach entpacken und das Verzeichnis mit den Dateien in arduino\libraries\ kopieren...umbenennen in IRremote
  • Terminalprogramm Hterm (kostenlos)
  • irgendeine Infrarot Fernsteuerung (TV, MP3 Player etc.)
  • einen Infrarot Sensor (war in meinem Straterkit dabei)

 

Darauf musst du achten

  • die Belegung der Beine des Infrarot Sensors (eventuell genaue Bezeichnung in Google eingeben)

 

Arduino Code

Hier ist der fertige Arduino Programmcode, um ein Servo mit einer Infrarot Fernsteuerung zu kontrollieren. Die Werte der IR Fernsteuerung sind immer verschieden und müssen vorher mit einem Terminalprogramm ausgelesen werden.

#include <IRremote.h>       //IR Library einbinden
int RECV_PIN = 9;           //IR Sensor an Pin 9

#include <Servo.h>          //Servo Library einbinden
Servo servo1;               //Servo definieren
int grad = 0;                   //Variable deklarieren

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();
  servo1.attach(8);
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, DEC);
    
    if (results.value == 1431986946)   //wenn Taste >> gedrückt wird...Wert muss ermittelt werden
    {grad = grad + 5;}
    if (results.value == 4283186720)   //wenn Taste << gedrückt wird...Wert muss ermittelt werden
    {grad = grad - 5;}
    if (results.value == 299586532)   //wenn Taste Home gedrückt wird...Wert muss ermittelt werden
    {grad = 0;}
    servo1.write(grad);
    irrecv.resume();
    
  }
  }

 

Hier noch ein weitere Arduino Code, um ein Servo zufällig zu steuern:

arduino servo

 

#include <Servo.h>
Servo servo1;
int grad;

void setup() {
servo1.attach(8);
}

void loop() {
  grad = random(0,180);  
  
servo1.write(grad);
delay (random(500, 1000));
}