could anyone help me with this the code will work with delays but i need to change it because it delays my t
timing section of code the way i have it it instantly does the hole pro tree section with out the 400mill delay
unsigned long stageMillis;
unsigned long startMillis;
unsigned long currentMillis;
unsigned long startTime;
unsigned long stopLeft;
unsigned long stopRight;
unsigned long MPHLeftMills;
unsigned long MPHRightMills;
unsigned long MPHLeft;
unsigned long MPHRight;
unsigned long stopMPHLeft;
unsigned long stopMPHRight;
unsigned long stopLeftReaction;
unsigned long stopRightReaction;
long RightReactionTime;
long LeftReactionTime;
unsigned long LeftET;
unsigned long RightET;
unsigned long raceTimeLeft;
unsigned long raceTimeRight;
const unsigned long timeOut = 10000;
const unsigned long minDelay = 400;
const unsigned long maxDelay = 2500;
long proTime = 400;
String val;
void setup()
{
pinMode(prestageledlPin, OUTPUT);
pinMode(prestageledrPin, OUTPUT);
pinMode(stagelPin, OUTPUT);
pinMode(stagerPin, OUTPUT);
pinMode(yellow1Pin, OUTPUT);
pinMode(yellow2Pin, OUTPUT);
pinMode(yellow3Pin, OUTPUT);
pinMode(greenlPin, OUTPUT);
pinMode(greenrPin, OUTPUT);
pinMode(redlPin, OUTPUT);
pinMode(redrPin, OUTPUT);
pinMode(prestagelPin, INPUT_PULLUP); //left stage sensor
pinMode(prestagerPin, INPUT_PULLUP); //right stage sensor
pinMode(stopLeftPin, INPUT_PULLUP); //left finish sensor
pinMode(stopRightPin, INPUT_PULLUP); //right finish sensor
pinMode(leftStartPin, INPUT_PULLUP);
pinMode(rightStartPin, INPUT_PULLUP);
pinMode(MPHLeftPin, INPUT_PULLUP); //left mph sensor
pinMode(MPHRightPin, INPUT_PULLUP); //right mph sensor
pinMode(ledPin, OUTPUT); //timer running led blinks
Serial.begin(115200);
Serial1.begin(115200);
digitalWrite(stagelPin, HIGH);
digitalWrite(stagerPin, HIGH);
digitalWrite(yellow1Pin, HIGH);
digitalWrite(yellow2Pin, HIGH);
digitalWrite(yellow3Pin, HIGH);
digitalWrite(greenlPin, HIGH);
digitalWrite(greenrPin, HIGH);
digitalWrite(redlPin, HIGH);
digitalWrite(redrPin, HIGH);
stageMillis = millis();
}
void loop()
{
val = "";
// read input pins:
stageLeft = digitalRead(prestagelPin); //left stage/start sensor
stageRight = digitalRead(prestagerPin); //right stage/start sensor
leftStart = digitalRead(leftStartPin);
rightStart = digitalRead(rightStartPin);
LeftMPH = digitalRead(MPHLeftPin);
RightMPH = digitalRead(MPHRightPin);
timerStopLeftState = digitalRead(stopLeftPin); //left finish line sensor
timerStopRightState = digitalRead(stopRightPin); //right finish line sensor
PcInput();
Tree();
Timing();
}
void PcInput()
{
if (Serial.available())
{
val = Serial.readString();
}
if (Serial1.available())
{
val = Serial1.readString();
}
if (val == "AW")
{
AutoWin = true;
}
if (val == "aw")
{
AutoWin = false;
}
if (val == "Lwin")
{
for (int j = 1; j <= winBlink; j = j + 1)
{
digitalWrite(stagelPin, LOW);
delay(onTime);
digitalWrite(stagelPin, HIGH);
delay(offTime);
}
}
if (val == "Rwin")
{
for (int j = 1; j <= winBlink; j = j + 1)
{
digitalWrite(stagerPin, LOW);
delay(onTime);
digitalWrite(stagerPin, HIGH);
delay(offTime);
}
}
if (val == "I")
{
instgreen = true; // serial signal to start tree
}
if (val == "P") // serial signal to start tree
{
protree = true;
}
if (val == "NP") // serial signal to start tree
{
Nprotree = true;
}
if (val == "S") // serial signal to start tree
{
sportsmantree = true;
}
}
void Tree()
{
if ((stageLeft == LOW) & (leftStart == HIGH)) //left pre stage light on if car in sensor of if not
digitalWrite(prestageledlPin, LOW); //on.
else
digitalWrite(prestageledlPin, HIGH); //off
if ((stageRight == LOW) & (rightStart == HIGH)) //right pre stage light on if car in sensor of if not
digitalWrite(prestageledrPin, LOW); //on
else
digitalWrite(prestageledrPin, HIGH); //off
if (instgreen == true) // start instant green
{
digitalWrite(stagelPin, LOW); //left stage light on by ir
digitalWrite(stagerPin, LOW); //right stage light on by ir
stageMillis = millis();
instgreen = false;
delay(random(minDelay, maxDelay));
currentMillis = millis();
if (currentMillis - stageMillis >= 400)
{
timerStartState = true;
Start = true;
}
}
if (protree == true) // start pro tree
{
Serial.println("stage1");
digitalWrite(stagelPin, LOW); //left stage light on by ir
digitalWrite(stagerPin, LOW); //right stage light on by ir
protree = false;
currentMillis = millis();
if (currentMillis - stageMillis >= proTime)
{
{
digitalWrite(yellow1Pin, LOW);
digitalWrite(yellow2Pin, LOW);
digitalWrite(yellow3Pin, LOW);
Serial.println("stage2");
}
currentMillis = millis();
if (currentMillis - stageMillis >= proTime)
{
Serial.println("stag3");
timerStartState = true;
digitalWrite(yellow1Pin, HIGH);
digitalWrite(yellow2Pin, HIGH);
digitalWrite(yellow3Pin, HIGH);
Start = true;
}
}
}
dragtree1.58.ino (14.3 KB)