Hey forum, i need your help!
My Goal is to make my Ultrasonic distance sensor control my 6 LEDS for an art-installation, the intention is that the closer people come to the installation (the shorter the distance) the faster the LEDs should blink (so I use a shorter delay).
I can see in the serial monitor that the sensor is reading correctly, but is seems like a mistake with my code (probably my IF ELSE statement makes the lights blink in all the different speeds (from slow to fast) at each read no matter what distance the sensor is measuring. Is there another way I can write the distance, or something other than the IF ELSE method that could fix the problem.
I have tried writing the distance like this instead: if (distance>=200 II distance <300), didnt help
#define Trigpin 7 //trigpinn i 7eren
#define Echopin 6 //Echo i 8
#define red_led 9 //Rød LED
#define low_led 10 //Grøn LED
#define high_led 11 //blå LED
#define yellow_led 12 //gul LED
#define one_led 13 //hvid 1
#define two_led 4 //hvid 2
float distance;
int duration;
int ll = 700;
void setup() {
pinMode (Trigpin, OUTPUT);
pinMode (low_led, OUTPUT);
pinMode (high_led, OUTPUT);
pinMode (red_led, OUTPUT);
pinMode (yellow_led, OUTPUT);
pinMode (one_led, OUTPUT);
pinMode (two_led, OUTPUT);
pinMode (Echopin, INPUT);
Serial.begin(9600);
Serial.println ("Den Blinde Burhøne");
Serial.println ("CAMMA DAHL");
digitalWrite (low_led, LOW);
digitalWrite (high_led, LOW);
digitalWrite (red_led, LOW);
digitalWrite (yellow_led, LOW);
digitalWrite (one_led, LOW);
digitalWrite (two_led, LOW);
}
void loop() {
digitalWrite(Trigpin, LOW);
delayMicroseconds(2);
digitalWrite(Trigpin, HIGH);
delayMicroseconds(10);
digitalWrite(Trigpin, LOW);
duration = pulseIn(Echopin, HIGH);
distance = duration * 0.034 / 2;
delay (11);
Serial.println (" ");
Serial.print ("Distance = ");
Serial.print (distance);
Serial.print (" CM");
Serial.println (" ");
if (distance>=200)//between 200 and 300 LOWLOWLOW 300 delay
{
Serial.println ("distance is over 200");
digitalWrite (low_led, LOW);
delay (300);
digitalWrite (low_led, LOW);
delay (300);
digitalWrite (low_led, LOW);
Serial.println ("distance is over 200");
digitalWrite (high_led, LOW);
delay (300);
digitalWrite (high_led, LOW);
delay (300);
digitalWrite (high_led, LOW);
Serial.println ("distance is over 200");
digitalWrite (red_led, LOW);
delay (300);
digitalWrite (red_led, LOW);
delay (300);
digitalWrite (red_led, LOW);
Serial.println ("distance is over 200");
digitalWrite (yellow_led, LOW);
delay (300);
digitalWrite (yellow_led, LOW);
delay (300);
digitalWrite (yellow_led, LOW);
Serial.println ("distance is over 200");
digitalWrite (one_led, LOW);
delay (300);
digitalWrite (one_led, LOW);
delay (300);
digitalWrite (one_led, LOW);
Serial.println ("distance is over 200");
digitalWrite (two_led, LOW);
delay (300);
digitalWrite (two_led, LOW);
delay (300);
digitalWrite (two_led, LOW);
}
if (distance>=150) //between 150 and 200 LOWHIGHLOW delay 100
{
Serial.println ("distance is between 150 and 200");
digitalWrite (low_led, LOW);
delay (100);
digitalWrite (low_led, HIGH);
delay (100);
digitalWrite (low_led, LOW);
Serial.println ("distance is between 150 and 200");
digitalWrite (high_led, LOW);
delay (100);
digitalWrite (high_led, HIGH);
delay (100);
digitalWrite (high_led, LOW);
Serial.println ("distance is between 150 and 200");
digitalWrite (high_led, LOW);
delay (100);
digitalWrite (high_led, HIGH);
delay (100);
digitalWrite (high_led, LOW);
Serial.println ("distance is between 150 and 200");
digitalWrite (red_led, LOW);
delay (100);
digitalWrite (red_led, HIGH);
delay (100);
digitalWrite (red_led, LOW);
Serial.println ("distance is between 150 and 200");
digitalWrite (yellow_led, LOW);
delay (100);
digitalWrite (yellow_led, HIGH);
delay (100);
digitalWrite (yellow_led, LOW);
}
if (distance>=100) // BETWEEN 100 and 150 LOWHIGHLOW delay 50
{
Serial.println ("between 100 and 150");
digitalWrite (low_led, LOW);
delay (50);
digitalWrite (low_led, HIGH);
delay (50);
digitalWrite (low_led, LOW);
Serial.println ("between 100 and 150");
digitalWrite (high_led, LOW);
delay (50);
digitalWrite (high_led, HIGH);
delay (50);
digitalWrite (high_led, LOW);
Serial.println ("between 100 and 150");
digitalWrite (red_led, LOW);
delay (50);
digitalWrite (red_led, HIGH);
delay (50);
digitalWrite (red_led, LOW);
Serial.println ("between 100 and 150");
digitalWrite (yellow_led, LOW);
delay (50);
digitalWrite (yellow_led, HIGH);
delay (50);
digitalWrite (yellow_led, LOW);
Serial.println ("between 100 and 150");
digitalWrite (one_led, LOW);
delay (50);
digitalWrite (one_led, HIGH);
delay (50);
digitalWrite (one_led, LOW);
Serial.println ("between 100 and 150");
digitalWrite (two_led, LOW);
delay (50);
digitalWrite (two_led, HIGH);
delay (50);
digitalWrite (two_led, LOW);
}
if (distance>=75) //BETWEEN 75 ans 100 LOWHIGHLOW 25 delay
{
Serial.println ("between 75 and 100");
digitalWrite (low_led, LOW);
delay (25);
digitalWrite (low_led, HIGH);
delay (25);
digitalWrite (low_led, LOW);
Serial.println ("between 75 and 100");
digitalWrite (high_led, LOW);
delay (25);
digitalWrite (high_led, HIGH);
delay (25);
digitalWrite (high_led, LOW);
Serial.println ("between 75 and 100");
digitalWrite (red_led, LOW);
delay (25);
digitalWrite (red_led, HIGH);
delay (25);
digitalWrite (red_led, LOW);
Serial.println ("between 75 and 100");
digitalWrite (yellow_led, LOW);
delay (25);
digitalWrite (yellow_led, HIGH);
delay (25);
digitalWrite (yellow_led, LOW);
Serial.println ("between 75 and 100");
digitalWrite (one_led, LOW);
delay (25);
digitalWrite (one_led, HIGH);
delay (25);
digitalWrite (one_led, LOW);
Serial.println ("between 75 and 100");
digitalWrite (two_led, LOW);
delay (25);
digitalWrite (two_led, HIGH);
delay (25);
digitalWrite (two_led, LOW);
if (distance>=50) //BETWEEN 50 AND 75 LOWHIGHLOW 15 delay
{
Serial.println ("between 50 and 75");
digitalWrite (low_led, LOW);
delay (15);
digitalWrite (low_led, HIGH);
delay (15);
digitalWrite (low_led, LOW);
Serial.println ("between 50 and 75");
digitalWrite (high_led, LOW);
delay (15);
digitalWrite (high_led, HIGH);
delay (15);
digitalWrite (high_led, LOW);
Serial.println ("between 50 and 75");
digitalWrite (red_led, LOW);
delay (15);
digitalWrite (red_led, HIGH);
delay (15);
digitalWrite (red_led, LOW);
Serial.println ("between 50 and 75");
digitalWrite (yellow_led, LOW);
delay (15);
digitalWrite (yellow_led, HIGH);
delay (15);
digitalWrite (yellow_led, LOW);
Serial.println ("between 50 and 75");
digitalWrite (one_led, LOW);
delay (15);
digitalWrite (one_led, HIGH);
delay (15);
digitalWrite (one_led, LOW);
Serial.println ("between 50 and 75");
digitalWrite (two_led, LOW);
delay (15);
digitalWrite (two_led, HIGH);
delay (15);
digitalWrite (two_led, LOW);
}
if (distance>=30) // BETWEEN 30 AND 50 HIGHLOWHIGH 10 delay
{
Serial.println ("Between 30 and 50");
digitalWrite (low_led, HIGH);
delay (10);
digitalWrite (low_led, LOW);
delay (10);
digitalWrite (low_led, HIGH);
Serial.println ("Between 30 and 50");
digitalWrite (high_led, HIGH);
delay (10);
digitalWrite (high_led, LOW);
delay (10);
digitalWrite (high_led, HIGH);
Serial.println ("Between 30 and 50");
digitalWrite (red_led, HIGH);
delay (10);
digitalWrite (red_led, LOW);
delay (10);
digitalWrite (red_led, HIGH);
Serial.println ("Between 30 and 50");
digitalWrite (yellow_led, HIGH);
delay (10);
digitalWrite (yellow_led, LOW);
delay (10);
digitalWrite (yellow_led, HIGH);
Serial.println ("Between 30 and 50");
digitalWrite (one_led, HIGH);
delay (10);
digitalWrite (one_led, LOW);
delay (10);
digitalWrite (one_led, HIGH);
Serial.println ("Between 30 and 50");
digitalWrite (two_led, HIGH);
delay (10);
digitalWrite (two_led, LOW);
delay (10);
digitalWrite (two_led, HIGH);
}
if (distance>=00) // BETWEEN 00 AND 30 HIGHLOWHIGH 10 delay
{
Serial.println ("between 00 and 30");
digitalWrite (low_led, HIGH);
delay (5);
digitalWrite (low_led, HIGH);
delay (5);
digitalWrite (low_led, HIGH);
Serial.println ("between 00 and 30");
digitalWrite (high_led, HIGH);
delay (5);
digitalWrite (high_led, HIGH);
delay (5);
digitalWrite (high_led, HIGH);
Serial.println ("between 00 and 30");
digitalWrite (red_led, HIGH);
delay (5);
digitalWrite (red_led, HIGH);
delay (5);
digitalWrite (red_led, HIGH);
Serial.println ("between 00 and 30");
digitalWrite (yellow_led, HIGH);
delay (5);
digitalWrite (yellow_led, HIGH);
delay (5);
digitalWrite (yellow_led, HIGH);
Serial.println ("between 00 and 30");
digitalWrite (one_led, HIGH);
delay (5);
digitalWrite (one_led, HIGH);
delay (5);
digitalWrite (one_led, HIGH);
Serial.println ("between 00 and 30");
digitalWrite (two_led, HIGH);
delay (5);
digitalWrite (two_led, HIGH);
delay (5);
digitalWrite (two_led, HIGH);
}
else
{
Serial.println ("over 300");
digitalWrite (low_led, LOW);
delay (10);
digitalWrite (low_led, LOW);
delay (10);
digitalWrite (low_led, LOW);
Serial.println ("over 300");
digitalWrite (high_led, LOW);
delay (10);
digitalWrite (high_led, LOW);
delay (10);
digitalWrite (high_led, LOW);
Serial.println ("Over 300");
digitalWrite (red_led, LOW);
delay (10);
digitalWrite (red_led, LOW);
delay (10);
digitalWrite (red_led, LOW);
Serial.println ("Over 300");
digitalWrite (yellow_led, LOW);
delay (10);
digitalWrite (yellow_led, LOW);
delay (10);
digitalWrite (yellow_led, LOW);
Serial.println ("Over 300");
digitalWrite (one_led, LOW);
delay (10);
digitalWrite (one_led, LOW);
delay (10);
digitalWrite (one_led, LOW);
Serial.println ("Over 300");
digitalWrite (two_led, LOW);
delay (10);
digitalWrite (two_led, LOW);
delay (10);
digitalWrite (two_led, LOW);
}
}
}