Đăng bởi Để lại phản hồi

Hướng dẫn điều khiển nút nhấn với Arduino trên Tinkercad

Hôm nay chúng ta cùng tìm hiểu cách điều khiển một nút bấm, bằng cách sử dụng đầu vào kỹ thuật số (analog input) của Arduino. Ta sẽ nối một mạch đơn giản, sử dụng breadboard và code Arduino để điều khiển một chiếc đèn LED.

Đây là bài tiếp theo trong series hướng dẫn thực hành Arduino (với Tinkercad Circuits). Ở những bài viết trước, ta đã học được cách điều khiển nhiều đèn LED. Tuy nhiên đó mới chỉ là một trong nhiều công dụng của đầu ra (output) của Arduino. Ở bài viết hôm nay, ta sẽ dựa trên kết quả output này và thêm vào một input khác. Arduino có thể được lập trình để lắng nghe các tín hiệu điện và thực hiện các hành động dựa trên các input đó.

Nút nhấn được đề cập trong bài là một loại công tắc, một thiết bị cơ dùng để kết nối hoặc ngắt mạch.

Để thực hành trên mạch vật lý, bạn sẽ cần các linh kiện:

  • 1 bảng Arduino Uno
  • 1 cáp USB
  • 1 bảng mạch (breadboard) và dây
  • 1 đèn LED
  • 1 điện trở bất kỳ từ 100-1K Ohm
  • 1 điện trở 10K Ohm
  • 1 nút bấm

Tham khảo thêm: Sản phẩm Arduino Uno R3

Bước 1: Xây dựng mạch

Đầu tiên, ta hãy cùng xem mạch mẫu và kiểm tra thử nút nhấn: Mạch mô phỏng Điều khiển nút nhấn với Arduino. Lưu ý rằng các hàng của breadboard đã được kết nối ở bên trong, vì vậy ta có thể cắm các linh kiện và dây để tạo kết nối nhanh chóng. Nếu muốn, bạn cũng có thể mở một cửa sổ Tinkercad Circuits mới và xây dựng bản mạch riêng cho mình nhé.

Trong bảng làm việc (workplane) của Tinkercad Circuits, hãy tìm các linh kiện: nút bấm, đèn LED, hai điện trở và dây nối với Arduino.

Sau đó kéo Arduino Uno và breadboard từ bảng thành phần (components) vào bảng làm việc.

Kết nối đường dây nguồn (+)đường dây nối đất (-) của bảng mạch chính với Arduino 5Vchân đất (GND), bằng cách nhấp chuột để tạo dây.

Nối đường ray nguồn và đất tương ứng ở mép đối diện của bảng mạch, bằng cách tạo một dây màu đỏ giữa hai thanh nguồn và một dây màu đen giữa hai thanh đất.

Cắm đèn LED vào hai hàng breadboard khác nhau để cực âm (chân ngắn hơn) kết nối với một chân của điện trở (giá trị bất kỳ, từ 100-1K Ohms đều được). Điện trở có thể lắp theo một trong hai hướng vì điện trở không phân cực (khác với đèn LED – phải được kết nối theo một hướng nhất định mới có thể hoạt động).

Nối chân điện trở còn lại với đất.

Nối dây cực dương của LED (chân dài hơn) vào chân 13 của Arduino.

Kéo một nút bấm từ bảng thành phần vào giữa bảng mạch và đặt ngang qua đường ngắt ở giữa, sao cho các chân của nút đều cắm vào bốn hàng bảng mạch khác nhau.

Nhấp chuột để tạo dây nối một chân nút với nguồn điện.

Kết nối chân đối diện theo đường chéo đến chân số 2 của Arduino.

Tạo và đặt một điện trở có giá trị cao (ví dụ: 10K Ohm) giữa chân nút đó và đất.

Bước 2: Điện trở kéo xuống

Bạn có thắc mắc liệu tại sao chúng ta cần một điện trở để đọc công tắc?

Ở phần còn lại, hai phía của công tắc này không được kết nối với nhau. Bạn có thể di chuyển chuột qua các chân công tắc để xem nhãn thiết bị đầu cuối (Terminal) của chúng. Công tắc thông thường sẽ ở trang thái mở (trạng thái nghỉ), đầu dây số 12 và đầu dây số 22 không được kết nối với đầu dây số 11 và đầu dây số 21 của nút bấm. Chân 2 của Arduino được kết nối thông qua một điện trở 10K với đất. Khi ta nhấn nút, các dây dẫn công tắc được kết nối, cho phép chân 2 được kết nối với nguồn 5V, vốn không có điện trở. Vì dòng điện đi theo đường có ít điện trở nhất, nên chân cắm kết nối với nguồn điện và bỏ qua các đường nối yếu (10K) với đất.

Tuy nhiên, khi không có tín hiệu nào khác (khi công tắc không được nhấn), đường nối yếu với đất trở thành đường nối duy nhất. Vì vậy, điện trở “kéo chân xuống đất”, nên nó được gọi là pull-down resistor. Nếu không có điện trở này, chân 2 sẽ không được kết nối với bất kỳ thứ gì cho đến khi nút được nhấn. Tình huống này được gọi là “floating“, và nó có thể gây ra tình trạng nhiễu do tĩnh điện và nhiễu điện từ. Tương tự như vậy, điện trở cũng có thể được sử dụng để buộc một chốt vào nguồn điện. Khi đó nó được gọi là pull-up resistor.

Ta thêm một đồng hồ đo vào bảng làm việc, sau đó nối vào chân Arduino 2 và nối đất.

Nhấp vào start simulation và nhấn (hoặc giữ) nút nhấn để quan sát tín hiệu kỹ thuật số được thu nhận bởi chân 2.

Để hiểu rõ hơn, bạn có thể xem hình minh hoạ bên trên.

Bước 3: Code với khối

Bạn hãy sử dụng trình chỉnh sửa code (code blocks editor) để xem qua tín hiệu nút bấm, sau đó dự đoán thử xem đèn LED sẽ sáng lên khi nút bấm “được nhấn” hay “không được nhấn” nhé.

Ta nhấp vào nút “Code” để mở trình chỉnh sửa. Nhấp vào danh mục Variables và tạo một biến mới, gọi là buttonState.

Kéo ra một khối “set“.

Ta sẽ lưu trữ trạng thái của nút bấm vào biến buttonState. Nhấp vào danh mục Input Block, kéo khối “read digital pin” ra và đặt vào khối “set” sau từ “to”.

Vì nút bấm của chúng ta được kết nối với Arduino trên chân 2, hãy thay đổi từ menu của khối “read digital pin” thành 2. Bây giờ, các khối của bạn sẽ là  “set buttonState to read digital pin 2”, nghĩa là đặt biến buttonState để đọc trạng thái nút nhấn.

Nhấp vào danh mục Control và kéo ra một khối if then/else.

Ta cấu hình để nó thực hiện việc đánh giá xem buttonState có phải là giá trị HIGH hay không, bằng cách sử dụng khối so sánh toán học (Math comparator block). Cụ thể , ta kéo khối so sánh toán học vào câu lệnh if để kiểm tra xem biến buttonState có bằng HIGH không.

Ta muốn đèn LED sẽ sáng lên nếu nút được nhấn, ngược lại, đèn sẽ tắt. Trong danh mục Output block, hãy tìm khối “set built-in LED to HIGH”. Ta sẽ thử thêm các khối này vào câu lệnh if để đèn chỉ sáng khi nhấn nút ấn. “set built-in LED” nên ở trạng thái “HIGH” khi buttonState ở trạng thái “HIGH” – còn không thì “set built-in LED” nên ở trạng thái “LOW“.

Bước 4: Giải thích code Arduino

Khi trình chỉnh sửa code mở, ta có thể nhấp vào menu ở bên trái và chọn “Block + Text” để hiển thị code Arduino được tạo bởi các khối.

Trước setup(), chúng ta tạo một biến để lưu trữ trạng thái hiện tại của nút. Nó được khai báo bằng int bởi vì là số nguyên.

Bên trong hàm setup, các chân được cấu hình bằng pinMode(). Chân 2 được cấu hình như một đầu vào để chúng ta có thể xem được trạng thái của nút nhấn. Chân 13 được cấu hình làm đầu ra để điều khiển đèn LED.

Sau dấu gạch chéo // là một comment, chỉ để ghi chú cho chương trình. Trong vòng lặp chính, hàm digitalRead() sẽ kiểm tra trạng thái của chân 2 (sẽ là 5V (HIGH) hoặc là tiếp đất (LOW)) và lưu trữ trạng thái đó trong biến buttonState đã tạo ở trên.

Bên dưới các hàng comment là câu lệnh if để kiểm tra xem liệu buttonState có phải là HIGH hay không (“==” là một toán tử so sánh, không nên nhầm lẫn với “=” là một toán tử gán ). Nếu đúng, đèn LED sẽ được đặt thành HIGH (trạng thái bật). Nếu không, các code bên trong else { sẽ được thực thi. Khi đó đèn LED sẽ được đặt thành LOW (trạng thái tắt). Câu lệnh If có thể tồn tại một mình, hoặc với nhiều câu lệnh else khác .

Bước 5: Mạch nút nhấn Starter

Mạch này cũng có sẵn trong Tinkercad Circuits. Bạn có thể sử dụng nó khi muốn đọc tín hiệu nút bấm (hoặc các loại công tắc hoặc digital input khác)

Ta lấy mạch và code trong bảng component (menu thả xuống -> Starters -> Arduino). Bộ mạch Starter này có cùng code với mạch mẫu, tuy nhiên không có bảng mạch và sử dụng đèn LED tích hợp sẵn của Uno (dây nối vào chân 13).

Bước 6: Xây dựng mạch với board Arduino

Khi thực hành thực tế, ta nối dây mạch Arduino Uno bằng cách cắm các linh kiện và dây để khớp với các kết nối được hiển thị trong mạch mẫu (trên Tinkercad). Sau đó sao chép code từ cửa sổ code và dán vào một bản thảo trống trong phần mềm Arduino (hoặc tải xuống và mở file bằng Arduino). Bạn cũng có thể tìm thấy ví dụ này trong phần mềm Arduino ở mục File -> Examples -> 02.Digital -> Button.

Tiếp theo, cắm cáp USB, chọn bo mạch và cổng trong menu Tools của phần mềm.

Cuối cùng, tải lên code và xem đèn LED có sáng khi nhấn nút không nhé. ?

Nguồn: instructables.com
Lượt dịch: Fuvitech.vn

Để lại một bình luận