DC Motor mit Infrarotsensor losfahren - stoppen - Pause mit Arduino Uno

Hallo Zusammen,

bin Neuling hier und weiß nach vielem Probieren nicht mehr weiter.

Mein Motor läuft nach Wunsch vorwärts und dann auch rückwärts nach Betätigen eines IR - Sensors.

Aber der Motor soll nach dem Umschaltsignal des Infrarotsensors eine programmierte Pause machen.

Egal was ich probiere haut nicht hin:

Nach der Programmzeile:

if (digitalRead(IROUT) == LOW) //2 LED brennen oder if (digitalRead(IROUT) == HIGH) //1 LED brennt

soll eine Pause z.B. mit delay kommen.

Wer kann helfen ? Vielen Dank im Voraus !!

Die Datei hab ich auch angehängt.

Hintergrund ist eine Seilbahnsteuerung mit Berg und Talstation

Hier der Code:

const int motorSpeedPin = 9; // Verbinden mit Pin 1 L293D CHIP

const int switchPin = 2; // switch input
const int motor1Pin = 3; // H-bridge leg 1 (pin 2, 1A)
const int motor2Pin = 4; // H-bridge leg 2 (pin 7, 2A)
const int enablePin = 9; // H-bridge enable pin
const int IROUT = 10; // Infrarotlichtschranke an PIN10 enable pin

void setup() {
pinMode(motorSpeedPin, OUTPUT);

// set the switch as an input:

Serial.begin(9600);

pinMode(switchPin, INPUT);
pinMode(12, OUTPUT);
pinMode(10, INPUT);
// set all the LOWother pins you're using as outputs:
pinMode(motor1Pin, OUTPUT);
pinMode(motor2Pin, OUTPUT);
pinMode(enablePin, OUTPUT);

// set enablePin high so that motor can turn on:
digitalWrite(enablePin, HIGH);
}

void loop() {

Serial.println("IROUT Status:");
Serial.println(digitalRead(IROUT));

analogWrite(motorSpeedPin, 120); // Geschwindigkeit des Motors

if (digitalRead(IROUT) == LOW) //2 LED brennen

{

digitalWrite(motor2Pin, HIGH);
digitalWrite(motor1Pin, LOW);

Serial.println("Heissluftballon backward 2 lED");
}

if (digitalRead(IROUT) == HIGH)// 1 LED brennt

{

digitalWrite(motor1Pin, HIGH);
digitalWrite(motor2Pin, LOW);

Serial.println("Heissluftballon forward 1 LED");
}
}

Test_neu.ino (1.27 KB)

Eine Pause geht folgendermaßen:

delay(1000);

1000 sind in diesem Fall 1000ms = 1 Sekunde.

Jetzt noch rauskriegen, wie man den Motor statt vorwärts oder rückwärts auch gar nicht laufen lassen kann :wink:

Vielleicht die Kommentare mit den 1 / 2 LED (?) durch etwas sinnvolleres ersetzen. Ich dachte, es geht darum einen Motor linksrum/rechtsrum laufen zu lassen ?

Dann ist das Problem wohl , dass man nun nicht nur zwischen zwei Zuständen unterscheiden muss, sondern erkennen, ob gerade ein Wechsel war (stop, delay), oder eben nicht und der Motor einfach ohne delay und stop weiterlaufen soll...

Hallo Zusammen,

habs gelöst bekommen. Wenn jemand Interesse am Code und Hardware hat gerne. Ich hab ein Motorshield L298P benutzt. Hier kurz posten und ich stells rein.

Danke

Glückwunsch! ( Und danke für die Rückmeldung )

Wenn es funktioniert und du zufrieden bist, ist gut.

Dann noch erzählt bekommen, was du hättest noch besser machen können, muss nicht sein, finde ich.

Für andere, die etwas ähnliches suchen, wäre es schon zu wünschen, den Code und Infos zur Hardware zu veröffentlichen.

Gruß Tommy