Hallo Leute, ich bin absoluter Neuling und hoffe hier auf schnelle Hilfe.
Ich bin gerade auf einer Lichtmesse in Frankfurt (falls jemand eine Freikarte möchte!!) und stelle hier mit meiner Hochschule aus. Ich stelle eine interaktive Leuchte aus. Sie reagiert auf eine sich nähernde oder zurückweichende Person in dem sie von einem Motor hoch gezogen oder herunter gelassen wird. Mein Problem: Ich möchte dass der Motor seine Schritte zählt und nicht höher als 5000 steps geht und nicht unter 0
Könnte ihr mir helfen? Ich dachte ich habe es in die if Funktion eingebaut.
#define trigPin 7
#define echoPin 8
#define STEPS 200
#include <Stepper.h>
Stepper stepper(STEPS, 1, 2, 3, 4);
int steps = 0;
int temp;
long distance;
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
stepper.setSpeed(100);
}
void loop() {
long duration;
digitalWrite(trigPin, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin, HIGH);
// delayMicroseconds(1000); - Removed this line
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
int tmp_distance = (duration/2) / 29.1;
if (tmp_distance >= 250 || tmp_distance <= 10){
Serial.println("Out of range");
}
else {
temp = distance;
distance = tmp_distance;
int differenz = temp - distance;
Serial.print("Differenz: ");
Serial.print(differenz);
Serial.println(" cm");
/*Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");*/
Serial.println("----");
//Näher kommen
if (differenz > 5 && differenz < 50 && steps <= 5000) {
stepper.step((differenz*24)*-1);
steps = steps + differenz*24;
}
///Weg gehen
if (differenz < -5 && differenz > -50 && steps >= 0) {
stepper.step((differenz*24)*-1);
steps = steps + (differenz*24);
}
}
Serial.print("Steps: ");
Serial.println(steps);
delay(200);
}