Đếm số người ra vào phòng và Bật Tắt thiết bị sử dụng Arduino

Đếm số người ra vào phòng và Bật Tắt thiết bị sử dụng Arduino

Nội dung bài viết hôm nay mình sẽ hướng dẫn cho các bạn một dự án đếm số người ra vào phòng và bật tắt thiết bị sử dụng Arduino. Đây là một dự án rất thú vị cho những người có sở thích và sinh viên để vui chơi cũng như học tập.

Hệ thống sẽ đếm số người hiển thị lên LCD  khi cảm biến phát hiện người đi vào phòng và đèn sẽ bật lên.Khi người ra khỏi phòng đèn sẽ tắt.

Để hiểu hơn về cấu tạo và cách hoạt động của Cảm Biến Vật Cản Hồng Ngoại các bạn có thể tìm đọc bài viết về Arduino miễn phí dành cho người mới nhập môn.

Sơ đồ đấu nối

Các linh kiện cần thiết cho dự án

Tên linh kiện Số lượng Shopee
Arduino Uno R3 1 Mua ngay
Cáp nạp 1 Mua ngay
Bread Board (Bo Test) 1 Mua ngay
Relay 5V 1 kênh 1 Mua ngay
Dây cắm (Đực – Cái) 1 Mua ngay
Dây cắm (Đực – Đực) 1 Mua ngay
Cảm biến vật cản hồng ngoại 2 Mua ngay
LCD16X2 1 Mua ngay
Board I2C LCD16X2 1 Mua ngay
LED 5V/5MM 1 Mua ngay
Nguồn DC 12V/2A  1 Mua ngay

Code

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
#define in 14
#define out 17
#define relay 3
int count=0;
void IN()
{
    count++;
    lcd.clear();
    lcd.print("SO NGUOI:");
    lcd.setCursor(0,1);
    lcd.print(count);
    delay(1000);
}
void OUT()
{
  count--;
    lcd.clear();
    lcd.print("SO NGUOI:");
    lcd.setCursor(0,1);
    lcd.print(count);
    delay(1000);
}
void setup()
{
  lcd.begin();
  lcd.backlight();
  Serial.begin(9600);
  lcd.setCursor(0,2);
  lcd.print(" HELLO ");
  delay(2000);
  pinMode(in, INPUT);
  pinMode(out, INPUT);
  pinMode(relay, OUTPUT);
  lcd.clear();
  lcd.print("Person In Room:");
  lcd.setCursor(0,1);
  lcd.print(count);
  
}
void loop()
{  
   if(!digitalRead(out))
    IN();
   if(!digitalRead(in))
    OUT();
  Serial.print(count);
  Serial.println("");
  
  if(count<=0)
  {
    lcd.clear();
    digitalWrite(relay, LOW);
    lcd.clear();
    lcd.print("KO CO NGUOI:");
    lcd.setCursor(0,1);
    lcd.print("Den Tat");
    delay(200);
  }
  else
    digitalWrite(relay, HIGH);
}

Thư viện

  • Các bạn có thể tải code tìm địa chỉ bus ở đây. Tải ngay.
  • Thư viện LiquidCrystal_I2C.h: Tải ngay.

Lời kết

Tham gia cộng đồng Arduino KIT Để nhận được nhiều kiến thức bổ ích, các bạn Đăng ký để nhận thông báo khi có bài viết mới nhé. Tham gia Cộng đồng Arduino KIT để cùng nhau thảo luận và chia sẽ kiến thức về lập trình Arduino. Nếu các bạn thấy bài viết bổ ích nhớ LikeShare cho mọi người cùng học nhé.

Bài viết liên quan

Theo dõi
Thông báo của
guest

2 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
Phong

sao nó bị lỗi hiện -39 người ấy

Cường huỳnh

Xin chào add code của add chia sẻ rất ngắn ngọn dể hiểu,rất hay.nhưng khi chạy thử thì bị tình trạng là nếu cả hai cảm biến đều bị vật cản che trong một khoảng tg khi cảm biến không bị che nữa thì giá trị biến count trả về là ngẫu nhiên.nên bị lỗi khi thì count ++,khi thì–;add có cách nào khắc phục code hết lỗi không cảm ơn đã đọc comment