/* Project: Ultrasonic sensor HC SR-04, LEDs, active buzzer, 74HC595 IC - simple parking sensor Function: LEDs will light up according to our distance from the sensor. As we get closer to the sensor the buzzer beeps in a different way. */ int buzzerPin = 2; //active piezo buzzer attached to digital pin 2 of Arduino Uno int trigPin = 10; //trig pin attached to digital pin 10 of Arduino Uno int echoPin = 9; //echo pin attached to digital pin 9 of Arduino Uno int clockPin = 11; //74HC595 clock pin attached to digital pin 11 of Arduino Uno int latchPin = 12; //74HC595 latch pin attached to digital pin 12 of Arduino Uno int dataPin = 13; //74HC595 data pin attached to digital pin 13 of Arduino Uno byte possible_patterns[9] = { B00000000, B00000001, B00000011, B00000111, B00001111, B00011111, B00111111, B01111111, B11111111, }; int proximity = 0; int duration; int distance; void setup() { Serial.begin (9600);//initialize the serial communication at 9600 bps pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(clockPin, OUTPUT); pinMode(latchPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(buzzerPin, OUTPUT); } void loop() { digitalWrite(latchPin, LOW); digitalWrite(trigPin, HIGH); delayMicroseconds(1000); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration / 2) / 29.1; if (distance >= 20 || distance <= 0) { Serial.println("Out of range"); } else { Serial.print(distance); Serial.println(" cm"); } proximity = map(distance, 0, 20, 8, 0); Serial.println(proximity); if (proximity <= 0) { proximity = 0; } else if (proximity >= 3 && proximity <= 4) { tone(buzzerPin, 200000, 200); } else if (proximity >= 5 && proximity <= 6) { tone(buzzerPin, 5000, 200); } else if (proximity >= 7 && proximity <= 8) { tone(buzzerPin, 1000, 200); } shiftOut(dataPin, clockPin, MSBFIRST, possible_patterns[proximity]); digitalWrite(latchPin, HIGH); delay(200); noTone(buzzerPin); }