[아두이노] LED Shield, Switch Shield를 이용한 LED, Switch 제어 실습

김우경·2021년 4월 8일
0

아두이노

목록 보기
5/9
post-thumbnail

이번엔 LED Shield, Switch Shield를 이용해서 입력, 출력에 대한 제어 실습을 해보려고 합니다.

이전 환경설정에 맞추어 준비해줍니다.

디지털 출력과 LED 제어

우선 LED Shield를 이용해서 디지털 출력을 해보겠습니다.

LED Shield

  • 총 8개의 LED로 구성
  • P1~P8에 LED가 각각 연결
    -> 이를 Arduino UNO의 Digital Port 5~12에 각각 연결
  • Arduino UNO의 Digital Port에 LOW 인가하면 -> ON
  • Arduino UNO의 Digital Port에 HIGH 인가하면 -> OFF

아두이노와 연결하기


위의 그림과 같이 연결해주면 됩니다!

1번 LED ON&OFF

맞게 연결되었나 확인하기 위해서 1번 LED를 ON&OFF하는 간단한 실습을 진행해보았습니다.

void setup() {
  // 5번 Digital Port를 디지털 출력으로 설정
  pinMode(5, OUTPUT);

}

void loop() {
  // digital port 5에 low 인가 -> ON
  digitalWrite(5,0);
  delay(1000);
  
  // digital port 5에 high 인가 -> OFF
  digitalWrite(5,1);
  delay(1000);

  while(false);

}


위와 같이 코드를 작성하고 컴파일-> 업로드 하면 !

1초 단위로 1번 LED가 깜빡이는것을 확인할 수 있습니다. ㅎㅎ....

예제 코드

이를 응용하면 원하는 순서대로 LED를 ON/OFF 시키는 등의 제어가 가능합니다.
아래 코드는 LED를 5->9->6->10->7->11->8->12의 순서로 ON시키는 코드입니다.

void setup() {
  // digital port 5번부터 12번까지 디지털 출력으로 설정:
  for(int i=5; i<13; i++){
    pinMode(i, OUTPUT);
  }
}

void loop() {
  // default OFF 상태로 만들기
  for(int i=5; i<13; i++){
    digitalWrite(i, 1);
  }
  // 주어진 순서대로 on하기 
  int arr[8] = {5, 9, 6, 10, 7, 11, 8, 12};
  for(int i=0; i<8; i++) {
    digitalWrite(arr[i], 0);
    delay(500);
  }
}

디지털 입력과 스위치 제어

이번에는 Switch Shield를 이용해서 digital 신호의 0,1을 받아보겠습니다.

Switch Shield

  • 총 8개의 푸쉬 스위치로 구성
  • P1~P8에 switch가 각각 연결
    -> 이를 Arduino UNO의 Digital Port 5~12에 각각 연결

아두이노와 연결하기

위의 LED shield와 같은 방법으로 연결!

1번 스위치 입력받기

void setup() {
  Serial.begin(9600);
  // 5 port를 input mode로 
  pinMode(5, INPUT);
}

void loop() {
  if (digitalRead(5) == LOW) {
    Serial.println("Button 1 is on");
  }
  delay(200);
}


1번 스위치 누를때마다 맞게 출력된다.
마찬가지로 응용가능. ,

void setup() {
  Serial.begin(9600);
  // 5~12 port를 input mode로 
  for (int i=5; i<13; i++) {
    pinMode(i, INPUT);
  }
}

void loop() {
  for (int i=5; i<13; i++) {
    if (digitalRead(i) == LOW) {
      Serial.print("Button ");
      Serial.print(i-4);
      Serial.println(" is on");
    }
  }
  delay(200);
}

delay(200)을 한 이유는 스위치 누르는 시간 동안 모두 루프를 돌아서 적당히 0.2초 정도의 delay를 줬습니다.

앞으로 LED & Switch Shield, 7-Segment Shield 등 다양한 실드로 실습해보겠습니다,,

뚝딱뚝딱 만드니까 진짜 공대생된거같고,, 마치 논리회로 듣던 2학년때로 돌아간 것 같아서 즐거운 아두이노 시간 ,,~

profile
Hongik CE

0개의 댓글