Hello, everyone I need help in activating while loop in void loop. Actually the condition for while loop is present in rpmRead() function.
thank you.
const int rpmPin = 13;
int x;
int z=0;
float Htime;
bool state1;
bool state2;
bool state3;
bool state4;
bool state5;
bool state6;
const int latchPin2 = 3;
const int dataPin2 = 5;
const int clockPin2 = 4;
const int latchPin3 = 11;
const int clockPin3 = 6;
const int dataPin3 = 9;
const int latchPin = 8;
const int dataPin = 7;
const int clockPin = 2;
const int gear1 = A0;
const int gear2 = A1;
const int gear3 = A2;
const int gear4 = A3;
const int gear5 = A4;
const int gear6 = A5;
int led1[] = {128,192,224,240,248,252,254,255};
int led2[] = {128,192,224,240,248,252,254,255};
int i = 0;
void blinkLed() {
if (x > 9000) {
digitalWrite(latchPin2, LOW);
shiftOut(dataPin2, clockPin2, MSBFIRST, 255);
digitalWrite(latchPin2, HIGH);
digitalWrite(latchPin3, LOW);
shiftOut(dataPin3, clockPin3, MSBFIRST, 255);
digitalWrite(latchPin3, HIGH);
delay(100);
digitalWrite(latchPin2, LOW);
shiftOut(dataPin2, clockPin2, MSBFIRST, 0);
digitalWrite(latchPin2, HIGH);
digitalWrite(latchPin3, LOW);
shiftOut(dataPin3, clockPin3, MSBFIRST, 0);
digitalWrite(latchPin3, HIGH);
delay(100);
}
else {
if (i > 8 ) {
int k = i - 9;
digitalWrite(latchPin2, LOW);
shiftOut(dataPin2, clockPin2, MSBFIRST, 255);
digitalWrite(latchPin2, HIGH);
digitalWrite(latchPin3, LOW);
shiftOut(dataPin3, clockPin3, MSBFIRST, led2[k]);
digitalWrite(latchPin3, HIGH);
}
else {
digitalWrite(latchPin2, LOW);
shiftOut(dataPin2, clockPin2, MSBFIRST, led1[i]);
digitalWrite(latchPin2, HIGH);
digitalWrite(latchPin3, LOW);
shiftOut(dataPin3, clockPin3, MSBFIRST, 0);
digitalWrite(latchPin3, HIGH);
}
}
}
void gear() {
state1 = digitalRead(gear1);
state2 = digitalRead(gear2);
state3 = digitalRead(gear3);
state4 = digitalRead(gear4);
state5 = digitalRead(gear5);
state6 = digitalRead(gear6);
if (state1 == LOW)
{
//1st Gear
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST,40 );
digitalWrite(latchPin, HIGH);
}
else if (state2 == LOW)
{
//2nd Gear
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 218);
digitalWrite(latchPin, HIGH);
}
else if (state3 == LOW)
{
//3rd Gear
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 122);
digitalWrite(latchPin, HIGH);
}
else if (state4 == LOW)
{
//4th Gear
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 60);
digitalWrite(latchPin, HIGH);
}
else if (state5 == LOW)
{
//5th Gear
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 118);
digitalWrite(latchPin, HIGH);
}
else if (state6 == LOW)
{
//6th Gear
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 246);
digitalWrite(latchPin, HIGH);
}
else
{
//Neutral
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 238);
digitalWrite(latchPin, HIGH);
}
}
void rpmRead() {
Htime = pulseIn(rpmPin, HIGH);
x = 1000000 / Htime; //getting frequency with Ttime is in Micro seconds
if (x >= 10000) {
x = 10000;
}
i = map(x, 1500, 10000, 0, 15);
}
void setup()
{
Serial.begin(2000000);
pinMode(latchPin2, OUTPUT);
pinMode(dataPin2, OUTPUT);
pinMode(clockPin2, OUTPUT);
pinMode(latchPin3, OUTPUT);
pinMode(dataPin3, OUTPUT);
pinMode(clockPin3, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
digitalWrite(latchPin2, LOW);
shiftOut(dataPin2, clockPin2, MSBFIRST, 0);
digitalWrite(latchPin2, HIGH);
digitalWrite(latchPin3, LOW);
shiftOut(dataPin3, clockPin3, MSBFIRST, 0);
digitalWrite(latchPin3, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 255);
digitalWrite(latchPin, HIGH);
pinMode(gear1, INPUT);
pinMode(gear2, INPUT);
pinMode(gear3, INPUT);
pinMode(gear4, INPUT);
pinMode(gear5, INPUT);
pinMode(gear6, INPUT);
digitalWrite(gear1, HIGH);
digitalWrite(gear2, HIGH);
digitalWrite(gear3, HIGH);
digitalWrite(gear4, HIGH);
digitalWrite(gear5, HIGH);
digitalWrite(gear6, HIGH);
pinMode(rpmPin, INPUT);
}
void loop(){
while(x>10){
Serial.println("Running");
rpmRead();
if (i >= 0) {
blinkLed();
}
else{
digitalWrite(latchPin2, LOW);
shiftOut(dataPin2, clockPin2, MSBFIRST, 0);
digitalWrite(latchPin2, HIGH);
digitalWrite(latchPin3, LOW);
shiftOut(dataPin3, clockPin3, MSBFIRST, 0);
digitalWrite(latchPin3, HIGH);
}
gear();
delay(1);
}
while(x<10){
Serial.println("Not Running");
digitalWrite(latchPin2, LOW);
shiftOut(dataPin2, clockPin2, MSBFIRST, 0);
digitalWrite(latchPin2, HIGH);
digitalWrite(latchPin3, LOW);
shiftOut(dataPin3, clockPin3, MSBFIRST, 0);
digitalWrite(latchPin3, HIGH);
delay(100);
digitalWrite(latchPin2, LOW);
shiftOut(dataPin2, clockPin2, MSBFIRST, 0);
digitalWrite(latchPin2, HIGH);
digitalWrite(latchPin3, LOW);
shiftOut(dataPin3, clockPin3, MSBFIRST, 0);
digitalWrite(latchPin3, HIGH);
delay(100);
}
}