Untitled
unknown
plain_text
a year ago
2.0 kB
5
Indexable
#define THRESHOLD 35 #define ALARM_AFTER_LAST_SEEN 3000 const int buzzer = 0; const int ledRed = 1; const int ledBlue = 4; const int ultraSoundSensorTrigger = 2; const int ultraSoundSensorEcho = 3; long lastSeen = -10000; void setup() { pinMode(buzzer, OUTPUT); pinMode(ledRed, OUTPUT); pinMode(ledBlue, OUTPUT); pinMode(ultraSoundSensorTrigger, OUTPUT); pinMode(ultraSoundSensorEcho, INPUT); } void loop() { long distanceCm = pingCm(); long curTime = millis(); if (distanceCm < THRESHOLD) { lastSeen = curTime; } long diff = (curTime - lastSeen) - ALARM_AFTER_LAST_SEEN; if ((diff > 0) and (diff < 5000)) { playAlarm(diff); } else { setLedBuzzer(0); } delay(100); } void playAlarm(long diff) { int curStage = diff / 250; if (curStage % 2 == 0) { setLedBuzzer(1); } else { setLedBuzzer(2); } } void setLedBuzzer(int v) { switch(v) { case 0: // disable noTone(buzzer); digitalWrite(ledRed, LOW); digitalWrite(ledBlue, LOW); break; case 1: // alarm 1 tone(buzzer, 850); digitalWrite(ledRed, HIGH); digitalWrite(ledBlue, LOW); break; case 2: // alarm 2 tone(buzzer, 1280); digitalWrite(ledRed, LOW); digitalWrite(ledBlue, HIGH); break; } } long pingCm() { long duration, inches, cm; digitalWrite(ultraSoundSensorTrigger, LOW); delayMicroseconds(2); digitalWrite(ultraSoundSensorTrigger, HIGH); delayMicroseconds(5); digitalWrite(ultraSoundSensorTrigger, LOW); duration = pulseIn(ultraSoundSensorEcho, HIGH); return microsecondsToCentimeters(duration); } long microsecondsToCentimeters(long microseconds) { // The speed of sound is 340 m/s or 29 microseconds per centimeter. // The ping travels out and back, so to find the distance of the object we // take half of the distance travelled. return microseconds / 29 / 2; }
Editor is loading...