Menu
CoddyTech

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에 고유한 색을 표시합니다.

challenge icon

챌린지

쉬움

노브를 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을 추가하세요
  }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

delay 없이 타이밍 제어하기의 모든 레슨

직접 연습해 보세요: Arduino 플레이그라운드