스위치로 LED 제어

학습 목표

실습준비물


1. 디지털입력제어: LED와 Switch 제어

1.1 하드웨어 구성

1.2 Sketch 프로그램

2. 다중 if-esle문을 이용한 디지털 제어

2.1 하드웨어 구성

2.2 Sketch 프로그램

- 완성된 Sketch 프로그램

/*
  4개의 스위치와 4개의 LED를 이용한 입출력 제어
  - 만약 2번 핀에 연결된 버튼이 눌러지면, 8번 핀에 연결된 LED를 ON
  - 만약 3번 핀에 연결된 버튼이 눌러지면, 9번 핀에 연결된 LED를 ON
  - 만약 4번 핀에 연결된 버튼이 눌러지면, 10번 핀에 연결된 LED를 ON
  - 만약 5번 핀에 연결된 버튼이 눌러지면, 11번 핀에 연결된 LED를 ON
  - 그렇지 않은 모든 경우에 모든 LED는 OFF
*/
int pin_SW[4] = {2,3,4,5};      // pin_SW 배열 선언 및 초기화
int pin_LED[4] = {8,9,10,11};   // pin_LED 배열 선언 및 초기화
int k;

void setup() {
  for (k=0; k<4; k++) {
    pinMode(pin_SW[k], INPUT);      // 핀 번호 pin_SW[k]를 입력으로 설정 
    pinMode(pin_LED[k], OUTPUT);    // 핀 번호 pin_LED[k]를 출력으로 설정
  }    
}

void loop() {
  if (digitalRead(pin_SW[0]) == 1) {        // 핀 번호 pin_SW[0]에 연결된 버튼이 눌러지면
    digitalWrite(pin_LED[0], HIGH);         // 핀 번호 pin_LED[0]에 연결된 LED를 ON
  } else if (digitalRead(pin_SW[1]) == 1) { // 핀 번호 pin_SW[1]에 연결된 버튼이 눌러지면
    digitalWrite(pin_LED[1], HIGH);         // 핀 번호 pin_LED[1]에 연결된 LED를 ON
  } else if (digitalRead(pin_SW[2]) == 1) { // 핀 번호 pin_SW[2]에 연결된 버튼이 눌러지면
    digitalWrite(pin_LED[2], HIGH);         // 핀 번호 pin_LED[2]에 연결된 LED를 ON
  } else if (digitalRead(pin_SW[3]) == 1) { // 핀 번호 pin_SW[2]에 연결된 버튼이 눌러지면
    digitalWrite(pin_LED[3], HIGH);         // 핀 번호 pin_LED[3]에 연결된 LED를 ON
  } else {                                  // 아무 버튼이 눌러지지 않은 경우, 모든 LED를 OFF
    for (k=0; k<4; k++) {
      digitalWrite(pin_LED[k], LOW);        
    }
  }
}

3. 실습과제

하드웨어 구성

기본 시작 코드

int pin_SW[4] = {2,3,4,5};
int pin_LED[4] = {8,9,10,11};
int k;

void setup() {
  for (k=0; k<4; k++) {
    pinMode(pin_SW[k], INPUT);
    pinMode(pin_LED[k], OUTPUT);
  } 
}

void loop() {
   // 이 부분에 코드를 추가 하세요. 
}

4. 연습과제

  1. 2.2절의 예제코드에서 스위치의 우선순위를 정하여 두 개 이상의 스위치가 동시에 눌려졌을 때 우선순위가 높은 스위치의 제어만 이루어지도록 스케치를 만들어 보자.

  2. 4개의 스위치를 사용하여 LED 4개가 모두 깜박이는 속도를 4단계로 조정하는 스케치를 만들어 보자.