Lập trình điều khiển led bằng nút bấm với board mạch Arduino
Mục Lục
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) và 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.
Xem thêm: Điều khiển cửa cuốn bằng điện thoại
4.8 / 5 – ( 5 bầu chọn )
Source: https://dvn.com.vn
Category: Phụ Kiện