Car-Based Motion Sensor
Materials
1. Arduino Uno microcontroller
2. Ultrasonic sensor HC-SR04
3. Red (2), yellow (2) and blue (2) LEDs
4. 74HC595 shift register
5. Active buzzer
6. 2.6kohm resistors (7)
7. Jumper wires
Code
#include "SR04.h"
int latch = 3;
int clock = 4;
int data = 2;
int clock = 4;
int data = 2;
int buzzer = 8;
int trig = 11;
int echo = 10;
SR04 sr04 = SR04(echo, trig); //calling the library for ultrasonic sensor as a variable "sr04"
int echo = 10;
SR04 sr04 = SR04(echo, trig); //calling the library for ultrasonic sensor as a variable "sr04"
int dist;
void setup() {
pinMode(latch, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(data, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
delay(1000);
}
void setup() {
pinMode(latch, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(data, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
delay(1000);
}
void update(byte light) {
digitalWrite(latch, LOW);
shiftOut(data, clock, LSBFIRST, light);
digitalWrite(latch, HIGH);
}
digitalWrite(latch, LOW);
shiftOut(data, clock, LSBFIRST, light);
digitalWrite(latch, HIGH);
}
void loop() {
dist = sr04.Distance(); //function from library
if (dist >= 30) {
byte lights = B1100001;
update(lights);
digitalWrite(buzzer,LOW);
Serial.print(dist);
Serial.println("cm");
delay(100);
}
else if (dist <= 29 && dist >=8) {
byte lights = B0011000;
update(lights);
digitalWrite(buzzer,LOW);
Serial.print(dist);
Serial.println("cm");
delay(100);
}
else if (dist <=7 && dist >=4) {
byte lights = B0000110;
update(lights);
digitalWrite(buzzer,LOW);
Serial.print(dist);
Serial.println("cm");
delay(100);
}
else {
byte lights = B0000110;
update(lights);
delay(100);
lights = B0000000;
update(lights);
digitalWrite(buzzer,HIGH);
Serial.print(dist);
Serial.println("cm");
delay(100);
}
}
dist = sr04.Distance(); //function from library
if (dist >= 30) {
byte lights = B1100001;
update(lights);
digitalWrite(buzzer,LOW);
Serial.print(dist);
Serial.println("cm");
delay(100);
}
else if (dist <= 29 && dist >=8) {
byte lights = B0011000;
update(lights);
digitalWrite(buzzer,LOW);
Serial.print(dist);
Serial.println("cm");
delay(100);
}
else if (dist <=7 && dist >=4) {
byte lights = B0000110;
update(lights);
digitalWrite(buzzer,LOW);
Serial.print(dist);
Serial.println("cm");
delay(100);
}
else {
byte lights = B0000110;
update(lights);
delay(100);
lights = B0000000;
update(lights);
digitalWrite(buzzer,HIGH);
Serial.print(dist);
Serial.println("cm");
delay(100);
}
}