Điện trở PullUp

Ví dụ ta có hình sau:

Với một điện trở kéo lên (Pull-up), thì khi nhấn nút, Arduino sẽ đọc giá trị chân là LOW, và khi không nhấn, Arduino nhận giá trị là HIGH.

int buttonPin = 3; 
int Led = 10; 

void setup() { 
 pinMode(buttonPin, INPUT); 
 pinMode(Led, OUTPUT); 
 Serial.begin(9600); 
} 

void loop() { 
 int buttonState = digitalRead(buttonPin); // đọc trang thái nút nhấn 
 if (buttonState == LOW) { // nếu nút nhấn thì trạng thái là LOW 
  digitalWrite(Led, HIGH); //sáng LED 
 } 
 else 
 { 
  digitalWrite(Led, LOW); Serial.println(buttonState); 
 } 
}
Khi không có điện trở PullUP

Và khi không có điện trở PullUp đầu ra khi không nhấn nút nhấn sẽ là

Tại sao LED bị nhấp nháy ?

Ta thấy vì không có điện trở PullUp, Nút không nhấn, Arduino không thể xác định được trạng thái tại nút nhấn là HIGH hay LOW, tất nhiên khi nhấn nút thì trạng thái sẽ là LOW. Vi vậy để Arduino không nhận trạng thái thì với các nút nhấn ta cần có điện trở Pullup.
Vì vậy cần có điện trở PullUP

Điện trở PullDown

Với điện trở kéo xuống (Pull-down) , Khi không nhất, Giá trị là LOW, và giá trị là HIGH khi nhấn.
Giả sử không dùng điện trở được không ??, Nếu không có điện trở, thì khi bạn không nhấn, giá trị tại chân sẽ không thể xác định bởi Arduino.

int button = 2; 
int led = 10; 
int buttonState = 0; 

void setup() { 
 pinMode(led, OUTPUT); 
 pinMode(button, INPUT); 
 Serial.begin(9600); 
} 

void loop() { 
 buttonState = digitalRead(button); 
 if (buttonState == HIGH) { // nút được nhấn 
  digitalWrite(led, HIGH); 
 } 
 else 
 { 
  digitalWrite(led, LOW); 
 } 
 Serial.println(buttonState); 
}