Door Alarm using Arduino and Ultrasonic Sensor
#include <NewPing.h> // สั่งเปิด library NewPing.h
#define TRIGGER_PIN 12
#define ECHO_PIN 11 .
#define MAX_DISTANCE 500 // กำหนดค่าสูงสุด 500
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // กำหนดค่า TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE โดยตัวแปร NewPing
unsigned int pingSpeed = 50; // ให้ pingSpeed เเสดงค่าเท่ากับ 50
unsigned long pingTimer;
int flag = 0; // กำหนดใชช้ ping ต่อไป
void setup() {
Serial.begin(115200); // กำหนดอัตราการรับส่งข้อมูล 115200 บิต/วินาที
pingTimer = millis();
pinMode(10, OUTPUT);
}
void loop() {
if (millis() >= pingTimer) { // ถ้ามิลลิวินาทีมากกว่าหรือเท่ากับ pingTimer
pingTimer += pingSpeed; //ให้ไปที่ pingต่อไป
sonar.ping_timer(echoCheck); // ส่ง Ping ให้เรียกฟังก์ชัน "echoCheck" ทุกๆ 24uS ซึ่งคุณสามารถตรวจสอบสถานะ ping ได้
}
if (flag == 1)
{
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);
}
else
{
digitalWrite(10, LOW);
}
}
void echoCheck() {
if (sonar.check_timer()) { // เชคว่าได้รับ ping หรือไม่
Serial.print("Ping: ");
Serial.print(sonar.ping_result / US_ROUNDTRIP_CM); // Ping ส่งคืนผลลัพธ์ uS ใน ping_result แปลงเป็น cm โดยใช้ US_ROUNDTRIP_CM
Serial.println("cm");
if ((sonar.ping_result / US_ROUNDTRIP_CM) < 50) //ถ้า sonar.ping_result / US_ROUNDTRIP_CM มีค่าน้อยกว่า 50
flag = 1;
else if ((sonar.ping_result / US_ROUNDTRIP_CM) > 50) //ถ้าsonar.ping_result / US_ROUNDTRIP_CM มีค่ามากกว่า 50
flag = 0;
}
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น