/*
1. ติดตั้ง Arduino IDE : https://bit.ly/3iKpRM3
2. ติดตั้ง Library ไปที่ Sketch > Include Library > Add .Zip Library และเลือกไฟล์ในโฟลเดอร์ library ที่ให้ไปทั้งหมด
3. ขั้นตอนในการอัพโหลด
3.1 เสียบสาย USB
3.2 Tools > Board > Arduino AVR Board > Arduino Uno
3.3 Tools > Port > เลือก Port ที่ Arduino เชื่อมอยู่
3.4 กด Upload
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h> //เรียกใช้ Library
LiquidCrystal_I2C lcd(0x27,16,2); //กำหนดหน้าจอตำแหน่ง 0x3F ขนาด 20 ตัวอักษร 4 บรรทัด
#define TrigIN 11
#define EchoIN 10
#define TrigOUT 9
#define EchoOUT 8
int Distance1 , Distance2; //สร้างตัวแปร
int Person = 0; //สร้างตัวแปร
int IN = 0; //สร้างตัวแปร
int OUT = 0; //สร้างตัวแปร
void setup()
{
Serial.begin(9600); //เรียกใช้งานฟังชั่น Serial ที่ความเร็ว 9600
pinMode(7, OUTPUT); //ประกาศขา 7 เป็น OUTPUT
digitalWrite(7, HIGH);//กำหนด 7 เป็น HIGH
lcd.init(); //เริ่มต้นใช้งานหน้าจอ
lcd.backlight(); //ให้ Blacklight ทำงาน
}
void loop()
{
Distance1 = Distance(TrigIN,EchoIN); //อ่านระยะ Sensor ตัวที่ 1
delay(100);
Distance2 = Distance(TrigOUT,EchoOUT); //อ่านระยะ Sensor ตัวที่ 2
delay(100);
Serial.print(Distance1);
Serial.print(":");
Serial.println(Distance2); //แสดงระยะที่อ่านได้
if (Distance1 < 20) //ถ้าระยะตัวที่ 1 น้อยกว่า 20
{
Serial.print("IN"); //แสดงข้อความทาง Serial Monitor
delay(2000); //หน่วงเวลา 2 วินาที
Serial.println(" OK"); //แสดงข้อความทาง Serial Monitor
Person++; //เพิ่มจำนวนคนในห้อง
IN++;
}
else if ((Distance2 < 20) && (Person > 0)) //ถ้าระยะตัวที่ 1 น้อยกว่า 20 และ มีคนในห้องมากกว่า 0
{
Serial.print("OUT"); //แสดงข้อความทาง Serial Monitor
delay(2000); //หน่วงเวลา 2 วินาที
Serial.println(" OK"); //แสดงข้อความทาง Serial Monitor
Person--; //ลดจำนวนคนในห้อง
OUT++;
}
if (Person > 0)
{
digitalWrite(7, HIGH);
}
else
{
digitalWrite(7, LOW);
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Person in room ");
lcd.setCursor(7,1);
lcd.print(Person);
delay(500);
}
float Distance(int PIN_TRIG,int PIN_ECHO)
{
pinMode(PIN_TRIG,OUTPUT);
pinMode(PIN_ECHO,INPUT);
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
// Read the result:
int duration = pulseIn(PIN_ECHO, HIGH);
Serial.print("Distance in CM: ");
Serial.println(duration / 58);
return duration / 58;
}