내부 풀업
Coddy Arduino 여정의 입력 섹션에 포함된 레슨. 22개 중 3번째.
Read a Button 이후로 INPUT_PULLUP을 사용했습니다. 이 설정은 보드 내부의 20k~50k옴 저항을 핀과 5V 사이에 연결합니다. 이전 수업의 풀다운을 반대로 한 것이며, 추가 부품은 필요하지 않습니다. 버튼은 핀을 GND에만 연결합니다.
문제는 논리가 뒤집혀 있다는 것입니다. 버튼을 누르지 않으면 HIGH를 읽고, 누르면 LOW를 읽습니다. 스케치 곳곳에 있는 == LOW는 쉽게 반대로 이해할 수 있습니다. digitalRead(2) == LOW와 같은 비교식 자체는 true 또는 false이며, bool은 true 또는 false를 담는 변수입니다. 의미를 나타내는 이름으로 저장하세요.
bool pressed = digitalRead(2) == LOW;
if (pressed) {
// 버튼이 눌려 있다
}이제부터 코드를 올바른 방향으로 읽을 수 있습니다. bool을 출력하면 true는 1로, false는 0으로 표시됩니다.
챌린지
쉬움버튼은 핀 2를 GND에 연결하고, LED는 핀 13에 있습니다:
- 핀 2를
INPUT_PULLUP으로 설정합니다 digitalRead(buttonPin) == LOW를pressed라는bool변수에 저장합니다pressed를 출력하고, 값이true인 동안 LED를 켠 다음 100 ms 기다립니다
버튼을 누르고 있는 동안에는 Check가 1을, 버튼을 놓으면 0을 예상합니다. Run을 누르고 버튼을 누른 상태로 유지한 다음 Check를 누르세요.
직접 해보기
const int buttonPin = 2;
const int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
// 버튼 핀의 풀업을 활성화하세요
}
void loop() {
// bool pressed = ...
// 값을 출력하고, true인 동안 LED를 켠 다음 100 ms 기다리세요
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
입력의 모든 레슨
직접 연습해 보세요: Arduino 플레이그라운드