Ngắt nhiều button chỉ với 1 chân ngắt

I. Giới thiệu

Như chúng ta biết số lượng chân ngắt rất hạn chế trong các dòng vi điều khiển. khi sử dụng nhiều button để ngắt thì các chân ngắt khi sử dụng cho các việc còn lại sẽ rất phí. còn nếu viết hàm để xử lý chống dội vi điều khiển quét các hàm liên tục thì phung phí xung để làm những việc khác. Và khi làm với một hệ thống với rất nhiều nút nhấn và rất hạn chế việc delay thì phương pháp này của mình có thể sẽ giúp cho các bạn :)

II. Nội dung chính

Ví dụ của mình sài ngắt cạnh xuống của chân thứ 2 của arduino uno nhé. 

Khi nhấn button thì có hiện tượng ngắt xảy ra. sau đó bạn delay(30); để điện áp ở 8 10 12 ổn định rồi nó đọc giá trị 1 hoặc 0 ở chân. Khi đọc xong thì nó hết tác vụ ngắt, bạn giữ phím cũng không tác dụng. Như vậy khi bạn nhấn nút nó sẽ kiểm tra ngay mà không bị delay chương trình đang chạy ở trong vòng lặp ở hàm void loop().

III. Lập trình

int interruptPin=2;//xem thêm tại http://arduino.vn/reference/attachinterrupt
//Trên uno bạn chỉ có thể dùng chan số 2 và số 3 nhé :)

void setup()

{

    pinMode(8, INPUT);    

    pinMode(10, INPUT);    

    pinMode(12, INPUT);

    pinMode(interruptPin, INPUT_PULLUP);

    attachInterrupt(digitalPinToInterrupt(interruptPin), blink, FALLING);

}

//hàm ngắt

void blink()

{   delay(30);  //chống hiện tượng dội cho tất cả nút đang nhấn
//đọc giá trị từng chân xem chân nào nhấn.
bt1= digitalRead(8);

bt2= digitalRead(10);

bt1= digitalRead(12);

}

void loop() {}

Như vậy các bạn có thể sử dụng hàng chục nút nhấn chỉ với 1 chân ngắt. Tối ưu được dự án của mình rồi :) 

lên
15 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Hướng dẫn sử dụng nhiều button ngắt với 1 chân ngắt điều khiển tốc độ động cơ DC

Hôm trước có một bạn Comment hỏi hướng dẫn để sài trong bài share của mình nên mình mạn phép viết thêm 1 bài đơn giản để giúp các bạn hiểu rõ hơn cách này của mình :)

Ở đây đơn giản là mình sử dụng 3 button tương ứng với 3 tốc độ của động cơ. khi nhấn button bất kỳ, hàm ngắt được gọi lên rồi sau đó kiểm tra nút nào được nhấn và sẽ băm xung PWM điều khiển tốc độ động cơ tương ứng.

 

lên
6 thành viên đã đánh giá bài viết này hữu ích.