Search Code

Tại sao sử dụng điện trở với nút nhấn và công tắc với Arduino

Tại sao sử dụng điện trở với nút nhấn và công tắc với Arduino

Hướng dẫn này giải thích vì sao việc sử dụng điện trở với nút nhấn và công tắc kết nối với Arduino là rất quan trọng để hoạt động ổn định. Hiểu được khái niệm này là nền tảng cho bất kỳ dự án Arduino nào có đầu vào từ người dùng. Kiến thức này giúp ngăn ngừa các hành vi bất thường và đảm bảo các dự án của bạn hoạt động chính xác. Dưới đây là một số ý tưởng dự án mà kiến thức này rất cần thiết:

  • Công tắc bật/tắt đơn giản cho đèn LED
  • Bộ điều khiển trò chơi tương tác
  • Điều khiển từ xa cho các thiết bị gia dụng
  • Hệ thống an ninh kích hoạt bằng nút nhấn

Hãy cùng khám phá lý do đằng sau việc sử dụng điện trở trong các mạch này.

Arduino wiring for Push button wihthout resistor

Phần cứng/Linh kiện

Các linh kiện cốt lõi cần thiết cho dự án này rất tối thiểu: một bo mạch Arduino, một nút nhấn và một điện trở (lớn hơn 300 ohm). Giá trị của điện trở không quan trọng; các giá trị như 1kΩ, 10kΩ, hoặc thậm chí 100kΩ thường sẽ hoạt động tốt (trong video ở phút 00:41).

Hướng dẫn đấu dây

Có hai cấu hình đấu dây chính (trong video ở phút 00:30):

  1. Cấu hình 1: Kết nối nút nhấn giữa chân Arduino và +5V. Phía còn lại của nút nhấn được nối với đất thông qua một điện trở. Khi nút được nhấn, chân đọc mức HIGH; khi nhả ra, chân đọc mức LOW.
  2. Cấu hình 2: Kết nối nút nhấn giữa chân Arduino và đất. Phía còn lại của nút nhấn được nối với +5V thông qua một điện trở. Khi nút được nhấn, chân đọc mức LOW; khi nhả ra, chân đọc mức HIGH.

Arduino wriring for push button and LED
Arduino wriring for push button and LED

Một sơ đồ đấu dây trực quan sẽ rất hữu ích ở đây.

Giải thích mã code

Mã Arduino sử dụng hàm pinMode() để cấu hình chân làm đầu vào. Phần quan trọng là việc sử dụng INPUT_PULLUP (trong video ở phút 04:06, 04:23). Điện trở kéo lên nội bộ này giúp loại bỏ nhu cầu sử dụng điện trở ngoài trong một số cấu hình nhất định, đơn giản hóa việc đấu dây. Hàm digitalRead() đọc trạng thái của chân, và một câu lệnh if-else đơn giản xác định nút có được nhấn (LOW) hay không (HIGH) (trong video ở phút 08:34).


pinMode(2, INPUT_PULLUP); // Cấu hình chân 2 làm đầu vào với điện trở kéo lên nội bộ
int pushButton = digitalRead(2); // Đọc trạng thái của chân 2
if (pushButton == LOW) {
  // Nút đang được nhấn
} else {
  // Nút không được nhấn
}

Dự án/Demo trực tiếp

Video trình bày cả hai cấu hình đấu dây và hành vi tương ứng của chúng. Video nêu bật các vấn đề có thể phát sinh khi bỏ qua điện trở, chẳng hạn như các kết quả đọc không ổn định do nhiễu và ghép điện dung (trong video ở phút 06:18, 06:39, 07:21). Phần demo cho thấy rõ ràng hoạt động ổn định và đáng tin cậy đạt được khi có điện trở (trong video ở phút 08:08).

Các chương

  • [00:00] Giới thiệu
  • [00:30] Các cấu hình đấu dây
  • [04:12] Giải thích mã code sử dụng INPUT_PULLUP
  • [05:36] Loại bỏ điện trở: Trình diễn thực tế
  • [08:33] Giải thích mã code

Hình ảnh

Why should we use a resistor with a push button and Arduino?
Why should we use resistor with push button with Arduino?
Why should we use a resistor with a push button and Arduino?
Why should we use resistor with push button with Arduino?
2 pin tactile push button switch
2 pin tactile push button switch
Arduino wriring for push button and LED
Arduino wriring for push button and LED
Arduino wiring for Push button with resistor-2
Arduino wiring for Push button with resistor-2
Arduino wiring for Push button with resistor-1
Arduino wiring for Push button with resistor-1
Arduino wiring for Push button wihthout resistor
Arduino wiring for Push button wihthout resistor
132-Code example using a resistor
Ngôn ngữ: C++
/*
 * This is an Arduino Sketch for a tutorial video 
 * explaining why a resistor is needed to be used with a push button
 * with Arduino.
 * 
 * Written by Ahmad Shamshiri on July 17, 2018 at 23:11 in Ajax, Ontario, Canada
 * For Robojax.com
 * Watch the instruction video for this code: https://youtu.be/TTqoKcpIWkQ
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 */

void setup() {
  // Robojax.com push button tutorial
  pinMode(3,INPUT_PULLUP);
  Serial.begin(9600);
  Serial.println("Robojax Push Button Tutorial");
  

}

void loop() {
  // Robojax.com push button tutorial
  int pushButton = digitalRead(3);
  if(pushButton == LOW)
  {
    Serial.println("Pin 3 LOW");
  }else{
    Serial.println("Pin 3 HIGH");
  }

delay(500);
}
133-Code example using INPUT_PULLUP without a resistor
Ngôn ngữ: C++
/*
 * This is an Arduino Sketch for a Tutorial video 
 * explaining why a resistor is needed to be used with a push button
 * with an Arduino to connect the pin to Ground (GND)
 * 
 * Written by Ahmad Shamshiri on July 18, 2018 at 17:36 in Ajax, Ontario, Canada
 * For Robojax.com
 * Watch the instruction video for this code: https://youtu.be/TTqoKcpIWkQ
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 */

void setup() {
  // Robojax.com push button tutorial
  pinMode(2,INPUT_PULLUP);
  Serial.begin(9600);
  Serial.println("Robojax Push Button Tutorial");
  

}

void loop() {
  // Robojax.com push button tutorial
  int pushButton = digitalRead(2);
  if(pushButton == LOW)
  {
    Serial.println("Button is pushed.");
  }else{
    Serial.println("Button is NOT pushed.");    
  }

delay(500);
}

Nghĩ bạn có thể cần

Tài nguyên & tài liệu tham khảo

Chưa có tài nguyên nào.

Tập tin📁

Không có tệp nào khả dụng.