학습 로그/Aduino

D+25 [아두이노] Arduino 입문 및 실습

goodjop79 님의 블로그 2026. 5. 12. 18:29

ㅇ 일 자 : 2026년 5월 12일(화)
ㅇ 내 용 : 아두이노(Arduino)입문 및 실습  
 
** 예제 : LED 신호등 만들기 (검색 및 찾아보기)
 
1. 하드웨어 구성(회로) 
   가. 먼저 아두이노 보드에 LED 3개를 각각 다른 핀에 연결해야 한다.
   나. Red LED: 디지털 13번 핀 (기본 LED_BUILTIN 대용)
   다. Yellow LED: 디지털 12번 핀
   라. Green LED: 디지털 11번 핀
** 각 LED에는 220Ω ~ 330Ω 저항을 연결하여 과전류를 방지해야 한다.
 
2. 코드 수정 방향  
   가.  LED_BUILTIN 하나만 제어하던 방식에서, 3개의 핀을 각각 정의, 순차적으로 HIGH/LOW 신호를 주는 방식으로 수정한다.
   나. 핀 모드 선언 추가: setup() 함수 안에서 사용할 모든 핀을 pinMode(핀번호, OUTPUT);으로 선언해야 한다.
   다. 상태 관리: 특정 색상의 불이 켜질 때, 이전에 켜져 있던 다른 색상의 불을 LOW로 꺼주는 과정이 포함되어야 신호등처럼 동작
   라. 지연 시간(delay) 조절: 실제 신호등처럼 초록색과 빨간색은 길게, 노란색은 짧게 설정

// 첫번째 방법(단계별)

// 사용할 LED가 연결된 아두이노 디지털 핀 번호 설정
int red = 13;    // 빨간색 LED: 13번 핀
int yellow = 12; // 노란색 LED: 12번 핀
int green = 11;  // 초록색 LED: 11번 핀

void setup() {
  // 각 핀을 '출력(OUTPUT)' 모드로 설정하여 전기를 보낼 준비를 합니다.
  pinMode(red, OUTPUT);
  pinMode(yellow, OUTPUT);
  pinMode(green, OUTPUT);
}

void loop() {
  // --- 1단계: 빨간불 점등 ---
  digitalWrite(red, HIGH);    // 빨간 LED 켜기
  digitalWrite(yellow, LOW);  // 노란 LED 끄기
  digitalWrite(green, LOW);   // 초록 LED 끄기
  delay(3000);                // 3초(3000ms) 동안 현재 상태 유지

  // --- 2단계: 노란불 점등 ---
  digitalWrite(red, LOW);     // 빨간 LED 끄기
  digitalWrite(yellow, HIGH); // 노란 LED 켜기
  digitalWrite(green, LOW);   // 초록 LED 끄기
  delay(1000);                // 1초(1000ms) 동안 현재 상태 유지

  // --- 3단계: 초록불 점등 ---
  digitalWrite(red, LOW);     // 빨간 LED 끄기
  digitalWrite(yellow, LOW);  // 노란 LED 끄기
  digitalWrite(green, HIGH);  // 초록 LED 켜기
  delay(3000);                // 3초(3000ms) 동안 현재 상태 유지
  
  // loop 함수가 끝나면 다시 처음(1단계)으로 돌아가 무한 반복합니다.
}
// C++언어
// 두번째 방법 (조건문) 

// 신호등의 현재 상태를 저장하는 변수
// 0: 빨간불(Stop), 1: 노란불(Wait), 2: 초록불(Go)
int state = 0; 

void loop() {
  // [상태 0] 빨간불 점등 모드
  if (state == 0) {
    digitalWrite(red, HIGH);    // 빨간 LED 켜기
    digitalWrite(yellow, LOW);  // 노란 LED 끄기
    digitalWrite(green, LOW);   // 초록 LED 끄기
    
    delay(3000);                // 3초 동안 대기
    state = 1;                  // 다음 상태(노란불)로 변경
  }
  
  // [상태 1] 노란불 점등 모드
  else if (state == 1) {
    digitalWrite(red, LOW);     // 빨간 LED 끄기
    digitalWrite(yellow, HIGH); // 노란 LED 켜기
    digitalWrite(green, LOW);   // 초록 LED 끄기
    
    delay(1000);                // 1초 동안 대기 (주의 신호이므로 짧게)
    state = 2;                  // 다음 상태(초록불)로 변경
  }
  
  // [상태 2] 초록불 점등 모드
  else if (state == 2) {
    digitalWrite(red, LOW);     // 빨간 LED 끄기
    digitalWrite(yellow, LOW);  // 노란 LED 끄기
    digitalWrite(green, HIGH);  // 초록 LED 켜기
    
    delay(3000);                // 3초 동안 대기
    state = 0;                  // 다시 처음 상태(빨간불)로 순환
  }
}

 

아두이노 LED 세 개의 신호등 만들기 (회로)

 

** 참고 : 사용 함수 코드

 


3.  학습 후기 
    아두노이 우선 용어부터 생소하고 낯설은 단어, 그러나 교재를 참고하고, 교육내용을 토대로 회로를 연결해서  화면에 불이 깜빡임을 확인했다. 그러나 "C언어 코드" 작성은 비전공자에겐 생소하기도 하고, 사용하는 주석기호도 달라서 검색해서 찾아보고 참고도 해 보았다.  새로운 것을 접할때 마다 느끼는 것이지만 진로탐색을 다시한번 고민하게 된다. 이제는 코드 해석이 좀더 익숙해졌고, 이해도가 높아졌다면 외우지 않은 코드들은 작성하기 난감해서 검색하고 찾아보게 된다.
  소스코드는 계속 반복해 보는 수 밖에 없다.
개발과정에는 개발자, 디자이너, PM, 기획자 등 다양한 직군이 있음에 무엇이 적성에 맞는지, 급변하는 AI시대에 개발자에게는 공부해야 할 부분이 아주 많음을 다시한번 느끼게 된다.