// 19-01-2016 Patrick Horst #define SW_L 3 #define SW_R 2 #define DIR_PIN 8 // Pin 8 connected to Direction pin on Easydriver #define STEP_PIN 9 // Pin 9 connected to Steps pin on Easydriver #define SLEEP 10 // Pin 10 connected to SLEEP pin on Easydriver #define LED 13 float speed = 0.6; float usDelay; bool firstPass = false; int buttonPin = 4; // the pin that the pushbutton is attached to int buttonState = 0; // current state of the button void setup() { pinMode(SW_R, INPUT); pinMode(SW_L, INPUT); pinMode(buttonPin, INPUT); pinMode(LED, OUTPUT); pinMode(DIR_PIN, OUTPUT); pinMode(STEP_PIN, OUTPUT); pinMode(SLEEP, OUTPUT); digitalWrite(LED, LOW); digitalWrite(SLEEP, HIGH); // Wake up EasyDriver delay(5); // Wait for EasyDriver wake up usDelay = (1 / speed) * 70; Serial.begin(9600); } void loop() { buttonState = digitalRead(buttonPin); if((buttonState == HIGH) && !firstPass) { digitalWrite(LED, LOW); // Main loop // Wanneer switch right niet ingedrukt is -> constant door blijven draaien // Zo ja, ga naar volgende while-loop while(digitalRead(SW_R) == HIGH) { //Serial.println("Right"); digitalWrite(DIR_PIN, LOW); digitalWrite(STEP_PIN, HIGH); delayMicroseconds(usDelay); digitalWrite(STEP_PIN, LOW); delayMicroseconds(usDelay); } // Wanneer switch left niet ingedrukt is -> constant door blijven draaien while (digitalRead(SW_L) == HIGH) { //Serial.println("Left"); digitalWrite(DIR_PIN, HIGH); digitalWrite(STEP_PIN, HIGH); delayMicroseconds(usDelay); digitalWrite(STEP_PIN, LOW); delayMicroseconds(usDelay); } // firstPass = even bijhouden of de eerste loop al gedaan is firstPass = true; } // Blijf wachten totdat de knop opnieuw wordt ingedrukt buttonState = digitalRead(buttonPin); if((buttonState == HIGH) && firstPass) { rotate(-1500); delay(1000); rotate(300); // Extra hier.... // // // // digitalWrite(LED, HIGH); firstPass = false; } } void rotate(int steps) { //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,dir); for(int i=0; i < steps; i++){ digitalWrite(STEP_PIN, HIGH); delayMicroseconds(usDelay); digitalWrite(STEP_PIN, LOW); delayMicroseconds(usDelay); } }