Motion sensing alarm system
unknown
plain_text
2 years ago
1.9 kB
9
Indexable
const int TRIG_PIN = 6; // Arduino pin connected to Ultrasonic Sensor's TRIG pin const int ECHO_PIN = 7; // Arduino pin connected to Ultrasonic Sensor's ECHO pin const int BUZZER_PIN = 3; // Arduino pin connected to Piezo Buzzer's pin const int DISTANCE_THRESHOLD = 50; // centimeters float duration_us, distance_cm; // notes in the melody: int melody[] = { 659, 659, 659, }; // note durations: 4 = quarter note, 8 = eighth note, etc, also called tempo: int noteDurations[] = { 8, 8, 4, }; void setup() { pinMode(TRIG_PIN, OUTPUT); // set arduino pin to output mode pinMode(ECHO_PIN, INPUT); // set arduino pin to input mode pinMode(BUZZER_PIN, OUTPUT); // set arduino pin to output mode } void loop() { // generate 10-microsecond pulse to TRIG pin digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // measure duration of pulse from ECHO pin duration_us = pulseIn(ECHO_PIN, HIGH); // calculate the distance distance_cm = 0.017 * duration_us; if(distance_cm < DISTANCE_THRESHOLD) buzzer(); // play a song delay(500); } void buzzer() { // iterate over the notes of the melody: int size = sizeof(noteDurations) / sizeof(int); for (int thisNote = 0; thisNote < size; thisNote++) { // to calculate the note duration, take one second divided by the note type. //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. int noteDuration = 1000 / noteDurations[thisNote]; // turn on Piezo Buzzer for the note's duration digitalWrite(BUZZER_PIN, HIGH); delay(noteDuration); // turn off Piezo Buzzer to distinguish the notes digitalWrite(BUZZER_PIN, LOW); // to distinguish the notes, set a minimum time between them. // the note's duration + 30% seems to work well: int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); } digitalWrite(BUZZER_PIN, LOW); }
Editor is loading...