Ein Steppermotor soll nach Betätigung eines Buttons einmal 100 Steps hinfahren, dann warten und danach zurückfahren auf Startposition.
Beim nächsten Tastendruck das gleiche.
Meine Idee war, den Stepper mit einem einfachen Sketch auszuprobieren und vom Button-Example Teile reinzukopieren um mein Ziel zu erreichen.
Das Problem:
Auf Knopfdruck fährt der Motor fünf mal die Anweisung durch, statt einmal.
Ich bin auf der Suche nach einem Tip für mich als Anfänger.
Das Ziel ist später einmal den Button durch einen Senderimpuls zu ersetzen. Es soll die Basis für eine Fernsteuerungsprojekt werden.
Vielen Dank.
Gruß
Claus
#include <Stepper.h>
#define STEPS 2038 // the number of steps in one revolution of your motor (28BYJ-48)
Stepper stepper(STEPS, 8, 10, 9, 11);
// constants won't change. They're used here to set pin numbers:
const int buttonPin = 2; // the number of the pushbutton pin
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
// initialize the pushbutton pin as an input:
// pinMode(buttonPin, INPUT);
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
stepper.setSpeed(0); // nicht losfahren bevor Button gedrückt
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
stepper.setSpeed(6); // 1 rpm
stepper.step(100); // fahre hin
delay(1000); // wait for one second
stepper.setSpeed(6); // 6 rpm
stepper.step(-100); // fahre zurück
stepper.setSpeed(0); // anhalten bis erneut Knopf gedrückt
} else {
// turn LED off:
//digitalWrite(ledPin, LOW);
stepper.setSpeed(0);
}
}
Glasreiniger:
Wenn ich das hier lese:
digitalWrite(button, HIGH); // aktiviert den Pull- Up- Widerstand
Ist das das gleiche wie ein physischer Pull up Widerstand?
Nun ja, physisch ist der auch, nur im µC eingebaut, ca. 50 kOhm. Man kann den auch mit INPUT_PULLUP aktivieren. Ich mache das, weil es mir einen externen Widerstand spart, dreht nur die Logik um, gedrückt ist LOW. Wen das stört, macht
Jetzt solltest Du noch auf die Flanke (das Drücken des Tasters reagieren und nicht auf den Zustand und auch noch entprellen.
Siehe https://www.arduino.cc/en/Tutorial/switch