sequential timing
hi there
this going seem silly question know. trying sequence variety of outputs occur 1 after other varying delay times.
i trying best avoid delay @ costs utilizing technique outlined in "doing many things @ same time" example.
however running issue in regards timing statements not running in sequential order. first if statement engages fine sequence seems skip right base state. examples have found tend have 2 states, if , else. want run through sequence of states before reaching base state else.
its simple problem aware, getting mightily irritated whole thing , grateful input.
this going seem silly question know. trying sequence variety of outputs occur 1 after other varying delay times.
i trying best avoid delay @ costs utilizing technique outlined in "doing many things @ same time" example.
however running issue in regards timing statements not running in sequential order. first if statement engages fine sequence seems skip right base state. examples have found tend have 2 states, if , else. want run through sequence of states before reaching base state else.
code: [select]
#include <plduino.h>
using namespace plduino;
//includes required use roboclaw library
#include <softwareserial.h>
#include "roboclaw.h"
roboclaw roboclaw(&serial3,10000);
int buttonstate1 = 0;
#define address1 0x80
bool sequence = false;
unsigned long previousmillis = 0;
unsigned long currentmillis = 0;
void setup() {
plduino::init();
}
void loop()
{
roboclaw.begin(9600);
currentmillis = millis();
buttonstate1 = digitalread(30);
if (buttonstate1 == low)
{
roboclaw.forwardbackwardm1(address1,127); //start motor1 forward @ full speed
roboclaw.forwardbackwardm2(address1,127);
digitalwrite(plduino::relay1, high); //close relay 1
previousmillis = currentmillis;
if(currentmillis - previousmillis > 7000)
{
roboclaw.forwardbackwardm1(address1,0); //motor 1 slows
roboclaw.forwardbackwardm2(address1,0);
digitalwrite(plduino::relay1, low); //open relay 1, planning move relay operation seperate function
previousmillis = currentmillis;
}
if(currentmillis - previousmillis >= 500)
{
roboclaw.forwardbackwardm1(address1,100); //motor continues @ 70 percent speed
roboclaw.forwardbackwardm2(address1,100);
}
if(currentmillis - previousmillis >= 20000)
{
roboclaw.forwardbackwardm1(address1,0);
roboclaw.forwardbackwardm2(address1,0); //motor slows down near stop
previousmillis = currentmillis;
}
if(currentmillis - previousmillis >= 4250)
{
roboclaw.forwardbackwardm1(address1,64); //motor brakes
roboclaw.forwardbackwardm2(address1,64);
previousmillis = currentmillis;
}
}
else
{
roboclaw.forwardbackwardm1(address1,64);
roboclaw.forwardbackwardm2(address1,64);
}
}
its simple problem aware, getting mightily irritated whole thing , grateful input.
have @ how millis() used manage timing without blocking in several things @ time
the examples not written illustrate sequential timing should able see how using completion of interval in 1 function set start-time next function rather setting re-start time itself.
...r
the examples not written illustrate sequential timing should able see how using completion of interval in 1 function set start-time next function rather setting re-start time itself.
...r
Arduino Forum > Using Arduino > Programming Questions > sequential timing
arduino
Comments
Post a Comment