switch로 선택하기
Coddy Arduino 여정의 delay 없이 타이밍 제어하기 섹션에 포함된 레슨. 18개 중 8번째.
하나의 변수가 여러 값을 가질 수 있고 각 값마다 별도의 코드가 필요하면, if와 else if를 연결한 문장이 길어집니다. switch는 같은 작업을 하며 목록처럼 읽힙니다:
switch (zone) {
case 0:
// zone이 0일 때 실행됩니다
break;
case 1:
// zone이 1일 때 실행됩니다
break;
default:
// 일치하는 case가 없을 때 실행됩니다 (선택 사항)
break;
}switch는 숫자가 일치하는 case로 이동해 그 아래 줄들을 실행합니다. break는 switch를 빠져나옵니다. break를 잊으면 보드는 다음 case의 줄들도 계속 실행하는데, 이를 falling through라고 합니다.
여기서는 노브를 네 구역으로 나눕니다. analogRead()는 0부터 1023까지의 값을 반환하며, 이를 256으로 나누면 정수가 됩니다. 아래쪽 1/4에서는 0, 그다음에는 1, 2가 되고 맨 위에서는 3이 됩니다. 각 구역은 RGB LED에 고유한 색을 표시합니다.
챌린지
쉬움노브를 switch를 사용하는 색상 선택기로 바꾸세요:
- 구역 0: 빨간색 (이미 작성됨)
- 구역 1: 초록색
- 구역 2: 파란색
- 구역 3: 흰색 (세 가지 모두 켜짐)
setColor()를 사용하고 각 case를 break;로 끝내세요. Run을 누르고 노브를 돌린 다음 Check를 누르세요.
직접 해보기
const int redPin = 9;
const int greenPin = 10;
const int bluePin = 11;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void setColor(int red, int green, int blue) {
digitalWrite(redPin, red);
digitalWrite(greenPin, green);
digitalWrite(bluePin, blue);
}
void loop() {
int zone = analogRead(A0) / 256; // 0, 1, 2 또는 3
switch (zone) {
case 0:
setColor(HIGH, LOW, LOW); // 빨간색
break;
// 여기에 구역 1, 2, 3을 추가하세요
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
delay 없이 타이밍 제어하기의 모든 레슨
직접 연습해 보세요: Arduino 플레이그라운드