본문 바로가기

아두이노 IDE/핵심프로그래밍 언어

13. switch case 조건문

핵심 아두이노 프로그래밍 언어 13 - switch case 조건문



if 조건문에 이어 switch case 조건문에 대해 알아보겠습니다

switch case 조건문은 하나의 변수를 다양한 값으로 비교 한 후, 비교 결과에 따라 원하는 작업을 실행하도록 만드는 명령어입니다.

먼저 사용 방법을 보겠습니다.



switch (var) {       //  비교대상을 var로 합니다.
    case 1:             //  만약 var의 값이 1이면,
        실행명령 1   //  실행명령 1을 실행합니다.
        break;         //  이 조건문에서 벗어납니다.
    case 2:            //  만약 var의 값이 2이면,
        실행명령 2   //  실행명령 2를 실행합니다.
        break;         //  이 조건문에서 벗어납니다.
    default:           //  만약 var의 값이 1이나 2가 아니면,
        실행명령 3   //  실행명령 3을 실행합니다.
    break;             //  이 조건문에서 벗어납니다.
}



이제 하나씩 알아보지요.



switch (변수명)

switch 다음에는 비교 대상이 되는 변수명을 넣어야합니다.

만약 변수명이 a라면, switch(a)
변수명이 var이라면, switch(var)
이라고 적으면 됩니다.



case 값:

case 뒤에는 변수명과 비교하기 원하는 값을 넣으면 됩니다.

숫자 값과 비교하고 싶으면 그냥 숫자만, 문자 값과 비교하고 싶으면 문자 앞뒤로 ‘ ’를 넣어야 합니다.

만약 3과 비교하고 싶으면, case 3:
a와 비교하고 싶으면, case ‘a’:
라고 쓰면 됩니다.

값 뒤에는 :를 반드시 넣어야 합니다.




break;

각 case의 비교 조건문이 끝나면, switch 조건문에서 벗어나도록 하는 명령어입니다.

break;를 사용하지 않으면 조건문이 끝나지 않고 다음으로 넘어가버립니다.

따라서 각 case 끝에는 반드시 break;를 넣어야 합니다.



defult:

비교 대상과 비교 값이 일치하는 경우가 없을 때 defult: 다음의 실행명령을 실행시킵니다.

if 문에서 else와 비슷한 역할을 합니다.



예를 한 번 보겠습니다.


int cds = A1;     //  아날로그 1번 핀에 조도센서를 연결합니다.
int LED1 = 5;    //  LED1을 5번 핀에 연결합니다.
int LED2 = 6;    //  LED2를 6번 핀에 연결합니다.
int LED3 = 7;    //  LED3을 7번 핀에 연결합니다.
int LED4 = 8;    //  LED4를 8번 핀에 연결합니다.

void setup() {
    pinMode(LED1, OUTPUT);    //  LED1을 출력으로 설정합니다.
    pinMode(LED2, OUTPUT);    //  LED2을 출력으로 설정합니다.
    pinMode(LED3, OUTPUT);    //  LED3을 출력으로 설정합니다.
    pinMode(LED4, OUTPUT);    //  LED4을 출력으로 설정합니다.
}

void loop() {
    int val = analogRead(cds) / 256;    //  조도센서에서 받은 값(0~1023)을 256으로 나눠서 val에 저장합니다. val은 0,1,2,3 중 하나로 값이 정해집니다.

    switch(val) {     //  val을 switch조건문의 비교 대상으로 만듭니다.
        case 0:                       //  val이 0이면.
            digitalWrite(LED1, HIGH);    //  LED1만 켭니다.
            digitalWrite(LED2, LOW);
            digitalWrite(LED3, LOW);
            digitalWrite(LED4, LOW);
            break;
        case 1:                         //  val이 1이면,
            digitalWrite(LED1, LOW);
            digitalWrite(LED2, HIGH);    //  LED2만 켭니다.
            digitalWrite(LED3, LOW);
            digitalWrite(LED4, LOW);
            break;
        case 2:                         //  val이 2이면,
            digitalWrite(LED1, LOW);
            digitalWrite(LED2, LOW);
            digitalWrite(LED3, HIGH);    //  LED3만 켭니다.
            digitalWrite(LED4, LOW);
            break;
        case 3:                         //  val이 3이면,
            digitalWrite(LED1, LOW);
            digitalWrite(LED2, LOW);
            digitalWrite(LED3, LOW);
            digitalWrite(LED4, HIGH);    //  LED4만 켭니다.
            break;
    }
}



아날로그 1번 핀에 조도센서를 연결하고, 5,6,7,8번 핀에 각각 LED를 연결한 후에 위의 스케치를 아두이노에 업로드 시키면 어떻게 될까요?

주위의 밝기에 따라 조도센서로부터 0~1023 사이의 값을 아두이노가 입력 받을 것입니다.

입력 받은 값을 256으로 나누면, 4개의 값(0,1,2,3) 중에 하나가 결과 값으로 나올 것입니다.

조도센서의 주위가 밝을수록 낮은 값이 입력되기 때문에, 가장 밝은 순서대로 0,1,2,3 중의 하나의 번호가 결정 될 것입니다.

이 결정된 번호가 switch case 조건문과 만나게 되면, 밝은 순서대로 LED1 ~ LED4 중에 하나가 켜질 것입니다.

'아두이노 IDE > 핵심프로그래밍 언어' 카테고리의 다른 글

14. 시간  (0) 2017.03.02
12. if 조건문  (0) 2017.02.23
11. 복합 연산 기호  (0) 2017.02.23
10. 부울 연산 기호  (0) 2017.02.23
9. 비교 연산 기호  (0) 2017.02.23