You are on page 1of 8

Bài 4: Lập trình chức năng ngắt ngoài

Giảngviên:THS.Hoàng Vân Đông

Tạ
Tuấ Tú
n

Ngu
y ễn n
A nh Tuấ

P hạ n
mT ề
han Tuy
h

1
Tìm hiểu chế độ ngắt ngoài
▰ Tuần tự: Một trương trình C,Cpp sẽ được xử lý tuần tự theo
chiều từ trên xuống dưới và sẽ bị ảnh hưởng bởi các câu lệnh
rẽ nhánh và loop
▰ Ngắt: Chương trình sẽ bị thoát ra khỏi quá trình tuần tự, xử
lý xong các lệnh trong ngắt, sau đó mới quay lại xử lý tiếp.
▰ Ngắt là một công việc được ưu tiên làm trước, khi xử lý
xong mới được làm các việc khác. Các sự kiện ngắt có thể đến
từ nhiều nguồn khác nhau như: ADC, IO, UART. TIMER…

▰ Ngắt ngoài EXTI chính là một sự kiện ngắt được sinh ra


với nguồn từ các chân IO của ESP32.

2
Lựa chọn thiết bị

LCD

RES

ESP32
LED
Mạch mô phỏng

4
Lưu đồ thuật toán

5
Chương trình
#include <Wire.h> lcd.clear();
#include <LiquidCrystal_I2C.h> lcd.setCursor(0, 0);
if (motion == HIGH) { lcd.print("Khong co chuyen dong");
#define PIR_PIN 2 / if (!motionDetected) {
#define LED_PIN 13 motionDetected = true; Serial.println("Khong co chuyen dong");
motionStartTime = millis();
LiquidCrystal_I2C lcd(0x27, 16, 2); // Tắt đèn
lcd.clear(); digitalWrite(LED_PIN, LOW);
bool motionDetected = false; lcd.setCursor(0, 0); }
unsigned long motionStartTime; lcd.print("Da phat hien"); }
const unsigned long motionDuration = 5000;
Serial.println("Da phat hien chuyen dong"); if (motionDetected && millis() -
void setup() { motionStartTime < motionDuration) {
pinMode(PIR_PIN, INPUT); // Bật đèn int brightness = map(millis() - motionStartTime,
pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, HIGH); 0, motionDuration, 0, 255);
lcd.backlight(); } analogWrite(LED_PIN, brightness);
Serial.begin(9600); } else { } else {
} if (motionDetected) { analogWrite(LED_PIN, 0);
motionDetected = false; }
void loop() {
int motion = digitalRead(PIR_PIN); delay(1000);
}
Kinh nghiệm sau bài thực hành.

 Hiểu được cơ bản cách làm việc trên


phần mềm KeilC và Proteus, Wokwi
 Nâng cao kỹ năng làm việc nhóm
trong việc viết code trên Wokwi,
KeilC và phần mềm mô phỏng
Proteus.
 Hiểu về lập trình chức năng ngắt
ngoài.
8

You might also like