#include <Adafruit_NeoPixel.h>
#define neo 4
#define numpixel 17
#define trig 6
#define echo 5
#define relay 7
#define sw 3
int mtrstate = LOW;
Adafruit_NeoPixel pixels(numpixel, neo, NEO_GRB + NEO_KHZ800);
long int duration,distance;
void setup() {
pixels.clear();
// put your setup code here, to run once:
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
pixels.begin();
Serial.begin(9600);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
pinMode(relay,OUTPUT);
digitalWrite(relay,mtrstate);
pinMode(sw,INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
dist();
if(distance<25)
{
mtrstate = LOW;
digitalWrite(relay,mtrstate);
}
if(mtrstate == LOW)
{
if(distance<70)
{
for(int i=17;i>-1;i--)
{
pixels.setPixelColor(i,pixels.Color(0,100,0));
pixels.show();
//delay(10);
}
}
if(distance>70 && distance<140)
{
for(int i=19;i>12;i--)
{
pixels.setPixelColor(i,pixels.Color(0,0,0));
pixels.show();
//delay(10);
}
for(int i=13;i>-1;i--)
{
pixels.setPixelColor(i,pixels.Color(20,80,0));
pixels.show();
//delay(10);
}
}
if(distance>140 && distance<210)
{
for(int i=13;i>9;i--)
{
pixels.setPixelColor(i,pixels.Color(0,0,0));
pixels.show();
//delay(10);
}
for(int i=10;i>-1;i--)
{
pixels.setPixelColor(i,pixels.Color(40,60,20));
pixels.show();
//delay(10);
}
}
if(distance>210 && distance<280)
{
for(int i=10;i>6;i--)
{
pixels.setPixelColor(i,pixels.Color(0,0,0));
pixels.show();
//delay(10);
}
for(int i=7;i>-1;i--)
{
pixels.setPixelColor(i,pixels.Color(60,40,0));
pixels.show();
//delay(10);
}
}
if(distance>280 && distance<350)
{
for(int i=7;i>3;i--)
{
pixels.setPixelColor(i,pixels.Color(0,0,0));
pixels.show();
//delay(10);
}
for(int i=4;i>-1;i--)
{
pixels.setPixelColor(i,pixels.Color(80,20,0));
pixels.show();
//delay(10);
}
}
if(distance>=350)
{
for(int i=4;i>1;i--)
{
pixels.setPixelColor(i,pixels.Color(0,0,0));
pixels.show();
//delay(10);
}
for(int i=1;i>-1;i--)
{
pixels.setPixelColor(i,pixels.Color(100,0,0));
pixels.show();
//delay(10);
}
}
}
int va = digitalRead(sw);
if(va == HIGH)
{
mtrstate = !mtrstate;
}
digitalWrite(relay,mtrstate);
if(mtrstate == HIGH)
{
dist();
int v = map(distance,15,400,17,0);
// Serial.println(v);
// delay(10);
for(int i=0;i<v;i++){
Serial.println(i);
pixels.setPixelColor(i,pixels.Color(0,0,100));
pixels.show();
delay(10);
}
for(int i=v;i<17;i++)
{
pixels.setPixelColor(i,pixels.Color(0,0,0));
pixels.show();
delay(10);
}
}
}
void dist(void)
{
digitalWrite(trig,HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
duration = pulseIn(echo,HIGH);
distance = duration*0.034/2;
// Serial.print("dist=");
//Serial.println(distance);
// delay(500);
}