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 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, được cho phép dòng điện từ một chân bất kể hoàn toàn có thể tới 3 chân còn lại .

Nguyên lý hoạt động của button trong board mạch 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ở 10 kΩ, 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 .Có thể phong cách thiết kế mạch giả lập với Proteus như hình bên dưới .

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.

4.8 / 5 – ( 5 bầu chọn )

Source: https://dvn.com.vn
Category: Phụ Kiện

Alternate Text Gọi ngay