Bài 8: Cảm biến góc nghiêng sử dụng ngắt (INTERRUPT) trong môi trường Arduino
Cảm biến rung (góc nghiêng) là gì? Một câu hỏi rất thường gặp khi chúng ta đi vào khai thác một linh kiện mới.
Và trong bài hôm nay chúng ta sẽ học cách sử dụng ngắt (interrupt) để ứng dụng trong một dự án cụ thể.
Vậy ngắt trong môi trường Arduino có thực sự khó? Và cách thức hoạt động như thế nào?
Nếu bạn là một người mới và chưa biết Arduino là gì? Để hiểu hơn về nền tảng này. Các bạn xem bài viết bên dưới nhé.
Cảm biến góc nghiêng (rung động) là gì?
Có rất nhiều cách đặt tên cho cảm biến này: Cảm biến góc nghiêng, cảm biến rung động hay còn gọi là cảm biến bóng lăn.
Dù nó có mang nhiều tên gọi đi chăng nữa thì nguyên lý hoạt động của chúng thì giống nhau.
Nguyên lý hoạt động
Cách thức hoạt động của cảm biến rung (góc nghiêng):
- Cảm biến theo chiều thẳng đứng: Quả bóng bán dẫn bên trong sẽ rơi xuống và chạm vào 2 điện cực của cảm biến làm cho dòng điện chạy qua.
- Cảm biến theo chiều góc nghiêng: Lúc này quả bóng sẽ không chạm vào điện cực của cảm biến và không cho dòng điện chạy qua.
Như vậy, tương tự cảm biến rung hoạt động giống như một công tắc và được điều khiển dưới dạng tín hiệu Digital trong Arduino. Cho ra mức tín hiệu CAO hoặc THẤP.
attachInterrupt() trong Arduino
Ngắt (interrupt) là một tín hiệu khẩn cấp gửi đến bộ xử lý yêu cầu tạm dừng các hoạt động hiện tại để thực thi một nhiệm vụ quan trọng hơn, nhiệm vụ này gọi là trình phục vụ ngắt. Sau khi kết thúc nhiệm vụ trong ISR, bộ đếm chương trình sẽ được trả về giá trị trước đó để thực thi các nhiệm vụ đang còn dang dở. Như vậy, ngắt có mức độ ưu tiên cao nhất và thường được dùng để xử lý các sự kiện bất ngờ nhưng không tốn nhiều thời gian.
Cú pháp
attachInterrupt(interrupt, ISR, mode);
Thông số
interrupt: Số thứ tự của ngắt.
ISR: Tên hàm sẽ gọi khi có sự kiện ngắt được sinh ra.
Mode: Kiểu kích hoạt ngắt, bao gồm:
- LOW: Trạng thái chân digital ở mức thấp.
- HIGH: Trạng thái chân digital ở mức cao.
- RISING: Chuyển trạng thái chân digital ở mức thấp sang mức điện áp cao.
- FALLING: Chuyển trạng thái chân digital ở mức cao sang mức điện áp thấp.
Sơ đồ đấu nối
Các linh kiện cần thiết cho dự án
Tên linh kiện | Arduino KIT | Shoppe |
Arduino Uno R3 | Xem ngay | |
Cảm biến rung | Xem ngay | |
Breadboard | Xem ngay | |
Dây test đực cái | Xem ngay |
Code mẫu
int SensorLED = 13; int SensorINPUT = 3; unsigned char state = 0; void setup() { pinMode(SensorLED, OUTPUT); pinMode(SensorINPUT, INPUT); attachInterrupt(1, blink, RISING); } void loop(){ if(state!=0){ state = 0; digitalWrite(SensorLED,HIGH); delay(500); } else digitalWrite(SensorLED,LOW); } void blink(){ state++; }
Lời kết
Tóm tắt lại bài viết hôm nay, chúng ta tìm hiểu thêm cách sử dụng ngắt (interrupt) trong môi trường Arduino và hiểu thêm về cảm biến rung (độ nghiêng). Qua đó, tích lũy thêm kiến thức và là tiền đề cho các dự án khác lớn hơn.
Để nhận được nhiều kiến thức mới các bạn Đăng ký để nhận được thông báo sớm nhất.
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ớ Like và Share cho mọi người cùng đọc nhé.
Bài viết liên quan
- Bài 7: Cảnh báo nhiệt độ (LM35) bằng còi báo sử dụng Arduino Uno
- Bài 6: Tạo âm thanh (Còi) bằng Arduino
- Bài 5: Thay đổi màu sắc Led RGB sử dụng Arduino
- Bài 4: PWM | Thay đổi ánh sáng của LED trên Arduino
- Bài 3: Sử dụng Arduino làm hệ thống đèn giao thông
- Bài 2: Chớp tắt LED trên Arduino Uno (Phần 2)
- Bài 1: Chớp tắt LED trên Arduino Uno