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

Phiên bản mới NRF24L01 PA nhiều cải tiến hơn!

Bài viết này kế thừa từ bài Sử dụng Module NRF24L01 - Thu phát sóng vô tuyến 2.4GHz với Arduino  của anh Nguyen Manh Hung. Thư viện của module có thể tải tại đây. Hôm nay mình sẽ giới thiệu cho các bạn một phiên bản mới hơn của NRF24L01.

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

Xe điều khiển từ xa (DRIFT) sử dụng NRF24L01 - Kết hợp với Hoodloader2 để đảm bảo sự truyền nhận THỜI GIAN THỰC

Thực sự thì với bài viết này, mình đã được truyền cảm hứng về làm một chiếc xe điều khiển từ xa với sóng vô tuyến 2.4GHz. Mình rất thích xe điều khiển từ xa, vì vậy, mình đã cùng với ksp và nhóm của bạn ý hoàn thiện chiếc xe đầu tiên trong cộng đồng sử dụng sóng vô tuyến 2.4GHz này. Mình rất hi vọng Nguyen Manh Hung và các bạn khác sẽ có những bài viết hướng dẫn về những module như thế này nữa, để từ đó mình có thể được truyền cảm hứng và liên lạc với bạn bè mình để hoàn thiện nên những sản phẩm bá đạo. 

lên
21 thành viên đã đánh giá bài viết này hữu ích.
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.