Arduino Servo Infrarot Fernsteuerung

Hinweis: Kauflinks verweisen auf Ebay- oder Amazon-Angebote, die mir eine kleine Provision bezahlen, um meinen Kanal/Website zu unterstützen.

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.

Video Anleitung

"Mit Arduino ein Servo per Infrarot Fernsteuerung kontrollieren"

youtube-video

Analyse

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.

Download Hterm (kostenlos)

hterm software com analyse

Produkte

Darauf musst Du achten: die Belegung der Beine des Infrarot Sensors (eventuell genaue Bezeichnung in Google eingeben)

Arduino Code

#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();
  }
  }

Arduino Code zufällige Steuerung

#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));
}

© by Richy Schley, 2021 - 2024. All Rights Reserved. Built with Typemill.