#define trig 12 #define echo 13 #define power_pin 11 #define buzzerReset A0 #define buzzer 10 int ledS[] = {2,3,4,5,6,7,8,A1}; boolean alarmTrig = false; boolean ledFlash = false; void setup() { Serial.begin(9600); pinMode(trig,OUTPUT); pinMode(echo,INPUT); pinMode(power_pin,OUTPUT); pinMode(buzzerReset , INPUT); pinMode(buzzer , OUTPUT); digitalWrite(power_pin,HIGH); // As because there is no external power source so we need the pin 11 as HIGH for(int i=0;i<8;i++) pinMode(ledS[i] , OUTPUT); } void loop() { double distance = hc_sr04(trig, echo); // calls hc_sr04() and get the distance form it Serial.print(distance); // print the distance Serial.println("cms ahead"); int indicate = map(constrain(distance , 1,20) , 1 , 20 , 0 , 8); if(ledFlash == false) { for(int i = 0 ; i<=indicate ; i++) { digitalWrite(ledS[i] , LOW); } for(int i=indicate ; i<=8 ; i++) { if(i == 0) alarmTrig = true; digitalWrite(ledS[i] , HIGH); } } if(alarmTrig == true) { activate_alarm(); } if(digitalRead(buzzerReset) == HIGH) resetBuzzer(); } void resetBuzzer() { alarmTrig = false; ledFlash = false; digitalWrite(buzzer , LOW); } double hc_sr04(double trigPin , double echoPin) { double duration, distance; // This procedure is mentioned in the datasheet of HC-SR04 attached digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); //Check out the refernce to know about this function......select "pulseIn" then press Ctrl + Shift + F distance = ((duration/1000000)*33000)/2; // distance = speed * time/2 return constrain(distance,0,200); // dont know what constrain is just select it and Ctrl + Shift + F } void activate_alarm() { ledFlash = true; analogWrite(buzzer, 255); for(int i=0;i<8;i++) digitalWrite(ledS[i] , HIGH); delay(100); analogWrite(buzzer , 150); for(int i=0;i<8;i++) digitalWrite(ledS[i] , LOW); delay(100); }