Schrittmotor und Endschalter

Hallo,
ich hoffe Ihr könnt mir helfen. Mein Ziel ist es, einen Schrittmotor mit einem Endschalter zu stoppen, aber leider bekomme ich das alleine nicht hin.
Hier ist mein Quelltext. Hat Irgendjemand eine Idee, warum es nicht funktioniert?

#include <AccelStepper.h>

const int DIR = 12;
const int STEP = 14;

#define motorInterfaceType 1
AccelStepper motor(motorInterfaceType, STEP, DIR);

int Sensor = 7;
int Wert;

void setup()
{
  Serial.begin(9600);
  pinMode(Sensor, INPUT);
 motor.setMaxSpeed(1000);
  motor.setAcceleration(60);
  motor.setSpeed(1000);
  motor.moveTo(20000);  //richtung und drehungen einstellen
}

void loop ()
{
  Wert = digitalRead(Sensor);

  Serial.println(Wert);

  if (Wert == 0)
  {
    (motor.stop());
  }
  
  else 
  {
    (motor.run());
  }
  
}

Ich Bedanke mich schonmal in Voraus

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.

Hat dein Schalter einen Widerstand zu GND?
Wenn nicht nimm

pinMode(Sensor,INPUT_PULLUP);

und werte den mit HIGH oder 1( umgekehrte Logik)

nein

Dann muss der Endschalter zwischen dem PIN 7 und GND geschaltet werden und wie @fony schrieb mit INPUT_PULLUP der interne Widerstand aktiviert werden.

Die Abfrage des gedrückten Endschalters erfolgt dann genau so, wie Du es im Code hast.
Wenn der Wert 0 ist, ist der Taster geschlossen.

Muss brülle putzen :woozy_face:

muss der Endschalter am Board angeschlossen werden oder funktioniert eine externe Stromversorgung?

Ja.
Ein Kontakt an GND und ein Kontakt an PIN 7.
Keine externe Spannung da rauf!! Das gibt gerne Rauch.

und wohin der dritte?

Gar nicht.
Dein Endschalter ist ein Um- oder auch Wechselschalter.
Du brauchst nur 2 Drähte davon.
Musst aber dann die beiden richtigen finden.

Dann kannst Du den Aufbau aber auch besser machen.
Also suche die beiden drähte, die im ausgelösten Zustand keinen Durchgang haben.

Und im nicht ausgelösten Zustand dann Durchgang.

In Deinem Code prüfst Du dann nicht auf 0 sondern auf HIGH.

Ich habe jetzt alles ausgeführt, jedoch funktioniert es immer noch nicht.
Dies ist mein momentaner Code

#include <AccelStepper.h>

const int DIR = 12;
const int STEP = 14;

#define motorInterfaceType 1
AccelStepper motor(motorInterfaceType, STEP, DIR);

int Sensor = 7;
int Wert;

void setup()
{
  Serial.begin(9600);
  pinMode(Sensor,INPUT_PULLUP);
 motor.setMaxSpeed(1000);
  motor.setAcceleration(60);
  motor.setSpeed(1000);
  motor.moveTo(20000);  //richtung und drehungen einstellen
}

void loop ()
{
  Wert = digitalRead(Sensor);

  Serial.println(Wert);

  if (Wert == HIGH)
  {
    (motor.stop());
  }
  
  else 
  {
    (motor.run());
  }
  
}

Bei Pullup wird auf Low abgefragt oder 0.
Schalter muss aber einerseits auf GND drauf nicht auf 5V

Also ich hab einen auf GND und den anderen auf pin7

Gut nur noch

auf LOW ändern, so was
if ( !Wert )
funktioniert auch == benutzen faule Leute wie ich :innocent:

Tut sich immer noch nichts. So nebenbei, ich benutze hierfür einen Wemos D1 mini

Aha benutzt du wirklich GPIO7?
Der hat gar nicht GPIO7 nur D7, schreib mall 13 dann sollte Funktionieren.
Bei allen ESP solte man GPIO Nr nutzen nicht die D Nr, wenn du schreibst D7 sollte auch funktionieren.
Warum die GPIO Nr. benutzen ? Einfach es kann sein das unter D7 andere GPIO drauf ist, Bei D1mini vielleicht nicht aber bei Anderen Modulen schon.
Und je nach dem was für ESP in der IDE ausgewählt ist funktioniert gar nichts.

Hier ist IO .

ja, ist er

Nein, nicht zwingend.
Der TO hat einen Wechselschalter.
Der soll als Endschalter dienen.
Bei eingeschaltetem INPUT_PULLUP kannst Du schön auf HIGH prüfen, um zum einen das auslösen und zum anderen einen Verbindungsfehler vom/zum Schalter aufzudecken, wenn der Schalter als Öffner arbeitet. Siehe #10

Bin vom NO Schalter ausgegangen.
Ist egal 7 gibt es bei D1mini nicht, nur GPIO13 oder D7, hier ist der unterschied.
GPIO7 gibt`s schon nur wird vom System benutzt und bei D1mini nicht nach außen ausgeführt.
Der TO sollte mall Foto machen.
PS. Funktioniert bei dir @ Ausschreibung?

das @fony schreiben geht.
Da ist ein Skript im Hintergrund, was versucht passende Usernamen vorzuschlagen. Wenn geschrieben, wirds auch richtig angezeigt. Oder was meintest Du?