Điều khiển NHIỀU NÚT BẤM chỉ với một chân của Arduino

I. Giới thiệu

Qua quá trình làm việc với Arduino, mình thấy có một giải pháp rất hay về việc sử dụng button với Arduino. Đó là chỉ cần sử dụng một chân analog với các nút nhấn và các điện trở có trị số khác nhau, ta có thể làm ra một bàn phím. Qua bài viết này, mình xin chia sẻ thư viện mình mới viết cho vấn đề này.

II. Phần cứng

  1. Arduino UNO
  2. Breadboard
  3. Dây cắm breadboard
  4. 03 nút nhấn
  5. 04 điện trở các trị số khác nhau (trong đó nên có 1 điện trở 10kOhm).

III. Download thư viện

Đây là thư viện do mình mới viết trong chiều ngày hôm nay (21/11/2015) do thấy nó hay quá. Lúc mình viết thì mình không biết là đã các thư viện khác của các bạn nước ngoài, và khi viết xong xem lại các thư viện khác thì code của mình cũng hiệu quả như nhau và có phần đơn giản hơn. Tên của thư viện này là AnalogButton.

IV. Lắp mạch

Hình ảnh lắp mạch

V. Giải thích quy trình

Như các bạn đã biết về các chân analog của Arduino. Mặc định, nó có thể đọc được các giá trị điện thế từ 0 => 5V phân ra thành các giá trị từ 0 => 1023. Nói một cách khác, mỗi chân analog sẽ có 1024 mức dữ liệu. Nếu ta vận dụng một cách linh hoạt, xem lân cận một mức nào đó là điểm giữ, và khi giá trị điện thế tại chân analog rơi vào điểm giữ đó thì làm một việc gì đó. Mở rộng xe, nếu ta có nhiều điểm giữ như vậy, ta có thể làm ra những sự kiện khác nhau (bật tắt đèn các kiểu) chỉ với 1 chân analog duy nhất. 

Vấn đề đặt ra là:

  1. Làm thế nào để tạo ra điểm giữ, nói cách khác là làm thế nào để xác định được điểm giữ bằng các button?
  2. Vậy khi tạo ra điểm giữ được rồi làm thế nào để bảo Arduino chạy một sự kiện (một hàm) nào đó?

1. Làm thế nào để tạo ra điểm giữ, nói cách khác là làm thế nào để xác định được điểm giữ bằng các button?

Chắc hẳn các bạn đã biết về hàm analogRead. Đó chính là hàm đọc giá trị điện thế và chuyển nó thành các mức dữ liệu từ 0 => 1023 (tượng chưng cho 0V và 5V). Như vậy, ta chỉ việc thay đổi mức điện áp cấp vào chân analog là sẽ xác định được một điểm dừng, để làm được điều đó, ta dùng các điện trở tạo ra cầu phân áp (Xem hình lắp mạch ở trên).

Vì sao phải là các giá trị điện trở khác nhau?

Bởi vì nếu các điện trở giống nhau => các điểm dừng trùng nhau. Vì vậy, nếu muốn các điểm dừng sẽ khác nhau => các giá trị điện trở phải khác nhau.

Để xác định được mức điểm dừng, ta chỉ việc dùng hàm analogRead đọc giá trị A0 là xong. Tuy nhiên, để làm quen với thư viện, mình xin chia sẻ đoạn code dưới để các bạn xác định điểm dừng.

 

 

Khi bạn nhấn một nút bấm thì sẽ có một giá trị điểm dừng xuất hiện. Nếu không nhấn nút bấm nào hết thì giá trị điểm dừng là 0.

 

Trong trường hợp của mình đó là khi nhấn lần lượt các button1, button2, button3 nó lần được các giá trị 45, 826, 908 (do mình các điện trở khá là chênh lệch với nhau hehe).

2. Vậy khi tạo ra điểm giữ được rồi làm thế nào để bảo Arduino chạy một sự kiện (một hàm) nào đó?

Bạn chỉ việc thay thế các điểm dừng trên vào đoạn code mẫu dưới đây là xong!

Giá trị điểm dừng bạn nhập vào khi thực thi có thể không chính xác là vì bạn dùng điểm trở có mức sai số lớn hoăc bạn gắn trên breadboard bị lỏng => nhiễu điện! Vì vậy khi làm mạch thực tế các bạn nên dùng điện trở và nút xịn một tí nghen.

VI. Kết luận

Rất dễ dàng phải không nào, chỉ việc xác định điểm dừng rồi thêm nó vào đoạn code thé là xong. Câu hỏi cuối bài mình muốn đặt ra cho các bạn là, làm thế nào để nhấn nhiều nút một lúc :3, hay nói một các hoa mỹ là tổ hợp phím :3. Hehe, vấn đề này không khó, thư viện này có thể làm được, chỉ cần các bạn để ý cách tiếp cận của mình, đó là dựa vào điểm dừng! Điểm dừng này lại phụ thuộc vào áp, áp lại phụ thuộc vào điện trở,... :3. Vậy khi nhấn nhiều nút, điều gì sẽ xảy ra?

Chúc các bạn thành công ahehe.

Chia sẻ thêm video cho các bạn có hứng thú làm hehe.

lên
14 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

Bộ điều khiển PID - ứng dụng phần 2 - xe dò line dùng thuật toán PID

Tiép nối bài viết về xe dò line cảm ơn Đỗ Hữu Toàn đã viết hộ mình phần 4. hôm nay mình sẽ làm cho chiếc xe dò line đi mượt và có hồn hơn 

lên
34 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ả

Làm đèn nhấp nháy trên xe cảnh sát

Đây là một ví dụ về sự sáng tạo cực kỳ đơn giản với Arduino và LED. Qua bài viết này, tôi muốn chia sẻ cho các bạn rằng, chúng ta chỉ cần biết một ít kiến thức về Arduino là có thể làm được những ứng dụng độc đáo ngay. Cụ thể, là bạn chỉ cần đọc qua bài Bài 2: Cách làm đèn LED nhấp nháy theo yêu cầu là có thể làm được ví dụ trong bài viết này rồi. Khá là hay đấy nhé!

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

Cuộc thi Sáng tạo với Arduino.vn - Creative Contest with Arduino.VN (CCA)

Như vậy là đã hơn một năm rưỡi kể từ lúc BQT đặt nền móng xây dựng Cộng đồng Arduino Việt Nam, chúng ta đã thực sự có một nơi cùng nhau học tập, chia sẻ và trau dồi kiến thức. Với tổng số bài viết trên cộng đồng đã vượt mốc 300 bài viết, chúng ta đã có một cuốn từ điển nho nhỏ về tự động hóa đơn giản cho cộng đồng Việt Nam. Và đây cũng là lúc chúng ta có một cuộc thi nho nhỏ dành cho các bạn trẻ cấp 2 và cấp 3.

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