I have built the hardware for a mobile platform, it runs on continuous rotation servos,the problem I'm having is with timing, I'm trying to implement a timer based movement cycle so as not to use delay(). with the code i currently have the servos are only moving in the forward movement
// robot movement 1.0
//servo
#include <Servo.h>
Servo right_servo;
Servo left_servo;
//speaker
const int speaker = 5;
//movement timer
int inUse = 0;
const int forwardUse = 1;
const int reverseUse = 2;
unsigned long currentMillis = millis();
long previousMillis = 0;
void setup()
{
right_servo.attach(11);
left_servo.attach(10);
pinMode(speaker, OUTPUT);
Serial.begin(9600);
}
void loop()
{
forward(1000);
reverse(1000);
}
void halt()
{
right_servo.write(90);
left_servo.write(90);
}
void forward(long time)
{
if(inUse == 0 || inUse == forwardUse) // check if it is in use by other movement
{
right_servo.write(0);
left_servo.write(180);
inUse = forwardUse;
if(currentMillis - previousMillis > time) // if timer has run out stop movement reset inUse and return to loop
{
halt();
inUse = 0;
return;
}
}
}
void reverse(long time)
{
if(inUse == 0 || inUse == reverseUse) // check if it is in use by other movement
{
right_servo.write(180);
left_servo.write(0);
inUse = reverseUse;
if(currentMillis - previousMillis > time) // if timer has run out stop movement reset inUse and return to loop
{
halt();
inUse = 0;
return;
}
}
}
any help on this would be great, im trying to find an answer on my own but i must be missing something.