레슨 98-7: 아두이노와 5개의 LED를 사용한 워킹 라이트
워킹 라이트(‘추격’ 또는 ‘나이트 라이더’ 라이트라고도 함)는 고전적인 초보자용 아두이노 프로젝트 중 하나이며, 그럴 만한 이유가 있습니다. 이 프로젝트는 여러 출력을 순차적으로 제어하는 방법, 이벤트 타이밍을 맞추는 방법, 그리고 전류 제한 저항에 대해 생각하는 방법을 가르쳐 주면서 동시에 시각적으로 만족스러운 결과물을 만들어 냅니다. 이 프로젝트에서는 5개의 LED를 아두이노에 연결하고, 각 LED가 차례로 켜지도록 프로그래밍하여 하나의 빛이 줄을 따라 ‘걸어가는’ 듯한 착시를 만들어냅니다.
패턴을 이해하고 나면, 놀라울 정도로 많은 실제 제작물에 이를 응용할 수 있습니다:
- 장식 조명: 선반, 액자 또는 모형을 위한 추격 테두리.
- 방향 표시기: 소품 차량이나 전기 자전거를 위한 순차 방향지시등 효과.
- 진행 또는 상태 표시: 프로세스가 완료됨에 따라 진행되는 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).
배선 가이드
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 = 200과 offTime = 200을 사용해 보고, 매우 빠르고 거의 흐릿한 효과(36:06의 영상)를 원하면 onTime = 30과 offTime = 30을 사용해 보세요.
setup() 함수는 한 번 실행되며 단순히 다섯 개의 핀을 모두 OUTPUT 모드로 설정합니다. 그런 다음 loop() 함수는 각 LED에 대해 동일한 4단계 패턴을 반복합니다. 핀을 HIGH로 구동하고, onTime 동안 기다린 후, LOW로 구동하고, offTime 동안 기다립니다. 다섯 번째 LED가 끝나면 루프는 첫 번째부터 다시 시작하여 끝없는 이동을 만들어냅니다.
실시간 프로젝트 및 데모
기본값에서는 LED가 여유로운 속도로 행을 따라 이동합니다. onTime과 offTime을 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에서 첫 번째로 점프하는 대신 빛이 앞뒤로 튕기게 만드는 것입니다. 이는 순수한 코드 연습이며 추가 하드웨어가 필요 없고, 루프와 배열을 연습하기에 좋은 방법입니다. 또한 이 프로젝트를 푸시 버튼 버전과 결합하여 수동으로 진행되는 디스플레이를 만들 수도 있습니다.
이 영상의 관련 프로젝트
- Lesson 98-1: How to Turn On and Off an LED with Arduino
- Lesson 98-2: How to Turn On and Off an LED Using a Push Button with Arduino
- Lesson 98-3: How to Turn On/Off a Toggle LED Using a Push Button with Arduino
- Lesson 98-4: Fading an LED Light Using Arduino: Brightness Control
- Lesson 98-5: Fade Light When a Button Is Pressed Using Arduino
- Lesson 98-6: Seesaw LED Game with Arduino
- 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
- Lesson 98-10: Arduino Traffic Light
챕터
- [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 신호등(별도 튜토리얼)
This code has not been parsed yet. Please return to the admin panel to parse it.
필요할 수 있는 것들
-
아마존SunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
아마존
-
아마존
자원 및 참고자료
-
문서화Documentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
파일📁
아두이노 라이브러리 (zip)
-
SunFounder 3-in-1 스마트 카 학습 키트 소스 코드
3in1-kit-main-v2.zip12.80 MB
사용자 매뉴얼
-
SunFounder 3-in-1 Arduino 스마트 카 조립 설명서이 문서는 SunFounder 3-in-1 Arduino 스마트 카의 단계별 조립을 보여줍니다.
SunFounder_car_assembly_manual.pdf1.20 MB