The materials that I used include the following:
1. Arduino board
2. Breadboard
3. Jumper wires
4. Ultrasonic sensor
5. Piezo buzzer
6. LED
If the ultrasonic sensor detects an intruder, the red LED will be turned on and the alarm will ring.
In the next class, I will be building a house and attaching the alarm system to the house. Then we will test it with the robot intruder!
/*
HC-SR04 Ping distance sensor:
VCC to arduino 5v
GND to arduino GND
Echo to Arduino pin 7
Trig to Arduino pin 8
This sketch originates from Virtualmix: http://goo.gl/kJ8Gl
Has been modified by Winkle ink here: http://winkleink.blogspot.com.au/2012/05/arduino-hc-sr04-ultrasonic-distance.html
And modified further by ScottC here: http://arduinobasics.blogspot.com.au/2012/11/arduinobasics-hc-sr04-ultrasonic-sensor.html
on 10 Nov 2012.
*/
#define echoPin 7 // Echo Pin
#define trigPin 8 // Trigger Pin
#define LEDPin 13 // Onboard LED
const int buzzer = 9; //buzzer to arduino pin 9
int maximumRange = 50; // Maximum range needed
int minimumRange = 0; // Minimum range needed
long duration, distance; // Duration used to calculate distance
void setup() {
pinMode(buzzer, OUTPUT); // Set buzzer - pin 9 as an output
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LEDPin, OUTPUT); // Use LED indicator (if required)
}
void loop() {
/* The following trigPin/echoPin cycle is used to determine the
distance of the nearest object by bouncing soundwaves off of it. */
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
//Calculate the distance (in cm) based on the speed of sound.
distance = duration/58.2;
if (distance >= maximumRange || distance <= minimumRange){
/* Send a negative number to computer and Turn LED ON
to indicate "out of range" */
Serial.println("-1");
digitalWrite(LEDPin, LOW);
tone(buzzer, 0);
delay(1000);
}
else {
/* Send the distance to the computer using Serial protocol, and
turn LED OFF to indicate successful reading. */
Serial.println(distance);
digitalWrite(LEDPin, HIGH);
Serial.println("object detected");
tone(buzzer, 400); // play 400 Hz tone for 500 ms
delay(500);
tone(buzzer, 800); // play 800Hz tone for 500ms
delay(500);
}
//Delay 50ms before next reading.
delay(50);
}