Items Needed:
- WS2812 Addressable RGB Strip LED – 1 Meter
- HC-SR04 – Ultrasonic Sensor
- Arduino UNO with Cable
- BreadBoard
- Jumper Wires Male to Male
Code:
#include <FastLED.h>
#define LED_PIN 7
#define NUM_LEDS 30
#define T1 10 // pin 10 is trigger for sensor 1
#define E1 9 //// pin 9 is echo for sensor 1
int val=0;
CRGB leds[NUM_LEDS];
long DistanceSensor (int, int); //trigger echo
void setup() {
//delay(10000);
Serial.begin(9600);
pinMode(E1, INPUT); //echo sensor 1
pinMode(T1, OUTPUT); //trigger sensor 1
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
for(int i=0;i<30; i++)
{
leds[i] = CRGB(0, 0, 0);
}
FastLED.show();
}
void loop()
{
long distance = DistanceSensor(T1, E1);
if(distance < 7)
{
TurnONOFFLEDS(0);
}
else{
int number = (distance - 7)/3 + 1;
TurnONOFFLEDS(number);
}
}
void TurnONOFFLEDS(int number)
{
for(int i=0;i<number; i++)
{
leds[i] = CRGB(0, 0, 255);
}
FastLED.show();
for(int i=number;i<30; i++)
{
leds[i] = CRGB(0, 0, 0);
}
FastLED.show();
}
long microsecondsToCentimeters(long microseconds) {
return microseconds / 29 / 2;
}
long DistanceSensor (int trigger, int echo)
{
long duration, cm;
digitalWrite(trigger, HIGH);
delayMicroseconds(5);
digitalWrite(trigger, LOW);
delayMicroseconds(5);
duration = pulseIn(echo, HIGH);
cm = microsecondsToCentimeters(duration);
/*Serial.print(cm);
Serial.print("cm");
Serial.println();
return cm;
}