Lập Trình điều Khiển Led Bằng Nút Bấm Với Board Mạch Arduino

1. Thiết kế mạch điều khiển led bằng nút bấm

Cấu tạo nút bấm (button)

Nút bấm trên Arduino

Nút bấm có 4 chân chia làm 2 cặp. Những chân trong cùng một cặp được nối với nhau. Khi nhấn nút, cả 4 chân của nút bấm đều được nối với nhau, cho phép dòng điện từ một chân bất kì có thể tới 3 chân còn lại.

Sơ đồ chân nút bấm

Nguyên lý hoạt động của button trong board mạch Arduino

Schematic button với Arduino

Button muốn hoạt động cần có nguồn dương (5V) và nguồn âm (GND). Có 1 điện trở 10kΩ nối bên nguồn âm (GND). Trạng thái nút bấm là bấm nút (giá trị nhận được là 1) hoặc không bấm nút (giá trị nhận được là 0) sẽ được lấy ở chân 2 trên Arduino.

Khi chưa nhấn nút, chân 2 của Arduino được nối với GND qua một điện trở 10kΩ, lệnh digitalRead(2) sẽ trả về giá trị 0 (LOW).

Khi nhấn nút, chân 2 của Arduino sẽ được nối trực tiếp với 5V và nối với GND thông qua 1 điện trở 10kΩ, lệnh digitalRead(2) sẽ trả về giá trị 1 (HIGH).

Mạch điều khiển led bằng nút bằng với board mạch Arduino

Gồm 1 board Arduino, 1 led, 2 điện trở, 1 button.

Sơ đồ mạch điều khiển led bằng button với Arduino

Có thể thiết kế mạch giả lập với Proteus như hình bên dưới.

Sơ đồ mạch Proteus điều khiển led bằng button với arduino

2. Viết chương trình điều khiển led sáng tắt bằng nút bấm

int button = 9; int led = 5; void setup() { pinMode(button, INPUT);//khai báo chân button có thể đọc dữ liệu pinMode(led,OUTPUT);//khai báo chân led là ngõ ra } void loop() { int buttonStatus = digitalRead(button);//đọc trạng thái button if (buttonStatus == HIGH) {//nếu mà button được nhấn digitalWrite(led,HIGH); //bật led } else {//ngược lại digitalWrite(led,LOW);//tắt led } }

Biến buttonStatus lưu trữ trạng thái của nút bấm. Nếu đã bấm (buttonStatus == HIGH) thì bật đèn và ngược lại.

3. Đếm số lần nhấn button

Trong nhiều trường hợp, chúng ta cần đếm số lần nhấn button. Chương trình bên dưới giúp đếm số lần nhấn button.int button = 9; int led = 5; int preStateButton=LOW;//lưu trạng thái trước của button int count = 0;//biến lưu số lần nhấn button void setup() { pinMode(button, INPUT); pinMode(led,OUTPUT); } void loop() { int curStateButton = digitalRead(button);//lấy trạng thái hiện tại của button if (curStateButton==HIGH && preStateButton==LOW){ count++; } preStateButton=curStateButton; }

Biến count lưu số lần nhấn button. Ban đầu, count=0. Biến preStateButton lưu trạng thái trước đó của button. Biến curStateButton lưu trạng thái hiện tại của button. Chỉ khi nào curStateButton==HIGH (nhấn)preStateButton==LOW (không nhấn) thì lúc đó mới là một lần nhấn button và mới đếm là một lần nhấn.

Để hiểu rõ hơn, chúng ta cùng xem dãy các trạng thái của button: ban đầu là LOW (không nhấn) rồi nhấn (HIGH) LOW HIGH LOW HIGH LOW…Rõ ràng, một button được xem là một lần nhấn khi và chỉ khi chuyển trạng thái từ LOW sang HIGH, còn từ HIGH sang LOW thì là không nhấn button.

4. Bài tập

Bài tập 1: Thiết kế mạch gồm 1 đèn LED kết nối với Arduino qua cổng ~10 và nút bấm qua cổng 2. Xử lí khi nhấn nút lần đầu thì đèn sáng, lần 2 đèn tắt, lần 3 đèn sáng, …

Bài tập 2: Thiết kế mạch gồm 1 đèn LED và 2 nút bấm (nút tăng và nút giảm) kết nối với Arduino. Xử lý khi nhấn nút tăng sẽ tăng dần độ sáng của đèn đến hết mức thì không thể tăng được nữa, nhấn nút giảm thì giảm dần độ sáng của đèn đến hết mức thì không thể giảm được nữa.

  • Cấu trúc điều khiển vòng lặp while trong Python
  • Lớp InputStreamReader và OutputStreamWriter trong Java
  • Kiểm tra (validation) dữ liệu trong html form với PHP
  • Mở (open) và đọc (read) file trong PHP
  • Cấu trúc dữ liệu Tuple trong Python
3.7/5 - (7 bình chọn)Bài trước và bài sau trong môn học<< Lập trình điều khiển nhiều led với board mạch ArduinoLập trình điều khiển nhiều led bằng IC HC595 với board mạch Arduino >>

Từ khóa » đọc Nút Nhấn Arduino