Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

BÀI 2 Cửa tự động

#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Khai báo chân cho cảm biến PIR


const int pirPin = 6 ;

// Tạo đối tượng servo


Servo myServo;

// Tạo đối tượng LCD với địa chỉ I2C là 0x27


LiquidCrystal_I2C lcd(0x27, 16, 2);

// Thời gian mở cửa (ms)


const int openTime = 5000;

// Hàm thiết lập ban đầu


void setup() {
// Khởi động serial monitor
Serial.begin(9600);

// Thiết lập chân cảm biến PIR


pinMode(pirPin, INPUT);

// Gắn servo vào chân số 9


myServo.attach(9);

// Đặt cửa ở vị trí đóng


myServo.write(0);

// Khởi động LCD


lcd.init();
lcd.backlight();

// Hiển thị thông báo khởi động


lcd.setCursor(0, 0);
lcd.print("He thong cua");
lcd.setCursor(0, 1);
lcd.print("dang khoi dong");
delay(1000);
lcd.setCursor(0, 0);
lcd.print("He thong san");
lcd.clear();
lcd.setCursor(0, 4);
lcd.print("sang");
}

// Hàm lặp lại liên tục


void loop() {
// Đọc trạng thái của cảm biến PIR
int pirState = digitalRead(pirPin);

// In trạng thái cảm biến ra serial monitor


Serial.print("PIR State: ");
Serial.println(pirState);

// Hiển thị trạng thái lên LCD


lcd.setCursor(0, 3);
if (pirState == HIGH)
{
lcd.clear();
lcd.print("Co nguoi ");
openDoor();
} else {
lcd.clear();
lcd.print("Khong co nguoi");
}

// Đợi một chút trước khi đọc lại


delay(500);
}

// Hàm mở cửa
void openDoor() {
// Mở cửa bằng cách xoay servo tới 90 độ
myServo.write(90);

// Hiển thị trạng thái lên LCD


lcd.setCursor(0, 1);
lcd.clear();
lcd.print("Cua dang mo ");

// Giữ cửa mở trong khoảng thời gian xác định


delay(2000);

// Đóng cửa bằng cách xoay servo về 0 độ


myServo.write(0);

// Hiển thị trạng thái lên LCD


lcd.setCursor(0, 1);
lcd.clear();
lcd.print("Cua da dong ");
}

You might also like