ARDUINO KIT

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.

Cấu tạo cảm biến rung.

Nguyên lý hoạt động

Cách thức hoạt động của cảm biến rung (góc nghiêng):

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:

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 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ớ LikeShare cho mọi người cùng đọc nhé.

Bài viết liên quan

Exit mobile version