Ich habe einen Schrittmotor, welcher in der Loop nach Tastendruck einen bestimmten Weg fahren soll. Jedoch soll die Aktion nur einmalig ausgeführt werden.
hier der auszug aus meinem Quellcode:
int p=0;
void loop()
{
if (digitalRead(BUTTON_PIN5) == LOW && p == 0) //referenzfahrt
{
while (l<=3000)
{
for(j=0;j<=1;j++)
{
digitalWrite(M1dirpin,HIGH);
digitalWrite(M1steppin,LOW);
delayMicroseconds(667);
digitalWrite(M1steppin,HIGH);
delayMicroseconds(667);
}
l++;
}
l=0;
p++;
}
}
benelli92:
Ich habe einen Schrittmotor, welcher in der Loop nach Tastendruck einen bestimmten Weg fahren soll. Jedoch soll die Aktion nur einmalig ausgeführt werden.
#define BUTTON_PIN5 5
#define INPUTMODE INPUT_PULLUP // INPUT or INPUT_PULLUP
void referenzFahrt()
{
// was auch immer
}
void setup()
{
pinMode(BUTTON_PIN5,INPUTMODE);
}
boolean done=false;
void loop()
{
if (!done) // Nur ausführen, wenn noch nicht ausgeführt
{
boolean pressed= digitalRead(BUTTON_PIN5);
if (INPUTMODE==INPUT_PULLUP) pressed=!pressed; // vertauschte Logik bei PullUp-Widerstand
if (pressed)
{
referenzFahrt();
done=true;
}
}
// weiterer Code hier
}
leider funktioniert der Code leider auch nicht, sodass sich bei Knopfdruck gar nichts tut
Dann prüfe mal, ob der in meinem Beispielcode definierte Buttonpin auch der ist, den Du verwendest, und trage vielleicht auch mal in die Funktion:
void referenzFahrt()
{
// was auch immer
}
genau das ein, was passieren soll.
Wenn eine Funktion aufgerufen wird, die im Funktionsrumpf nur einen Kommentar stehen hat, passiert natürlich auch nichts, wenn diese Funktion genau einmal ausgeführt wird.
Was mach ich falsch
ich möchte ein Schrittmotor 4 mal pro Tag von einen Zeitschltuhrsketch ansteuern .Der Ausgang bleibt 2mim auf ein,
Der Schrittmotor soll aber nur 2 Umdrehungen machen.
Ich habe versucht den Sketch von Jurs in ein Test Sketch (nur für den Schrittmotor )einzubinden,läuft nicht.