Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | Nächste ÜberarbeitungBeide Seiten der Revision | ||
elektronik:schrittmotorsteuerung_mit_dem_easydriver [2013/04/18 17:27] – [EasyDriver am Arduino] Fehler behoben octoate | elektronik:schrittmotorsteuerung_mit_dem_easydriver [2013/05/02 22:24] – [EasyDriver am Arduino] Quelltext octoate | ||
---|---|---|---|
Zeile 31: | Zeile 31: | ||
In meinem Setup habe ich zusätzlich noch ein paar Stecker und Buchsen verbaut, um einfachere Kabeldurchführungen in den Projektor zu ermöglichen und um evtl. später selbst Teile einfach austauschen zu können. | In meinem Setup habe ich zusätzlich noch ein paar Stecker und Buchsen verbaut, um einfachere Kabeldurchführungen in den Projektor zu ermöglichen und um evtl. später selbst Teile einfach austauschen zu können. | ||
+ | |||
+ | ==== Ansteuerung (Quellcode) ==== | ||
+ | Glücklicherweise hat [[http:// | ||
+ | Beiden Methoden kann man zusätzlich noch einen " | ||
+ | In der " | ||
+ | |||
+ | <code c 1> | ||
+ | ////////////////////////////////////////////////////////////////// | ||
+ | //©2011 bildr | ||
+ | //Released under the MIT License - Please reuse change and share | ||
+ | //Using the easy stepper with your Arduino | ||
+ | //use rotate and/or rotateDeg to control stepper motor | ||
+ | //speed is any number from .01 -> 1 with 1 being fastest - | ||
+ | //Slower Speed == Stronger movement | ||
+ | ///////////////////////////////////////////////////////////////// | ||
+ | |||
+ | |||
+ | #define DIR_PIN 2 | ||
+ | #define STEP_PIN 3 | ||
+ | |||
+ | void setup() { | ||
+ | pinMode(DIR_PIN, | ||
+ | pinMode(STEP_PIN, | ||
+ | } | ||
+ | |||
+ | void loop(){ | ||
+ | |||
+ | //rotate a specific number of degrees | ||
+ | rotateDeg(360, | ||
+ | delay(1000); | ||
+ | |||
+ | rotateDeg(-360, | ||
+ | delay(1000); | ||
+ | |||
+ | |||
+ | //rotate a specific number of microsteps (8 microsteps per step) | ||
+ | //a 200 step stepper would take 1600 micro steps for one full revolution | ||
+ | rotate(1600, | ||
+ | delay(1000); | ||
+ | |||
+ | rotate(-1600, | ||
+ | delay(1000); | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | void rotate(int steps, float speed){ | ||
+ | //rotate a specific number of microsteps (8 microsteps per step) - (negitive for reverse movement) | ||
+ | //speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger | ||
+ | int dir = (steps > 0)? HIGH:LOW; | ||
+ | steps = abs(steps); | ||
+ | |||
+ | digitalWrite(DIR_PIN, | ||
+ | |||
+ | float usDelay = (1/speed) * 70; | ||
+ | |||
+ | for(int i=0; i < steps; i++){ | ||
+ | digitalWrite(STEP_PIN, | ||
+ | delayMicroseconds(usDelay); | ||
+ | |||
+ | digitalWrite(STEP_PIN, | ||
+ | delayMicroseconds(usDelay); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void rotateDeg(float deg, float speed){ | ||
+ | //rotate a specific number of degrees (negitive for reverse movement) | ||
+ | //speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger | ||
+ | int dir = (deg > 0)? HIGH:LOW; | ||
+ | digitalWrite(DIR_PIN, | ||
+ | |||
+ | int steps = abs(deg)*(1/ | ||
+ | float usDelay = (1/speed) * 70; | ||
+ | |||
+ | for(int i=0; i < steps; i++){ | ||
+ | digitalWrite(STEP_PIN, | ||
+ | delayMicroseconds(usDelay); | ||
+ | |||
+ | digitalWrite(STEP_PIN, | ||
+ | delayMicroseconds(usDelay); | ||
+ | } | ||
+ | } | ||
+ | </ |