본문 바로가기
아두이노

아두이노 시리얼 통신을 활용한 LED 제어 프로젝트

by 모빌리티키즈 2025. 5. 8.
728x90
반응형

아두이노(Arduino)를 활용하여 LED를 제어하는 방법 중 하나는 시리얼 통신을 이용하는 것입니다. 이 방식은 컴퓨터와 아두이노 간의 데이터 전달을 통해 LED를 제어할 수 있도록 해줍니다. 본 글에서는 아두이노에서 시리얼 입력을 받아 LED를 ON/OFF하는 기본적인 회로 및 소스 코드를 설명해 보겠습니다.

1. 프로젝트 개요

이 프로젝트에서는 사용자가 키보드 입력(숫자 1~4)을 통해 특정 LED를 3초간 켜고 자동으로 끄는 기능을 구현합니다.

2. 필요한 부품

  • 아두이노 보드 (Uno, Mega 등)
  • LED 4개
  • 저항 4개 (220Ω)
  • 점퍼 와이어
  • 브레드보드

3. 회로 구성 방법

회로 연결 방법

  1. LED 연결:
    • 각 LED의 양극(긴 다리, +)을 아두이노의 디지털 핀(8,9,10,11번 핀)에 연결합니다.
    • 각 LED의 음극(짧은 다리, -)을 저항을 거쳐 GND(접지)에 연결합니다.
  2. 시리얼 통신 설정:
    • 아두이노의 USB 케이블을 통해 컴퓨터와 연결하여 시리얼 모니터를 사용합니다.
    • 사용자는 아두이노 시리얼 모니터에서 1, 2, 3, 4를 입력하여 특정 LED를 켜고 끌 수 있습니다.

회로도 예시

 
        [LED1]  --- [저항] --- (핀 8)   
        [LED2]  --- [저항] --- (핀 9)   
        [LED3]  --- [저항] --- (핀 10)  
        [LED4]  --- [저항] --- (핀 11)  
                           |   
                         (GND)

 

> 위의 연결을 통해 각 LED를 아두이노 핀으로 제어할 수 있습니다.

4. 소스 코드 설명

다음은 아두이노 코드입니다. 사용자가 숫자를 입력하면 해당 LED가 켜지고, 3초 후 자동으로 꺼집니다.

 
int pinLED[4] = {8, 9, 10, 11}; // LED를 제어할 핀 배열
int k;

void setup() {
  Serial.begin(9600); // 시리얼 통신 속도 설정
  for (k = 0; k < 4; k++) {
    pinMode(pinLED[k], OUTPUT); // 각 핀을 출력 모드로 설정
  }
  Serial.println("Enter 1, 2, 3, 4!"); // 사용자에게 입력을 안내
}

void loop() {
  if (Serial.available()) { // 입력이 들어왔을 때만 실행
    char select = Serial.read(); // 입력 값을 읽음
    Serial.print("Select Number=");
    Serial.println(select); // 입력 값 출력

    switch (select) {
      case '1':
        digitalWrite(pinLED[0], HIGH); // LED 켜기
        delay(3000); // 3초 대기
        digitalWrite(pinLED[0], LOW); // LED 끄기
        break;
      case '2':
        digitalWrite(pinLED[1], HIGH);
        delay(3000);
        digitalWrite(pinLED[1], LOW);
        break;
      case '3':
        digitalWrite(pinLED[2], HIGH);
        delay(3000);
        digitalWrite(pinLED[2], LOW);
        break;
      case '4':
        digitalWrite(pinLED[3], HIGH);
        delay(3000);
        digitalWrite(pinLED[3], LOW);
        break;
      default:
        for (k = 0; k < 4; k++) {
          digitalWrite(pinLED[k], LOW); // 입력이 잘못된 경우 모든 LED 끄기
        }
        break;
    }
  }
}

코드 설명

  • Serial.begin(9600); → 컴퓨터와 아두이노 간의 통신 속도를 설정합니다.
  • Serial.available() → 새로운 입력이 있는지 확인합니다.
  • Serial.read(); → 사용자가 입력한 값을 가져옵니다.
  • switch-case 문을 사용하여 입력값(1~4)에 따라 특정 LED를 켜고 3초 후 꺼집니다.
  • digitalWrite(pin, HIGH); → 해당 핀의 LED를 켭니다.
  • digitalWrite(pin, LOW); → LED를 끕니다.
  • delay(3000); → LED가 켜진 후 3초 동안 유지됩니다.

5. 실행 결과

(1) 아두이노 시리얼 모니터에서 숫자 입력

 
Enter 1, 2, 3, 4!  
Select Number=2  

(2) 해당 LED가 3초 동안 켜졌다가 자동으로 꺼짐

💡 사용자가 '2'를 입력하면 2번 LED가 3초 동안 켜지고 꺼지는 방식으로 작동합니다.

6. 마무리

이번 프로젝트에서는 아두이노의 시리얼 통신을 활용하여 LED를 제어하는 방법을 살펴보았습니다. 이 코드를 응용하면 다양한 센서 및 액추에이터(모터 등)를 연동하여 더 복잡한 기능도 구현 가능합니다! 😊

다음 프로젝트는 센서와 LED를 연계하는 방식으로 발전시켜 볼 수도 있겠네요. 더 궁금한 점이 있으면 언제든지 알려주세요! 🚀

728x90
반응형