Nội Dung Bài Viết
Giới thiệu
Ngắt là một sự kiện xảy ra ngẫu nhiên trong luồng liên tục. Nó giống như một cuộc gọi bạn có khi bạn bận rộn với một số công việc và tùy thuộc vào ưu tiên cuộc gọi, bạn quyết định có nên tham dự hoặc bỏ bê nó hay không.
NodeMCU dựa trên ESP8266 có tính năng ngắt trên các chân GPIO của nó. Chức năng này có sẵn trên chân D0-D8 của NodeMCU Dev Kit.
Chân GPIO Ngắt được hỗ trợ thông qua Function Interrupt của Arduino: attachInterrupt, detachInterrupt.
Ngắt có thể được gắn vào bất kỳ chân GPIO nào, ngoại trừ chân D0 / GPIO16. Các kiểu ngắt Arduino chuẩn được hỗ trợ: CHANGE, RISING, FALLING.
Arduino Interrupt functions cho NodeMCU
Hãy xem các function được sử dụng để thiết lập các ngắt cho bộ NodeMCU trong Arduino IDE.
attachInterrupt()
Function được sử dụng gán ngắt cho chân được chỉ định
Cú pháp: attachInterrupt(pin, ISR(callback function), interrupt type/mode);
Thông số
pin: Chân được chọn cho ngắt.
ISR (callback function): ISR gọi khi ngắt xảy ra; function này không nhận bất kỳ tham số nào và không trả về gì cả.
Interrupt type/mode: Nó định nghĩa khi nào ngắt được kích hoạt.
CHANGE: Được sử dụng để kích hoạt ngắt bất cứ khi nào giá trị chân ngắt thay đổi.
RISING: Được sử dụng để kích hoạt ngắt khi giá trị chân ngắt đi từ thấp đến cao.(Cạnh lên)
FALLING: Được sử dụng để kích hoạt ngắt khi giá trị chân ngắt đi từ cao xuống thấp.(Cạnh xuống)
Trả về: null
detachInterrupt ()
Function này được sử dụng để vô hiệu hóa ngắt trên chân GPIO được chỉ định.
Cú pháp: detachInterrupt(pin)
Thông số:
pin: Chân GPIO ngắt để vô hiệu hóa.
Trả về: null
Ví dụ
Viết chương trình Arduino thiết lập ngắt cạnh lên trên chân D2 của Kit NodeMCU. Ở đây, dùng nút nhấn nối với chân D2 để tạo ra ngắt cạnh lên và in ra màn hình Serial thời gian ngắt xảy ra (tính bằng mili giây).
Chương trình ngắt GPIO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | uint8_t GPIO_Pin = D2; void setup() { Serial.begin(9600); attachInterrupt(digitalPinToInterrupt(GPIO_Pin), IntCallback, RISING); } void loop() { } void IntCallback() { Serial.print("Stamp(ms): "); Serial.println(millis()); } |
Kết quả chương trình
Download File
Bài viết các bạn có thể tham khảo:
- NodeMCU I2C với Arduino IDE – Giao tiếp Arduino với NodeMCU thông qua I2C
- Đọc DHT11 gửi lên App Blynk thông qua Esp8266 giao tiếp Modbus với Arduino
- Thiết lập Arduino IDE cho NodeMCU
Nguồn tham khảo: electronicwings.com