Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //For a 28BYJ-48 stepper with ULN2003 driver combo
- //Stepper follows POT position
- #include <AccelStepper.h>
- #define STEPS 2038 // the number of steps in one revolution of your motor (28BYJ-48)
- #define LED LED_BUILTIN
- #define LED1 2
- #define POT A0
- bool led1State = 0, update = 0;
- int steps = 0, lastPos, count = 0;
- long prevTime = 0;
- AccelStepper stepper(AccelStepper::FULL4WIRE, 8, 10, 9, 11);
- void setup() {
- analogReference(EXTERNAL);
- Serial.begin(9600);
- pinMode(LED, OUTPUT);
- digitalWrite(LED, HIGH);
- pinMode(LED1, OUTPUT);
- digitalWrite(LED1, led1State);
- //stepper.setMaxSpeed(1000);
- int val = analogRead(POT);
- val = getVal(val);
- lastPos = map(val, 0, 1023, 0, 2038);
- digitalWrite(LED, LOW);
- }
- int getVal(int x){
- if(x <= 30){
- x = 0;
- }else if( x >= 1020){
- x = 1023;
- }
- return x;
- }
- void loop() {
- if(millis() - prevTime >= 250){
- count++;
- if(count >= 20){
- int val = analogRead(POT);
- val = getVal(val);
- Serial.println((String)"POT Val: " + val);
- int currentPos = map(val, 0, 1023, 0, 2038);
- steps = currentPos - lastPos;
- if(currentPos != lastPos){
- stepper.enableOutputs();
- stepper.moveTo(currentPos);
- stepper.setMaxSpeed(150);
- stepper.setAcceleration(50);
- digitalWrite(LED, HIGH);
- Serial.println((String)"Steps to new position: " + steps);
- Serial.println((String)"Moving to new position!!" + currentPos);
- }
- count = 0;
- lastPos = currentPos;
- Serial.println((String)"Last Position: " + lastPos + "\n\n");
- }
- digitalWrite(LED1, (led1State = !led1State));
- prevTime = millis();
- }
- if (stepper.distanceToGo() == 0){
- stepper.disableOutputs();
- digitalWrite(LED, LOW);
- }
- stepper.run();
- }
Advertisement
Add Comment
Please, Sign In to add comment