Điện trở kéo lên tích hợp
Thuộc phần Đầu vào trong hành trình Arduino của Coddy. Bài học 3 trên 22.
Bạn đã dùng INPUT_PULLUP từ bài học Đọc nút nhấn. Tùy chọn này bật một điện trở bên trong bo mạch, có giá trị từ 20k đến 50k ohm, nối chân với 5V: điện trở kéo xuống ở bài học trước được đảo chiều, không cần thêm linh kiện. Nút nhấn chỉ nối chân với GND.
Điểm cần lưu ý là logic bị đảo ngược: khi thả nút, kết quả đọc là HIGH; khi nhấn, kết quả đọc là LOW, và rất dễ viết ngược == LOW ở khắp nơi trong đoạn code. Phép so sánh như digitalRead(2) == LOW tự nó cho kết quả true hoặc false, còn bool là một biến lưu true hoặc false. Hãy lưu kết quả vào một biến có tên thể hiện ý nghĩa của nó:
bool pressed = digitalRead(2) == LOW;
if (pressed) {
// Nút đang được nhấn
}Từ đó trở đi, đoạn code sẽ dễ đọc và đúng chiều hơn. In ra một bool sẽ hiển thị 1 cho true và 0 cho false.
Thử thách
DễNút nhấn nối chân 2 với GND, còn LED nối với chân 13:
- đặt chân 2 thành
INPUT_PULLUP - lưu
digitalRead(buttonPin) == LOWvào một biếnboolcó tênpressed - in ra
pressed, bật đèn LED khi giá trị làtrue, rồi chờ 100 ms
“Kiểm tra” yêu cầu giá trị là 1 khi bạn nhấn giữ nút và là 0 khi bạn thả nút. Nhấn Run, giữ nút, rồi nhấn Check.
Tự làm thử
const int buttonPin = 2;
const int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
// Bật điện trở kéo lên cho chân nút nhấn
}
void loop() {
// bool pressed = ...
// In ra giá trị của pressed, bật đèn LED khi pressed là true, rồi đợi 100 ms
}
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Đầu vào
1Nút nhấn
In trạng thái của nút nhấnĐiện trở kéo xuốngĐiện trở kéo lên tích hợpĐổi trạng thái sau mỗi lần nhấnĐếm số lần nhấn nútKhử dội nút nhấnNhấn hai nút cùng lúc3Nhập liệu qua cổng nối tiếp
Đọc một ký tự qua cổng nối tiếpLệnh bằng từĐiều chỉnh tốc độ nhấp nháy qua cổng nối tiếpNhấp nháy theo lệnhTự luyện tập: Playground Arduino