das hat schon manches klarer gemacht. Ich habe aber noch nichts gefunden über den Eingang STEP.
Muss da für jeden Schritt ein Signalwechsel erfolgen, also eine Pulsfolge?
Mit welchem Befehl im Arduino erzeugt man das am einfachsten?
Gruß
fredyxx
das hat schon manches klarer gemacht. Ich habe aber noch nichts gefunden über den Eingang STEP.
Muss da für jeden Schritt ein Signalwechsel erfolgen, also eine Pulsfolge?
Mit welchem Befehl im Arduino erzeugt man das am einfachsten?
Gruß
fredyxx
Bei jeden low-high (oder high-low bin mir nicht sicher steht aber im DB) Flankenwechsel erfolgt ein Schritt. Also musst du für 2 Schritte 4 Flankenwechsel ausführen (low-high-low-high)
MfG Hannes
Mit welchem Befehl im Arduino erzeugt man das am einfachsten? Geht z.B. ton()?
Gruß
fredyxx
Geändert von fredyxx (15.05.2016 um 10:09 Uhr)
Mit Arduino kenne ich mich leider nicht aus, programmiere in C.
MfG Hannes
Arduinos kann man genauso in C programmieren, dazu haben sie ja die ISP-Schnittstelle.
Und wenn du nicht weisst, wie du ein high-low-high-low Signal erzeugst, wird dir C auch nich weiter helfen. Hier fehlen mal wieder Basics...
Die aber lernst du mit der Arduino-IDE schneller.
Nachdenken: wie bring ich eine LED zum blinken? Genauso....
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
PWM liefert beim Arduino ja leider nur eine feste Frequenz.
https://www.arduino.cc/en/Reference/AnalogWrite
Was in einer festen Drehzahl des Steppers resultieren würde.
Es gibt schon fertige Stepper Libraries, das ist der einfachste Weg.
Oder mit DigitalWrite in einer ISR die per TimerInterrupt aufgerufen wird. Der Timerwert (die Häufigkeit des ISR Aufrufs) bestimmt dann die Drehzahl.
Natürlich geht es auch wie beim LED Beispiel mit Delay, aber dann macht das Teil auch nichts mehr anderes als warten und den Pin Status zu ändern.
https://www.arduino.cc/en/tutorial/blink
https://www.arduino.cc/en/Reference/HomePageCode:void setup() { // initialize digital pin 13 as an output. pinMode(13, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(13, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Ist ganz empfehlenswert als Infoquelle.
Und wenn es darum geht einen PIN zu togglen, dann dort:
https://www.arduino.cc/en/Reference/Boolean
Da dann !(not)
Tip: Boolean Hilfsvariable.
hilfsvariable = !hilfsvariable
Ausgang setzten auf Zustand der hilfsvariable.
Geändert von i_make_it (15.05.2016 um 17:42 Uhr)
Hallo Rabenauge,
ganz blöde bin ich ja auch nicht, auch wenn du das offensichtlich so siehst.
Ich erhoffe mir von den für dich vielleicht simplen Fragen, dass ich aus dem Forum bessere Lösungen erhalte, als sie mir auf die Schnelle einfallen und ich dann später doch auf bessere Lösungen komme.
Natürlich bekomme ich eine LED zum Blinken, aber dann erhalte ich wieder irgendwo den Hinweis, dass man doch in einem Programm delay möglichst nicht verwenden soll. Die Methode mit millis() kenne ich auch.
Schöner wäre, wenn du mir die Frage beantworten würdest, ob es was Besseres gibt als ton().
Dieser Hinweis: Only one tone can be generated at a time
läßt mich aber vermuten, dass ich damit nicht mehrere Motortreiber gleichzeitig ansteuern kann.
Also was ist nun dein kluger Rat??
Der Thread von i_make_it kam während ich das schrieb. Den muss ich mir nun erst mal zu Gemüte führen.
Gruß
fredyx
Geändert von fredyxx (15.05.2016 um 18:19 Uhr)
Lesezeichen