Schrittmotor mit Webinterface steuern

Du kannst jetzt taaagelang weiterwurschteln und fünftausendmal denken

"ich probiere mal das dann muss es doch laufen!"

An dieser Stelle wird es jetzt wirklich wichtig mal die Zeit zu investieren das da zu lesen

Das wirkt turbo.

probiere mal ob du das englisch so weit verstehst das du weißt was du machen musst

ok danke bis dahin

ich glaube es liegt bei mir, dass bei mir was mit den "Erweiterungen" nicht passt

welche das sind sagt dir die Fehlerausgabe wenn du
1.) Die Fehlerausgabe auf

"Compiler-Warnungen alle "

gestellt hast
2.) den kompletten Inhalt der Compiler-Meldungen durch anklicken des Kopiere Fehlermeldungen-Buttons in die Zwischenablage kopiert hast und dann als Code-Section in ein Posting eingefügt hast.

Hallo nochmal, kaum habe ich das eine Problem gelöst, kommt schon das Nächste.
Das Programm läuft inzwischen schon auf dem ESP, jedoch dreht sich der der Schrittmotor nicht.
LG

oder habe ich was vergessen zu konfigurieren (z.B. Pins)

Du bist hier nicht bei WhatsApp oder Instagram sondern in einem Informatik-Userforum.
Mit kurzen Sätzchen-Mätzchen ist es da nicht getan.

Wie sollen wir das beurteilen wenn du deinen aktuellen Sketch nicht als neues Posting hier postest?

In der Informatik geht es wie der Name schon sagt um Information.
Also liefere die entsprechenden Informationen in Form des aktuellen und kompletten Sketches und in Form einer Beschreibung was dein Programm aktuell macht
und was es stattdessen machen soll.

Also, das Programm ist so wie sie es gesendet haben.
Das Webinterface öffnet einwandfrei nur bewegt sich, wenn ich auf z.B. einen Button (z.B. Pos1) klicke, der Schrittmotor nicht.
Wenn sie sonst noch Informationen benötigen, die. ich nicht erwähnt habe, dann können sie mir gerne Schreiben.
LG

Da Demo-Programm steuert Modellbau RC-Servos an.
Dieses Demoprogramm soll hauptsächlich zeigen wie man mit ESPUI im Prinzip auf dem Webinterface Buttons und einstellbare Zahlenwerte programmiert und dann per preferences library speichert und wieder einliest.

Im Programm müssen dann die function-calls die die RC-Servo-Motor-Steuersignale erzeugen durch function-calls zum ansteuern der Schrittmotoren ersetzt werden..

Die weiteren benötigten Infos sind eine ausführliche Darstellung der eigenen Programmierkenntnisse.

Ich dachte das das oben beschriebene aus dem Programmcode deutlich wird. Aber da passte meine Annahme über die Programmierkenntnisse nicht mit dem tatsächlichen zusammen.

Desweiteren wird eine funktionelle Beschreibung was der Schrittmotor machen soll benötigt.
vgs

Guten Abend lieber StefanL38
Ich bin wie sie sehen ein ziemlicher Anfänger, was Programmierkenntnisse angeht.
Deshalb tut es mir sehr leid sie so oft stören zu müssen.

Es ist mir, dank meiner geringen Kenntnisse auch nicht bewusst welche ich function-calls ich ändern muss.

Der Schrittmotor soll, wenn ich beispielsweise im Webinterface auf die Taste Hoch oder Pos1 drücke, eine bestimmte Anzahl an Umdrehungen zurücklegen.
Das gleiche gilt für beispielsweise die Taste Runter oder Pos2.
Ausschließlich an Pos1 Wird ein Endschalter angebracht, der logischerweise die Bewegung bis zum nächsten Befehl stoppt.
Bei dem Gewicht, dass der Schrittmotor senkrecht nach oben ziehen soll, ist mit 600g zu rechnen.
Ich hoffe, jetzt sind die meisten ihrer Fragen geklärt.
Vielen Dank für ihre Geduld mit mir.
LG

Sowohl ich als auch die anderen User hier haben sehr viel Geduld unter der Bedingung, dass du die Geduld beweist, selbst dazuzulernen. Und diesen Lernfortschritt durch entsprechend spezifische Fragen beweist.

Also Programm aufspielen und dann posten "Programm funktioniert nicht"
ist ungeduldig und schlampig.

Fleiß beweisen heißt in dem Fall:
eine präzise Beschreibung was du gemacht hast:

"Ich habe das gesamte Programm in die Arduino-IDE kopiert" compilieren/upload gestartet
Programm wurde erfolgreich übertragen. Ich konnte über de Ip-Adresse die Webseite aufrufen
Screenshot der Webseite einfügen
und sie wurde angezeigt aber wenn ich auf den Button "Pos 1" klicke passierte nichts am Schrittmotor.

So viel Detailliertheit muss von dir kommen. Sonst hälst du die anderen auf.
Die anderen müssten dann erst einmal nach den Details fragen.

Solange du kurze Absätze schreibst so wie ich hier und der Gesamtumfang des Textes nicht über zwei Bildschirme hinausgeht ist alles prima.

Es gibt jetzt im Wesentlichen zwei Möglichkeiten:

Möglichkeit 1: fast nichts dazu lernen und dadurch alle 5 Minuten auf die nächste Antwort angewiesen sein.

Möglichkeit 2: mit kleinen Demoprogrammen ziemlich gründlich lernen und dadurch selbst verstehen wie es geht und nicht alle 5 Minuten eine neue Frage haben sondern nur ein mal pro Stunde.

Wichtige Grundlagen lernen:

Wichtig: Die Kabel zwischen Schrittmotor und Schrittmotor-Treiber immer nur im ausgeschalteten Zustand anschließen / oder abklemmen.

Wenn die Spannungsversorgung eingeschaltet ist treten beim Anschließen / Abklemmen Spannungsspitzen auf die den Schrittmotortreiber ruckzuck zerstören.

kleines Demoprogramm heißt:
MobaTools Dockumentation lesen:

ein erstes Demoprogramm der MobaTools library das nichts weiter macht als den Schrittmotor eine Umdrehung links herum kurze Pause eine Umdrehung rechts herum
wiederholen um das Grundprinzip zu testen.

Dann kennenlernen was ist eine function und wie programmiert man selbst functions.

und erst danach wieder an das Gesamtprogramm gehen.

Hallo nochmal,
ich habe über ihre Antwort nachgedacht und mich für Option 2 entschieden.
Außerdem habe ich ein funktionierendes kleines Programm geschrieben, dass einen Schrittmotor ansteuert, solange kein Endschalter gedrückt wird.
Hier das Programm

#include <AccelStepper.h>

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

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

int Sensor = D7;
int Wert;

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

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

  Serial.println(Wert);

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

Nach einigen versuchen habe ich es leider immer noch nicht geschafft, dieses Programm in das eins zu eins kopierte Demo-Programm für ESPUI zu kopieren, das heißt ich weiß nicht an welche stelle ich das Programm kopieren muss
LG redtiger791

Das Programmtext hineinkopieren hat bestimmt geklappt.
Das Compilieren hat wahrscheinlich nicht funktioniert.

Trotzdem einfach den Versuch wie du es probiert hast hier als Code-Section posten.

Den eigenen Programmierversuch als code-section posten ist das "eigene Mühe zeigen" das die anderen sehen wollen.

Dann werden sie geholfen

Hier ein Demo-Programm das den Schrittmotor eine bestimmte Anzahl Schritte vorwärts und dann wieder zurück rotieren lässt

Dein Code für Accelstepper gibt dem Schrittmotor 200.000 Schritte als "Fahrstrecke" vor und du generierst nur dann Schritte durch den function-Aufruf motor.run() wenn der Schalter nicht gedrückt ist.

Das Problem mit Accelstepper ist, das man entweder ganz schnell und ganz oft
motor.run() aufrufen muss oder das der function-Aufruf zum Schrittmotor laufen lassen blockierend ist.

Bei den MobaTools setzt man den Befehl "Fahre X Schritte" ab
und der Rest passiert von selbst.

Hi, ich habe erfolgreich das Demo Programm umgewandelt, sodass der Schrittmotor eine bestimmte Anzahl von Schritten macht, jedoch habe ich danach probiert einen End Schalter in das System einzubinden und bin daran gescheitert.

Wenn der Schalter am Anfang gedrückt wird, hält der Motor an.
Wenn der Schalter während der Bewegung gedrückt wird, hält der Motor nicht an.

Hier der Code:

/*  Example for MobaTools
    Moving a stepper back and forth
*/
#include <MobaTools.h>

// Adjust pins, steps and time as needed
const byte stepPin = 14;
const byte dirPin  = 12;
const int stepsPerRev = 800;   // Steps per Revolution ( example with 1/4 microsteps )
const long  targetPos = 1600;         // stepper moves between 0 and targetpos
long nextPos;

int Sensor = D7;
int Wert;

MoToStepper myStepper ( stepsPerRev, STEPDIR );
MoToTimer pause;                    // Pause between stepper moves
bool stepperRunning;

void setup() {
  myStepper.attach( stepPin, dirPin );
  myStepper.setSpeed( 600 );  // 60 Rev/Min ( if stepsPerRev is set correctly )
  myStepper.setRampLen( 200 );
  stepperRunning = true;
}

void loop() {

  Wert = digitalRead(Sensor);

  Serial.println(Wert);

  if (Wert == LOW) 
  {
   myStepper.moveTo(30000);
   stepperRunning = true;

  }

  else
  {
    myStepper.stop();
  }

  // The sketch is not blocked while the stepper is moving nor while it is stopped.
  // Other nonblocking  tasks can be added here       myStepper.moveTo(  );   stepperRunning = true;
}

was bekommst du denn im seriellen Monitor angezeigt?

nur für mich unverständliche Zeichen wie z.B. !�}'�

Tut was er soll? ... Wenn Taster Low, dann 30000 Schritte... dauert halt eine Weile.
Dann das ganze wieder von vorne.

ich weiß halt leider nicht, wie man programmiert, dass er, wenn der Schalter gedrückt wird sofort aufhört

also redtiger

du wirst schneller vorankommen wenn du mal 2 Stunden am Stück elementare Basis-Sachen lernst.
Alle 4 Tage mal kurz nur im Code rumfummeln dann dauert das ewig.

Und möglicherweise hast du dir Microcontroller Programmieren viiiiel einfacher vorgestellt. Es ist nicht so schnell erledigt wie eine App herunterladen und ein Login und Passwort einrichten.

Beim seriellen Monitor kann man die Übertragungsgeschwindigkeit einstellen.
Baudrate nennt sich das
die muss zwischen deinem Programm und der Einstellung im seriellen Monitor übereinstimmen.

Und von dieser Sorte Basiswissen gibt es noch einiges mehr was extrem nützlich ist. Aber das lernen dieser Basissachen ist halt erst einmal etwas anderes als im Code vorankommen. Du hast die Wahl zwischen
dich immer ganz schnell im Kreis drehen ohne vorwärts zu kommen
und
mal vom eigentlichen Code weggehen und lernen wie man den Bausatz-Rennwagen zusammenbaut um dann - wenn er nach 5 Tagen zusammengebaut ist -
dem Jogger der seit fünf Tagen auf dem 500km-Rennen 150 km weit gekommen ist innerhalb von einer Stunde sowas von abzuledern das er nur noch hinterhergucken kann.
Verstehste das Bild?