Drucktaster starte Sketch nicht

Hallo in die fröhliche Runde.

Eins vorweg: ich bin relativ unerfahren mit dem Programmieren, ist echt übel, ja sogar schlimm.

Mein Vorhaben : Ein Drucktaster startet den Sketch, welcher dann 2 Schrittmotoren ansteuern/starten soll. Wenn die Motoren Ihre Steps abgearbeitet haben, soll durch erneutes drücken des Schalters der Sketch wieder von vorne anfangen.

Wie kann ich hier den Sketch für Euch einfach abbilden, damit einer von Euch Profis mal ein Auge draufwirft?

Beste Anfänger Grüße
Petty

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

1 Like

Top. Dankeschön. Ist mir nicht aufgefallen in der Eile

Deine Frage nach dem Codeposten beantwortet sich hier:

Und Eile ist schon mal ganz schlecht...

Hallo in die fröhliche Arduino Runde !

Kurz zu mir: ICH BIN ANFÄNGER, also haut bitte leicht zu ( klaaatsch ).

Zu meiner Frage/ Vorhaben: Ein Drucktaster soll einen Sketch starten, welcher 2 Schrittmotoren starten soll. Nachdem diese Ihre Steps abgearbeitet haben, soll durch erneutes drücken der Sketch wieder von vorne anfangen.

Arduino Uno mit Motorshield V3 , 2 Nema 17 Steppermotoren .

Wie kann ich hier den Sketch einbinden, damit ein Profi mal ein geübtes Auge drauf werfen kann? ( nicht wörtlich nehmen :slight_smile: )

Beste Grüße
Petty

Code einfügen, markieren und

void setup(void) { 
 Serial.begin(9600); //Starten der seriellen Kommunikation mit 9600 baud
 Serial.println("Temperatursensor - DS18B20"); 
 sensors.begin(); //Starten der Kommunikation mit dem Sensor
 sensorCount = sensors.getDS18Count(); //Lesen der Anzahl der angeschlossenen Temperatursensoren.
}

cu

Danke für die Info. 

Hier mal der Sketch

#include<Wire.h>
#include <Adafruit_MotorShield.h>
#include<AccelStepper.h>
// Objekt für Motorshield erzeugen
Adafruit_MotorShield AFMS =  
Adafruit_MotorShield();

// Schrittmotor an MotorPort Nr1 ( M3 und M4)
Adafruit_StepperMotor
*myStepper = 
AFMS.getStepper(200, 1);
Adafruit_StepperMotor 
*myStepper1 = 
AFMS.getStepper(200, 2);

//Eingänge
int starttaste = 5; // GPIO?
int start = HIGH;

void setup() {

pinMode(starttaste,INPUT); // Eingang

// Schrittmotoren auf Geschwindigkeit setzen

myStepper->setSpeed(10); // mystepper für Z Achse
myStepper1->setSpeed(200); // myStepper1 für X Achse

//Motorshiel starten
AFMS.begin();
}

void loop(){

//Taster wird abgefragt
start = 
digitalRead(starttaste);

if(start == LOW){
  //nach oben Backward nach unten Forward
  myStepper->step(3600,BACKWARD,INTERLEAVE);
  myStepper->step(3600,FORWARD,INTERLEAVE);
  
  myStepper1->step(500,BACKWARD,SINGLE);
  myStepper1->step(500,FORWARD,SINGLE);

  delay(100);
}
}

Zeige deinen Schaltplan und ein Echtbild wie du was angeschlosse hast.

Schließt der Taster gegen Masse und hast du einen externe Pullup Widerstand?!?

Einen Widerstand habe ich nicht mit eingebaut

Zu den verwendeten Anschlüssen nach dem Anschlussplan

1 LED- negativ GND geht auf GND am Arduino
2 LED+ Positiv PWR geht auf 3,5 V am Arduino
C Common ( gemeinsam NO/NC geht auf A5 am Arduino
NO Normal Open geht auf Digital Pin 5 am Arduino.

das macht wenig Sinn.
Lies mal das nach: https://starthardware.org/arduino-und-taster/
Und dann nimm Variante 3.

Variante 3 wäre mit der Bounce - Libary zu arbeiten?

Was bedeutet das Fragezeichen? Ein Beispielcode ist doch abgedruckt... vielleicht probierst Du einfach mal etwas damit herum um den zu verstehen....

Das: "Button direkt am Arduino mit internem Pull-Up-Widerstand"

Bin sprachlos..

Top,

Vielen Dank für die konstruktive Hilfestellung !! werde mich gleich an die Arbeit machen.
Besten Dank schonmal

Kannst Du mal etwas genauer beschreiben, welche HW Du einsetzt? Es gibt verschiedene Motorschields, und auch Stepper sind sehr unterschiedlich bezügl. ihrer elektrischen Eigenschaften ( 'NEMA17' ist da bei weitem nicht ausreichend zur Beschreibung - das bezieht sich nur auf die Mechanik ).
Nicht jeder Stepper passt zu jedem Shield - das muss man sorgfältig auswählen.

Hallo MicroBahner,
Das Motorshield ist das Hailege TB6612 FNG IIC I2C .
Ich denke nicht das es damit was zu tun hat, denn die Motoren laufen ohne Einbindung des Druckschalters.
Denke eher , es hat was mit der Verkabelung zu tun.
Den Sketch habe ich mittlerweile mit einem Pull-Up-Widerstand geschrieben.
Die Anschlüsse habe ich am Motorshiel angeschlossen , wie bereits weiter oben im Post beschrieben...
Wenn Du dir den Sketch mal anschauen möchtest ?


#include<Wire.h>
#include <Adafruit_MotorShield.h>
#include<AccelStepper.h>
// Objekt für Motorshield erzeugen
Adafruit_MotorShield AFMS =  
Adafruit_MotorShield();

// Schrittmotor an MotorPort Nr1 ( M3 und M4)
Adafruit_StepperMotor
*myStepper = 
AFMS.getStepper(200, 1);
Adafruit_StepperMotor 
*myStepper1 = 
AFMS.getStepper(200, 2);

//Eingänge
int starttaste = 5; // GPIO?
int start = HIGH;

void setup() {

pinMode(5,INPUT_PULLUP); // Eingang

// Schrittmotoren auf Geschwindigkeit setzen

myStepper->setSpeed(10); // mystepper für Z Achse
myStepper1->setSpeed(200); // myStepper1 für X Achse

//Motorshiel starten
AFMS.begin();
}

void loop(){

//Taster wird abgefragt

if (digitalRead(5)== HIGH){
//gedrückt
} else {
  //nicht gedrückt
}

  //nach oben Backward nach unten Forward
  myStepper->step(100,BACKWARD,INTERLEAVE);
  myStepper->step(100,FORWARD,INTERLEAVE);
  
  myStepper1->step(500,BACKWARD,SINGLE);
  myStepper1->step(500,FORWARD,SINGLE);

  delay(10);
}








Sollte das nicht eine "bool" sein ?