코드 검색

레슨 98-7: 아두이노와 5개의 LED를 사용한 워킹 라이트

레슨 98-7: 아두이노와 5개의 LED를 사용한 워킹 라이트

워킹 라이트(‘추격’ 또는 ‘나이트 라이더’ 라이트라고도 함)는 고전적인 초보자용 아두이노 프로젝트 중 하나이며, 그럴 만한 이유가 있습니다. 이 프로젝트는 여러 출력을 순차적으로 제어하는 방법, 이벤트 타이밍을 맞추는 방법, 그리고 전류 제한 저항에 대해 생각하는 방법을 가르쳐 주면서 동시에 시각적으로 만족스러운 결과물을 만들어 냅니다. 이 프로젝트에서는 5개의 LED를 아두이노에 연결하고, 각 LED가 차례로 켜지도록 프로그래밍하여 하나의 빛이 줄을 따라 ‘걸어가는’ 듯한 착시를 만들어냅니다.

5 leds on breadboard with resistor shown connected to Arduino UNO
5 leds on breadboard with resistor shown connected to Arduino UNO

패턴을 이해하고 나면, 놀라울 정도로 많은 실제 제작물에 이를 응용할 수 있습니다:

  • 장식 조명: 선반, 액자 또는 모형을 위한 추격 테두리.
  • 방향 표시기: 소품 차량이나 전기 자전거를 위한 순차 방향지시등 효과.
  • 진행 또는 상태 표시: 프로세스가 완료됨에 따라 진행되는 LED 행.
  • 게임 및 점수판 소품: ‘움직이는 표적’ 또는 레벨 표시기.
  • 교육 보조 자료: 디지털 출력과 타이밍을 가장 명확하게 보여주는 시연.

동일한 5-LED 배선은 이 과정의 여러 다른 프로젝트에서 재사용되므로, 여기서 만드는 하드웨어는 재사용 가능한 플랫폼이 됩니다.

워킹 라이트의 작동 원리

원리는 단일 LED를 켜는 것과 정확히 같습니다 — 단지 이를 다섯 번 반복할 뿐입니다(영상 30:47). 각 LED는 자체 전류 제한 저항을 통해 자체 아두이노 핀에 연결되며, 모든 저항은 공통 접지 레일을 공유합니다. 그런 다음 스케치는 한 핀을 HIGH로 만들고, 기다린 뒤, LOW로 만들고, 다시 기다린 다음, 다음 핀으로 이동합니다. 한 번에 하나의 LED만 켜지기 때문에 눈은 이 순서를 움직임으로 인식합니다.

두 가지 타이밍 값이 이 효과의 성격을 결정합니다. 켜짐 시간은 각 LED가 켜져 있는 시간을 제어하고, 꺼짐 시간은 다음 LED가 켜지기 전의 간격을 제어합니다. 짧은 켜짐 시간과 긴 꺼짐 시간은 빠르게 이동하는 단일 점을 만들어내고, 긴 켜짐 시간과 짧은 꺼짐 시간은 더 부드럽고 연속적인 흐름을 만들어냅니다(영상 35:00).

하드웨어 및 부품

  • 1 × 아두이노 보드 (Uno, Nano 또는 유사품)
  • 5 × LED (색상은 무관하며, 색을 섞으면 효과를 읽기 더 쉽습니다)
  • 5 × 저항 — 300 Ω에서 1 kΩ가 잘 작동합니다
  • 1 × 브레드보드
  • 점퍼 와이어
  • 전원용 USB 케이블 또는 배터리 팩

나중에 푸시 버튼 변형을 추가하려면 순간 푸시 버튼 1개와 추가 점퍼 와이어 2개도 필요합니다.

저항 값 선택하기

LED는 약 2 V의 순방향 전압을 가지며 최대 밝기를 위해 약 10 mA를 필요로 합니다(영상 03:49). 5 V 전원을 사용하면 저항이 나머지 3 V를 떨어뜨려야 합니다. 옴의 법칙을 적용하면 R = V / I = 3 V / 0.01 A = 300 Ω입니다. 실제로는 300 Ω에서 약 1 kΩ까지 무엇이든 작동합니다 — 저항이 높을수록 LED는 어두워지지만 회로는 더 안전하고 효율적입니다(영상 05:33).

Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button

배선 가이드

wiring of 5 LED on Arduino
wiring of 5 LED on Arduino

5개의 LED를 애노드(더 긴 다리)가 같은 방향을 향하도록 브레드보드에 삽입합니다. 각 캐소드(더 짧고 평평한 면이 있는 다리)를 자체 저항에 연결하고, 다섯 저항의 반대쪽 끝을 모두 공통 접지 레일에 연결합니다. 그런 다음 각 애노드에서 아두이노 핀으로 점퍼를 연결합니다.

이 제작에서는 LED가 핀 3, 4, 5, 6, 7에 할당됩니다(영상 31:29). 핀 번호는 스케치 상단에 정의되어 있으므로, 다른 배치를 선호한다면 그 다섯 줄만 변경하면 됩니다.

코드 설명

스케치는 초보자가 모든 줄을 따라갈 수 있도록 의도적으로 단순합니다. 맨 위의 블록만 자신의 설정에 맞게 편집하면 됩니다.

const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;
int offTime = 30;  // the time each LED waits in the OFF state
int onTime = 100;  // the time each LED is ON

핀 정의. 다섯 개의 const int 줄은 각 LED를 실제 아두이노 핀에 매핑합니다. 이들은 const로 선언되므로 프로그램 후반부에서 값을 변경할 수 없습니다 — 이는 실수로 재할당하는 것을 방지하는 안전 습관입니다. LED를 다른 핀에 배선한다면 여기의 숫자만 변경하고 다른 것은 바꾸지 마세요.

onTime 및 offTime. 이 두 정수는 프로젝트에서 유일한 ‘동작’ 변수이며, 여러분이 실험해 보고 싶어 할 값입니다:

  • onTime — 각 LED가 켜져 있는 시간(밀리초)입니다. 값이 클수록 각 단계가 더 느리고 더 신중하게 느껴집니다.
  • offTime — LED가 꺼진 후 다음 LED가 켜지기 전까지의 일시 정지 시간입니다. 값이 작을수록 빛이 더 빠르게 이동합니다.

균일한 중간 속도의 추적을 원하면 onTime = 200offTime = 200을 사용해 보고, 매우 빠르고 거의 흐릿한 효과(36:06의 영상)를 원하면 onTime = 30offTime = 30을 사용해 보세요.

setup() 함수는 한 번 실행되며 단순히 다섯 개의 핀을 모두 OUTPUT 모드로 설정합니다. 그런 다음 loop() 함수는 각 LED에 대해 동일한 4단계 패턴을 반복합니다. 핀을 HIGH로 구동하고, onTime 동안 기다린 후, LOW로 구동하고, offTime 동안 기다립니다. 다섯 번째 LED가 끝나면 루프는 첫 번째부터 다시 시작하여 끝없는 이동을 만들어냅니다.

실시간 프로젝트 및 데모

기본값에서는 LED가 여유로운 속도로 행을 따라 이동합니다. onTimeoffTime을 200ms로 설정한 스케치를 업로드하면 안정적이고 균일한 행진을 볼 수 있으며, 둘 다 30ms로 줄이면 빛이 거의 따라가기 어려울 정도로 빠르게 행을 가로질러 이동합니다(36:21의 영상).

작동한 후 시도해 볼 수 있는 두 가지 유용한 실험:

  • 켜지는 시간을 꺼지는 시간보다 짧게 만들어 뚜렷하게 이동하는 점을 만드세요.
  • 켜지는 시간을 꺼지는 시간보다 길게 만들어 부드럽게 겹치는 빛을 만드세요.

동일한 5개 LED 배선은 다음 프로젝트에서 재사용되며, 여기서는 푸시 버튼이 빛을 한 번에 한 단계씩 진행시킵니다. 해당 빌드는 Lesson 98-8: Walking Light with Push Button and LEDs with Arduino에서 다룹니다.

버튼 대신 아날로그 입력으로 행을 구동하고 싶다면 Lesson 98-9: LED Voltage Level Meter Using Arduino or walking light with potentiometer를 참조하세요.

더 나아가기

기본적인 이동이 작동하면 자연스러운 다음 단계는 마지막 LED에서 첫 번째로 점프하는 대신 빛이 앞뒤로 튕기게 만드는 것입니다. 이는 순수한 코드 연습이며 추가 하드웨어가 필요 없고, 루프와 배열을 연습하기에 좋은 방법입니다. 또한 이 프로젝트를 푸시 버튼 버전과 결합하여 수동으로 진행되는 디스플레이를 만들 수도 있습니다.

이 영상의 관련 프로젝트

챕터

  • [00:00] 열 가지 LED 프로젝트 개요
  • [01:22] Arduino 단계별 과정 소개
  • [02:29] LED란 무엇이며 핀을 식별하는 방법
  • [03:49] 전류 제한 저항 계산
  • [30:47] 워킹 라이트 프로젝트 소개
  • [31:06] 5개 LED 배선도
  • [32:52] 워킹 라이트 코드 설명
  • [34:39] 데모 및 타이밍 값 변경
  • [36:41] 푸시 버튼으로 빛 진행하기(별도 튜토리얼)
  • [42:25] 포텐셔미터를 사용한 LED 전압 바(별도 튜토리얼)
  • [49:25] Arduino 신호등(별도 튜토리얼)

이미지

wiring of 5 LED on Arduino
wiring of 5 LED on Arduino
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
저항이 있는 브레드보드 위의 5개 LED가 Arduino UNO에 연결된 모습
저항이 있는 브레드보드 위의 5개 LED가 Arduino UNO에 연결된 모습
939-Lessson 98-LED-7: Arduino code walking LED light
언어: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

파일📁

아두이노 라이브러리 (zip)

사용자 매뉴얼