Hallo erstmal, habe ein Problem mit der Pinabfrage
Schrittmotor muss 90 Grad drehen um einen Schalter zu betätigen - macht das was er soll - ohne Schalterabfrage
Wenn der Pin high ist 1 mal ""else"" abarbeiten und warten bis wieder low
dann einmal ""low"" und warten auf high.(die Pin-Erkennung 0/1 kommt auf 1/10 sec nicht an )
Komme aus der loop nicht raus - true - false ist irgendwie das Problem, keine Idee wie ich das realisieren soll, hoffe das mir jemand helfen kann.
Schalter entprellen ist in der Schaltung nicht nötig.
/*
Stepper Motor - Schalter
L298 Driver
wenn key = 0 beim einschalten (Normalzustand)
einmal zur Sicherheit in Anschlag rotieren - 0 Stellung
und 13 low - 12 high
pin 7 low Enable von L298 = stromlos machen
*/
#include <Stepper.h>
int key=0;
boolean executed=false;
const int stepsPerRevolution = 14; // 14 Schritte , bei dem Motor 90 Grad
// L298 steppertreiber an pin 8 bis 11:
Stepper myStepper(stepsPerRevolution, 8,9,10,11);
void setup() {
pinMode(7, OUTPUT); // low Enable L298 stromlos machen
pinMode(2, INPUT_PULLUP ); // bei high -steps starten, Pin 13 high Pin12 low
// bei low wieder in Anfangsstellung
pinMode(12, OUTPUT); // High=RX Umschaltung
pinMode(13, OUTPUT); // High=Tx Umschaltung
myStepper.setSpeed(300); // was der Motor an Schrittspeed machen soll / kann
}
void loop() {
key = digitalRead(2);
if ((key == LOW)&&(executed==false)){
executed=true;
digitalWrite(7, HIGH);
myStepper.step(stepsPerRevolution);
delay(100);
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
digitalWrite(7, LOW);
}
else {
if (executed==true){
executed=false;
digitalWrite(7, HIGH);
myStepper.step(-stepsPerRevolution);
delay(100);
// hier Optokoppler abfragen - wäre noch eine schicke option
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
digitalWrite(7, LOW);
}
}
}