Hallo zusammen,
Ich baue gerade ein Aufzugsmodell, bei dem ein Schrittmotor durch zwei Taster gesteuert wird. Zusätzlich gibt es einen Entfernungsmesser, der die Position des Aufzugs erfasst und damit vier LEDs ansteuert, die je nach Höhe leuchten sollen.
Ich habe zwei funktionierende Codes:
- Einen für den Schrittmotor und die Taster → Funktioniert einwandfrei.
- Eines für das Entfernungsmesser und die LEDs → Funktioniert ebenfalls.
Das Problem entsteht, wenn ich beide Codes zusammenführe: Der Aufzug fährt dann automatisch hoch und runter, ohne dass ich die Taster betätige.
Wie kann ich die beiden Codes so kombinieren, dass der Schrittmotor ausschließlich durch die Taster aktiviert wird, während der Entfernungsmesser nur zur LED-Steuerung dient?
Danke für eure Hilfe!
Programm läuft auf einem Arduino Mega
**#include <Arduino.h>**
**#include <Stepper.h>**
**// Schrittmotor Einstellungen**
**int _SPU_S = 2048; // Schritte pro Umdrehung des Motors**
**Stepper _stepper_S(_SPU_S, 11, 9, 10, 8); // Motor Pin 6, 4, 5, 3**
**int _taster_T = 4; // Pin für Taster 1**
**int _taster_T2 = 1; // Pin für Taster 2**
**void setup()**
**{**
**pinMode(_taster_T, INPUT);**
**pinMode(_taster_T2, INPUT);**
**}**
**void loop()**
**{**
**// Schrittmotorsteuerung**
**if (digitalRead(_taster_T2) == HIGH) { // Wenn Taster 2 gedrückt wird**
**_stepper_S.setSpeed(12); // Geschwindigkeit auf 10 RPM setzen**
**_stepper_S.step(-6150); // 5000 Schritte rückwärts**
**}**
**if (digitalRead(_taster_T) == HIGH) { // Wenn Taster 1 gedrückt wird**
**_stepper_S.setSpeed(12); // Geschwindigkeit auf 10 RPM setzen**
**_stepper_S.step(6150); // 5000 Schritte vorwärts**
**}**
**}**
#include <Arduino.h>
// Ultraschallsensor Pins
const int _trigger_U = 34;
const int _echo_U = 35;
// LED Pins
const int _led_L = 25;
const int _led_L2 = 22;
const int _led_L3 = 23;
const int _led_L4 = 24;
// Funktion zur Entfernungsmessung mit Ultraschallsensor
double _getUltrasonicDistance(int trigger, int echo)
{
digitalWrite(trigger, LOW);
delay(5); // Kurze Pause, um sicherzustellen, dass der Trigger funktioniert
digitalWrite(trigger, HIGH);
delay(10); // Trigger-Puls
digitalWrite(trigger, LOW);
long duration = pulseIn(echo, HIGH); // Messung der Pulsdauer
double distance = (duration / 2.0) * 0.03432; // Umrechnung in cm
return distance;
}
void setup()
{
// Ultraschallsensor-Pins als Ausgänge/Eingänge festlegen
pinMode(_trigger_U, OUTPUT);
pinMode(_echo_U, INPUT);
// LED-Pins als Ausgänge festlegen
pinMode(_led_L, OUTPUT);
pinMode(_led_L2, OUTPUT);
pinMode(_led_L3, OUTPUT);
pinMode(_led_L4, OUTPUT);
}
void loop()
{
// **Ultraschallsensor misst die Entfernung**
double distance = _getUltrasonicDistance(_trigger_U, _echo_U);
// **LEDs steuern je nach gemessener Entfernung**
if (distance > 22) {
digitalWrite(_led_L, HIGH); // LED an Pin 13 an
} else {
digitalWrite(_led_L, LOW); // LED an Pin 13 aus
}
if (distance < 22) {
digitalWrite(_led_L2, HIGH); // LED an Pin 10 an
} else {
digitalWrite(_led_L2, LOW); // LED an Pin 10 aus
}
if (distance < 6) {
digitalWrite(_led_L3, HIGH); // LED an Pin 11 an
} else {
digitalWrite(_led_L3, LOW); // LED an Pin 11 aus
}
if (distance > 4) {
digitalWrite(_led_L4, HIGH); // LED an Pin 12 an
} else {
digitalWrite(_led_L4, LOW); // LED an Pin 12 aus
}
delay(100); // Warten, bevor erneut gemessen wird (Stabilität)
}

