// Test: is int32 position overflow handled correctly?
// YES
// 2147483638, -2147483633, 25
// 2147483640, -2147483633, 23
// 2147483641, -2147483633, 22
// 2147483643, -2147483633, 20
// 2147483644, -2147483633, 19
// 2147483645, -2147483633, 18
// 2147483647, -2147483633, 16
// -2147483648, -2147483633, 15
// -2147483647, -2147483633, 14
// -2147483646, -2147483633, 13
// -2147483645, -2147483633, 12
// -2147483644, -2147483633, 11
// -2147483643, -2147483633, 10
// -2147483642, -2147483633, 9
// Include the AccelStepper library
#include <AccelStepper.h>
// AccelStepper objects, mode 1=driver, step pin, dir pin // 2,5; 3,6; 4,7
AccelStepper stepper1 = AccelStepper(1, 2, 5);
byte state1;
unsigned long timer1;
byte setpos;
unsigned long printTimer;
void setup()
{
Serial.begin(115200);
// color driver init
stepper1.setMaxSpeed(100);
stepper1.setAcceleration(100);
state1 = 1;
// activate all motor drivers, active low
pinMode(8, OUTPUT);
digitalWrite(8, 0);
}
void loop()
{
// color disk driving
switch(state1)
{
case 0: //start stepping
stepper1.setCurrentPosition(1000000); // werkt niet?
stepper1.setMaxSpeed(100);
//stepper1.setSpeed(100);
stepper1.move(100);
timer1 = millis();
state1 = 1;
stepper1.run();
break;
case 1:
if (millis() - timer1 >= 1000)
{
if (setpos == 0)
{
stepper1.setCurrentPosition(2147483000); // int32 max = 2,147,483,647
setpos = 1;
}
stepper1.move(50);
timer1 = millis();
//colorState = 2;
}
stepper1.run();
break;
}
if (millis() - printTimer >= 20)
{
Serial.print(stepper1.currentPosition());
Serial.print(", ");
Serial.print(stepper1.targetPosition());
Serial.print(", ");
Serial.println(stepper1.distanceToGo());
printTimer = millis();
}
}