Đ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

Select any filter and click on Apply to see results

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

Kết nối điều khiển từ xa sử dụng ESP8266 và Arduino với hệ thống firmware iNut Cảm biến CloudMQTT - 1000 firmware miễn phí

Chuyện kể rằng, có 02 sinh viên Việt Nam, trong lúc làm đồ án đại học kết nối điều khiển từ xa qua Internet. Một người thì chọn phương án truyền thống sử dụng máy tính làm máy chủ và demo các tính năng theo yêu cầu đồ án. Người còn lại biết đến iNut Sensor và tìm cách tối ưu hóa phần mềm và phần cứng nhằm chau chuốt cho đồ án của mình trở nên "xịn" và "nhiều tính năng bá đạo". Đến lúc bảo vệ đồ án, cậu sinh viên 01 cảm thấy choáng ván với muôn vàn vấn đề từ việc nơi trình bày đồ án không có wifi, mạng chập chờn, máy tính mở không lên, đứt cáp biển,... Cuối cùng cũng bảo vệ được với điểm số không ưng ý lắm dù tốn rất nhiều thời gian và công sức. Cậu còn lại nhờ vào việc chau chuốt phần mềm, tối ưu hóa và comment kĩ từng lệnh trong dòng code, viết báo cáo bài bản chuẩn bị slide như ý, dùng điện thoại cài wifi, quét mã QRcode để chia sẻ quyền truy cập đến phần mềm rất chuyên nghiệp, mọi thứ cậu chủ động hoàn toàn mà không bị các vấn đề "học tài thi phận" bủa vây mà kết quả hết sức mĩ mãn, điểm số mĩ miều, kiến thức IoT được chuẩn hóa. Thực vậy, các dự án, đồ án sử dụng nền tảng iNut Platform bên dưới cho phép các bạn sinh viên làm các dự án hết sức hoàn hảo: từ xe điều khiển, bãi giữ xe thông minh, hệ thống máy lạnh, máy bơm, điều hòa thông minh,... do chinh các bạn tự làm nên đã đạt được những điểm số tốt và tuyệt đối. Cũng chính vì thế, iNut JSC (công ty chủ quản của iNut Platform) đã kết hợp với Khu Công nghệ phần mềm - ĐHQGHCM để tổ chức những khóa đào tạo ngắn hạn cho sinh viên Việt Nam sử dụng nền tảng IoT do iNut JSC phát triển. Và để mở con đường tri thức tiếp cận IoT trong nháy mắt, iNut JSC đã tạo ra một phiên bản firmware trị giá 50.000 đồng sử dụng clouding của CloudMQTT và tài trợ 1000 firmware cho tất cả các bạn học sinh, sinh viên Việt Nam có thể tiếp cận IoT một cách dễ dàng và nhanh chóng nhất!

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

[iNut PLC]Hệ thống giám sát nước sinh hoạt bằng - Hướng dẫn giám sát PLC trên Internet

Trước đây, khi nghĩ về Scada - hệ thống điều khiển giám sát và thu thập dữ liệu, mọi người sẽ nghĩ nó rất phức tạp và đắt tiền. Rất khó tiếp cận và phải đi học chuyên sâu. Tuy nhiên, với sự xuất hiện của bo mạch iNut PLC. Mọi thứ đã dễ dàng hơn rất nhiều. Thế giới công nghiệp năm trong lòng bàn tay của bạn.

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