Guten Tag zusammen,
seit einiger Zeit bin ich mit einem für mich etwas größerem Projekt beschäftigt:
Ich möchte den Schrittmotor 28BYJ-48 (in der 5V Variante) zusammen mit dem ULN2003 Treibermodul per IR Fernbedienung mithilfe eines Arduinos steuern.#
Dabei sollte sich der Schrittmotor
-
im Uhrzeigersinn drehen, wenn ich einen bestimmten Knopf (nennen wir ihn A) der Fernbedienung einmal gedrückt habe, und erst wieder stehen bleiben, wenn ich einen beliebigen anderen Knopf drücke.
-
gegen den Uhrzeigersinn drehen, wenn ich einen anderen bestimmten Knopf (nennen wir ihn B) der Fernbedienung einmal gedrückt habe, und auch erst wieder stehen bleiben, wenn ich einen beliebigen anderen Knopf drücke.
Ich habe dies bereits mit zwei unterschiedlich farbigen LEDs getestet, wobei es funktioniert hat. (Eine rote LED stand für die Drehung im Uhrzeigersinn. Eine grüne LED stand für die Drehung gegen den Uhrzeigersinn.)
Der Sketch sieht wie folgt aus:
#include <IRremote.h>
int RECV_PIN = 3;
IRrecv irrecv(RECV_PIN)
decode_results results;
void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, DEC);
while (results.value == 10463599 || results.value == 2568141210) {
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
if (irrecv.decode(&results)) {
Serial.println(results.value, DEC);
irrecv.resume();
}
}
while (results.value == 3684511895 || results.value == 3189060206) {
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
if (irrecv.decode(&results)) {
Serial.println(results.value, DEC);
irrecv.resume();
}
}
while (results.value != 2568141210 && results.value != 10463599 && results.value != 3684511895 && results.value != 3189060206) {
digitalWrite(13, LOW);
digitalWrite(12, LOW);
if (irrecv.decode(&results)) {
Serial.println(results.value, DEC);
irrecv.resume();
}
}
}
}
An Pin 12 ist dabei die grüne LED angeschlossen und an Pin 13 die rote.
Da jede Taste der Fernbedienung zwei "Nummerncodes" besitzt, stehen immer jeweils 2 oder vier "Nummerncodes" in den if-Funktionen.
Nun zu meinem Problem:
Sobald ich in der Folge der if-Funktion anstelle der Befehle für die LEDs Befehle für einen Schrittmotor einfüge, dreht sich dieser nicht, sondern "zittert" maximal. Meine Frage wäre nun, wie ich mein oben genanntes Ziel erreichen könnte.
Der Schrittmotor funktioniert ansonsten einwandfrei. Daran kann es somit nicht liegen.
Viele Grüße und besten Dank für eure hoffentlich zahlreichen Antworten
Noah