누를 때마다 토글하기
Coddy Arduino 여정의 입력 섹션에 포함된 레슨. 22개 중 4번째.
지금까지 LED는 버튼을 따라 켜지고 꺼졌습니다. 버튼을 누르고 있는 동안 켜지고, 놓으면 꺼졌습니다. 전등 스위치는 다르게 작동합니다. 한 번 누르면 켜지고, 다시 누르면 꺼집니다. 이것을 토글이라고 합니다.
토글하려면 스케치는 버튼이 눌리는 순간을 알아차려야 합니다. 즉, 지금은 눌려 있지만 이전에 loop()가 실행됐을 때는 눌려 있지 않았던 순간입니다. 이 순간을 에지라고 합니다. 카운터처럼 setup() 위에 변수를 선언해 마지막 읽기 값을 저장하세요.
int lastReading = HIGH;
void loop() {
int reading = digitalRead(2);
if (reading == LOW && lastReading == HIGH) {
// 버튼이 눌렸습니다
}
lastReading = reading;
}버튼을 누르고 있는 동안 읽기 값은 LOW로 유지되므로, 얼마나 오래 누르고 있든 누를 때마다 에지는 한 번 발생합니다.
bool을 뒤집으려면 "아님"을 뜻하는 !를 사용하세요. ledOn = !ledOn;은 true를 false로 바꾸고, 다시 그 반대로 바꿉니다.
챌린지
중급버튼은 2번 핀(INPUT_PULLUP)에 연결되어 있고 LED는 13번 핀에 연결되어 있습니다. 버튼을 누를 때마다 LED 상태를 전환하세요:
- 버튼이 눌리면(
LOW가 현재 값이고, 이전 값은HIGH),ledOn을 반전하세요 loop()의 끝에서 읽은 값을lastReading에 저장하세요ledOn에 맞춰 LED를 켜거나 끄세요
Run을 누르고 버튼을 몇 번 누른 다음 Check를 누르세요.
직접 해보기
const int buttonPin = 2;
const int ledPin = 13;
bool ledOn = false;
int lastReading = HIGH;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop() {
int reading = digitalRead(buttonPin);
// 버튼을 누르면 ledOn 값을 반전합니다
// 다음 번을 위해 이 읽기 값을 기억합니다
// ledOn 값에 맞게 LED를 켜거나 끕니다
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
입력의 모든 레슨
직접 연습해 보세요: Arduino 플레이그라운드