Hello all, I have recently purchased an arduino and have to set to work teaching myself some coding. The project I am working on is a G meter for my car, using an adxl 335 accelerometer, and common anode RGB LEDs. I am using only 5 RGB LEDs for my display, as I want to mount this inside my factory gauge cluster. The issue I am having is that as you corner the LEDs light up in the correct fashion (turning from green to red) : Green for .3, .5, .7, and .9 Gs. Red for .2, .4, .6, .8, and 1 G. But as you exit the corner the analog reading from my adxl 335 passes back through the threshold limits of the lower values and turns all my LEDs back to green. Here is a video(sorry it’s from a cell phone):
What I am trying to do is have the LEDs switch from green to red as the Gs increase, and once Red stay Red until the millis timer has told them all to turn off. If you have any advice and pointers of where to start Please let me know. Here is just the section of code I wrote up that tells the LEDs at what thresholds to turn on, sorry if its a mess I am learning as I go here.
// --------G force 1g to -1g-------------
if(X_AXIS < 408) { //LED 1 GREEN -.9
triggered = true;
startTime = millis();
digitalWrite(led1G, LOW);
digitalWrite(led1R, HIGH);
}
if (triggered) {
// Check how much time has passed
if ((millis() - startTime) > interval) {
// Time to turn off
triggered = false;
digitalWrite(led1G, HIGH);
digitalWrite(led1R, HIGH);}
}
else {digitalWrite(led1G, HIGH);
digitalWrite(led1R, HIGH);
}
if (X_AXIS > 531 || X_AXIS < 397) { // LED1 RED -1 or .2g
triggered = true;
startTime = millis();
digitalWrite(led1R, LOW);
digitalWrite(led1G, HIGH);
}
if (triggered) {
// Check how much time has passed
if ((millis() - startTime) > interval) {
// Time to turn off
triggered = false;
digitalWrite(led1R, HIGH);
digitalWrite(led1G, HIGH);}
}
else {digitalWrite(led1R, HIGH);
digitalWrite(led1G, HIGH);}
if (X_AXIS > 543 || X_AXIS < 430) { //LED 2 GREEN -.7 or .3g
triggered = true;
startTime = millis();
digitalWrite(led2R, HIGH);
digitalWrite(led2G, LOW);
}
if (triggered) {
// Check how much time has passed
if ((millis() - startTime) > interval) {
// Time to turn off
triggered = false;
digitalWrite(led2R, HIGH);
digitalWrite(led2G, HIGH);}
}
else {digitalWrite(led2R, HIGH);
digitalWrite(led2G, HIGH);}
if(X_AXIS > 555 || X_AXIS < 419) { // LED 2 RED -.8 or .4g
triggered = true;
startTime = millis();
digitalWrite(led2R, LOW);
digitalWrite(led2G, HIGH);
}
if (triggered) {
// Check how much time has passed
if ((millis() - startTime) > interval) {
// Time to turn off
triggered = false;
digitalWrite(led2R, HIGH);
digitalWrite(led2G, HIGH);}
}
else {digitalWrite(led2R, HIGH);
digitalWrite(led2G, HIGH);}
if (X_AXIS > 567 || X_AXIS < 452) { //LED 3 GREEN -.5 or .5g
triggered = true;
startTime = millis();
digitalWrite(led3R, HIGH);
digitalWrite(led3G, LOW);
}
if (triggered) {
// Check how much time has passed
if ((millis() - startTime) > interval) {
// Time to turn off
triggered = false;
digitalWrite(led3R, HIGH);
digitalWrite(led3G, HIGH);}
}
else {digitalWrite(led3R, HIGH);
digitalWrite(led3G, HIGH);}
if(X_AXIS > 579 || X_AXIS < 441) { //LED 3 RED -.6 or .6g
triggered = true;
startTime = millis();
digitalWrite(led3R, LOW);
digitalWrite(led3G, HIGH);
}
if (triggered) {
// Check how much time has passed
if ((millis() - startTime) > interval) {
// Time to turn off
triggered = false;
digitalWrite(led3R, HIGH);
digitalWrite(led3G, HIGH);}
}
else {digitalWrite(led3R, HIGH);
digitalWrite(led3G, HIGH);}
if (X_AXIS > 591 || X_AXIS < 474) { //LED 4 GREEN -.3 or .7g
triggered = true;
startTime = millis();
digitalWrite(led4R, HIGH);
digitalWrite(led4G, LOW);
}
if (triggered) {
// Check how much time has passed
if ((millis() - startTime) > interval) {
// Time to turn off
triggered = false;
digitalWrite(led4R, HIGH);
digitalWrite(led4G, HIGH);}
}
else {digitalWrite(led4R, HIGH);
digitalWrite(led4G, HIGH);}
if(X_AXIS > 603 || X_AXIS < 463) { //LED 4 RED -.4 or .4g
triggered = true;
startTime = millis();
digitalWrite(led4R, LOW);
digitalWrite(led4G, HIGH);
}
if (triggered) {
// Check how much time has passed
if ((millis() - startTime) > interval) {
// Time to turn off
triggered = false;
digitalWrite(led4R, HIGH);
digitalWrite(led4G, HIGH);}
}
else {digitalWrite(led4R, HIGH);
digitalWrite(led4G, HIGH);}
if (X_AXIS > 615) { //LED 5 GREEN -.1 or .9g
triggered = true;
startTime = millis();
digitalWrite(led5R, HIGH);
digitalWrite(led5G, LOW);
}
if (triggered) {
// Check how much time has passed
if ((millis() - startTime) > interval) {
// Time to turn off
triggered = false;
digitalWrite(led5R, HIGH);
digitalWrite(led5G, HIGH);}
}
else {digitalWrite(led5R, HIGH);
digitalWrite(led5G, HIGH);}
if(X_AXIS > 627|| X_AXIS < 485 ) { //LED 5 RED -.2 or 1g
triggered = true;
startTime = millis();
digitalWrite(led5R, LOW);
digitalWrite(led5G, HIGH);
}
if (triggered) {
// Check how much time has passed
if ((millis() - startTime) > interval) {
// Time to turn off
triggered = false;
digitalWrite(led5R, HIGH);
digitalWrite(led5G, HIGH);}
}
else {digitalWrite(led5R, HIGH);
digitalWrite(led5G, HIGH);}
}