Bài 8: Cảm biến góc nghiêng sử dụng ngắt (INTERRUPT) trong môi trường Arduino

01 Tháng 05 2019 | Đăng bởi: Lực Nguyễn

 

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.

cau-tao-cam-bien-rung

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

Nguyên lý hoạt động

nguyen-ly-hoat-dong-cam-bien-rung

 

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.

 

ngat-arduino-pin

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

so-do-dau-noi-cam-bien-rung-arduino-uno

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

Viết bình luận: