Schrittmotor (mit DRV8825) steuern mit Drucktaster

Hallo,

wir haben in der Schule (NWT) ein Projekt. Wir müssen einen Süßigkeitenautomaten bauen bzw programmieren und da wir unerfahren sind, haben wir ein Problem.
Wir müssen einen Schrittmotor mit einem DRV8825 Shield mit einem Drucktaster steuern können. So dass, wenn man auf den Drucktaster drückt der Motor sich EINMAL dreht.
Wir haben bis jetzt den Motor zum laufen gebracht und unseren Taster eingesteckt, kommen jedoch nicht voran.
Wäre schön wenn wir schnell eine Rückmeldung kriegen könnten, da wir das Projekt bis Ende April fertig haben sollen.

Hier unser bisheriges Programm:

const int stepPin = 9;
const int dirPin = 8;
int Button = 11;
int Butttonstate = 0;

void setup() {
 pinMode(stepPin,OUTPUT);
 pinMode(dirPin,OUTPUT);
 pinMode(Button,INPUT);
}

void stepper(){
 digitalWrite(dirPin,HIGH);
 
for(int x = 0; x < 200;x++){
 digitalWrite(stepPin,HIGH);
 delay(10);
 digitalWrite(stepPin,LOW);
 delay(10);
 }
}

void loop(){
 Buttonstate = digitalRead(Button)
 if (Buttonstate==HIGH)
 {
   digitalWrite(dirPin,HIGH);
 
for(int x = 0; x < 200;x++){
 digitalWrite(stepPin,HIGH);
 delay(10);
 digitalWrite(stepPin,LOW);
 delay(10);
 }
 }
 else
 
}

LG

Setze Deinen Sketch bitte in Codetags (</> - Button oben links im Forumseditor).
Du kannst dazu Deinen Beitrag ändern.

Gruß Tommy

tubi55:

 if (Buttonstate==HIGH)

Du fragst, ist der Taster gedrückt? Das kommt aus der Formulierung: "Wenn der Taster gedrückt ist ..."

Genauer sollte es heißen: "Wenn sich der Tasterzustand von 'nicht gedrückt' nach 'gedrückt' verändert." Im Programm:

if ((alterButtonstate==LOW) && (neuerButtonstate==HIGH))

abgekürzt auch

if (!alterButtonstate && neuerButtonstate)

EDIT: geändert nach #7; danke!

hab es um geändert jedoch steht da buttonstate was not declared in this scope

Hi

Etwas mitdenken darfst Du hier aber schon.

Auch finde ich es 'eigen', daß Du zwar eine Funktion stepper() hast, Diese aber nicht aufrufst.
Nett wäre, wenn der Sketch formatiert wäre (STRG + T in der IDE)
UND, wenn Er komplett, zumindest kompilierbar wäre - hier fehlt irgendwie noch Was für den ELSE-Zweig.

MfG

const int buttonPin = 11;   
const int stepPin = 9;
const int dirPin = 8;

int buttonState = 0;        

void setup() {
 
  pinMode(buttonPin, INPUT);
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
}

void loop() {
  
  buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH) {
    digitalWrite(dirPin, HIGH);
    for (int x = 0; x < 200; x++){
      digitalWrite(stepPin, HIGH);
      delay(10);
      digitalWrite(stepPin, LOW);
      delay(10);
    }
  } 
  else {
    digitalWrite(stepPin, LOW);
  }
}

aktuell haben wir ein paar Änderungen unternommen jedoch wie gesagt haben wir in der schule nur nen Skript in die hand bekommen die wir selber durcharbeiten sollen.wir haben es auf unseren arduino ochgeladen jedoch passiert nichts wenn man auf den taster drückt...

Wie sieht denn das Originalscript aus und wie lautet die Aufgabe?

Gruß Tommy

agmue:

if ((neuerButtonstate==LOW) && (neuerButtonstate==HIGH))

Schau dir nochmal an was du da geschrieben hast :slight_smile:

Hi

Auch, wenn Hausaufgaben hier weniger oft geschrieben werden: WAS ist Eure Aufgabe?
WER ist 'Wir'?

Und so ...

MfG