Door Alarm
อุปกรณ์
- Breadboard
- Ultrasonic Sensor
- Buzzer
- Arduino Mega (any model)
- Jumper Wires
- USB cable for Arduino or 12v, 1A adapter.
Diagram
Code
#include <NewPing.h>
#define TRIGGER_PIN 12 // กำหนดให้ขา 12 เป็นTRIGGER
#define ECHO_PIN 11 // กำหนดให้ขา 11 เป็นECHO
#define MAX_DISTANCE 500 // ค่าระยะห่างที่มากที่สุด
#define TRIGGER_PIN 12 // กำหนดให้ขา 12 เป็นTRIGGER
#define ECHO_PIN 11 // กำหนดให้ขา 11 เป็นECHO
#define MAX_DISTANCE 500 // ค่าระยะห่างที่มากที่สุด
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPingตั้งค่าระยะห่าง
unsigned int pingSpeed = 50; // ความถี่ในการส่งข้อมูล
unsigned long pingTimer;
int flag = 0; // รอpingครั้งต่อไป
unsigned long pingTimer;
int flag = 0; // รอpingครั้งต่อไป
void setup() {
Serial.begin(115200); // เปิด serial monitor ที่ 115200
pingTimer = millis();
pinMode(10, OUTPUT);
// Start now.
}
Serial.begin(115200); // เปิด serial monitor ที่ 115200
pingTimer = millis();
pinMode(10, OUTPUT);
// Start now.
}
void loop() {
if (millis() >= pingTimer) { // pingSpeed จากครั้งล่าสุดถึงอีก ping
pingTimer += pingSpeed; // ตั้งเวลาpingครั้งต่อไป
sonar.ping_timer(echoCheck); // ส่งค่าpingออกเรียกว่าฟังก์ชั่น"echoCheck" ทุกๆ24ไมโครเซค
}
if (flag == 1)
{
digitalWrite(10, HIGH);
if (millis() >= pingTimer) { // pingSpeed จากครั้งล่าสุดถึงอีก ping
pingTimer += pingSpeed; // ตั้งเวลาpingครั้งต่อไป
sonar.ping_timer(echoCheck); // ส่งค่าpingออกเรียกว่าฟังก์ชั่น"echoCheck" ทุกๆ24ไมโครเซค
}
if (flag == 1)
{
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
digitalWrite(10, LOW);
delay(500);
digitalWrite(10, HIGH);
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
digitalWrite(10, LOW);
delay(500);
}
else
{
digitalWrite(10, LOW);
}
}
}
else
{
digitalWrite(10, LOW);
}
}
void echoCheck() { // Timer2 ถูกขัดจังหวะให้เรียกฟังก์ชั่นนี้ทุก24ไมโครเซคเพื่อจะเช็ค ping status.
if (sonar.check_timer()) { /
Serial.print("Ping: ");
Serial.print(sonar.ping_result / US_ROUNDTRIP_CM);
Serial.println("cm");
if ((sonar.ping_result / US_ROUNDTRIP_CM) < 50)
flag = 1;
else if ((sonar.ping_result / US_ROUNDTRIP_CM) > 50)
flag = 0;
}
}
if (sonar.check_timer()) { /
Serial.print("Ping: ");
Serial.print(sonar.ping_result / US_ROUNDTRIP_CM);
Serial.println("cm");
if ((sonar.ping_result / US_ROUNDTRIP_CM) < 50)
flag = 1;
else if ((sonar.ping_result / US_ROUNDTRIP_CM) > 50)
flag = 0;
}
}
Credit By : https://circuitdigest.com/microcontroller-projects/door-alarm-using-arduino-ultrasonic-sensor
ความคิดเห็น
แสดงความคิดเห็น