Hello everyone!
The goal of my project is to illuminate LEDs anytime the accelerometer achieves an orientation that is not somewhat flat. I have achieved this but my accelerometer seems to be too sensitive. What I mean by that is when the accelerometer is shaken or tapped, even if the actual orientaion remains flat, The LEDs trigger. I want to program it to ignore the minor taps or jolts.
I am using a working version of this abbreviated code.
loop(){
if ((Zval < 620))
//LED flashing sequence
else {
//LED off
Could I write code that would run many Zval checks during my loop?
Currently when the accelerometer returns to a level orientation, the LED flashing sequence finishes the written loop before it deactivates to the else command. Would running these continual checks allow me to interrupt and stop the LEDs immediately?
Is there coding that can say..
verify that Zval is <620 for a continuous 50 milliseconds before running the loop
then interrupt the loop and run else if the Zval ever achieves >620
Do you think that would work?
My code.
int Xval;
int Yval;
int Zval;
int led1 = 11;
int led2 = 10;
int led3 = 9;
int led4 = 3;
int accPin = A3;
int accPin2 = A2;
int accpin3 = A4;
void setup(){
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
delay(1000);
Xval = analogRead(accPin);
Yval = analogRead(accPin2);
Zval = analogRead(accpin3);
}
void loop(){
Xval = analogRead(accPin);
Yval = analogRead(accPin2);
Zval = analogRead(accpin3);
if ((Zval < 620))
{
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led4, HIGH);
delay(50);
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
delay(50);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led4, HIGH);
delay(50);
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
delay(50);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led4, HIGH);
delay(50);
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
delay(50);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led4, HIGH);
delay(50);
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
delay(50);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led4, HIGH);
delay(50);
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
delay(50);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led4, HIGH);
delay(150);
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
delay(150);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led4, HIGH);
delay(150);
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
delay(150);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led4, HIGH);
delay(150);
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
delay(150);
}
else {
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
}
}
Thank you for any help!