Menu
CoddyTech

Đ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.

challenge icon

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) == LOW vào một biến bool có tên pressed
  • 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
}
quiz iconTự kiểm tra

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

Tự luyện tập: Playground Arduino