레슨 98-8: 아두이노로 푸시 버튼과 LED를 사용한 워킹 라이트
이 프로젝트는 푸시 버튼을 누를 때마다 한 단계씩 진행되는 "워킹 라이트"를 만드는 방법을 보여줍니다. 자체 타이머로 실행되는 조명 대신, 직접적이고 촉각적인 제어를 얻을 수 있습니다. 각 버튼 누름은 켜진 LED를 한 위치 앞으로 이동시키고, 마지막 LED 이후에는 다시 첫 번째로 돌아갑니다. 이것은 Arduino 학습에서 가장 유용한 구성 요소 중 하나인데, 디지털 입력(버튼)과 순환 상태 머신(현재 어떤 LED가 켜져 있는지)을 결합하는 방법을 가르쳐 주기 때문입니다 — 이 패턴은 계속해서 재사용하게 될 것입니다.
이 패턴을 이해하고 나면, 동일한 로직이 다양한 실제 프로젝트를 구동합니다. 다음은 이를 활용해 만들 수 있는 몇 가지 실용적인 아이디어입니다:
- 각 버튼 누름이 다음 옵션을 강조 표시하는 기기의 메뉴 선택기.
- 기계나 프로세스를 위한 순차 단계 표시기(1단계, 2단계, 3단계...).
- 버튼으로 수동으로 진행하는 점수 또는 레벨 표시.
- 조명 컨트롤러용 "다음 채널" 또는 "다음 모드" 표시기.
- 플레이어가 번갈아 가며 다음 램프를 켜는 간단한 게임 또는 퀴즈 버저.
- 각 버튼 누름이 다음 출력을 순서대로 활성화하는 릴레이 또는 부하 시퀀서.
자동으로 실행되는 라이트에 비해 가장 큰 장점은 제어입니다. 버튼을 누르기 전까지는 아무 일도 일어나지 않으므로, 여러분이 결정할 때만 조명이 진행됩니다. 이 영상은 또한 동일한 토글 및 시퀀싱 아이디어가 LED뿐만 아니라 릴레이를 구동하여 AC 조명을 켜거나 모터를 제어할 수 있다고 언급합니다(영상 19:52).
하드웨어 및 부품
부품 목록은 짧고 저렴합니다:
- Arduino 보드(Uno, Nano, Mega 또는 호환 보드).
- 5개의 LED — 5 mm 또는 3 mm, 원하는 색상.
- 5개의 전류 제한 저항, 200 Ω에서 1000 Ω(영상에서는 1 kΩ 사용).
- 푸시 버튼 스위치 1개(순간 접점 택타일 스위치가 이상적).
- 브레드보드와 몇 개의 듀폰 점퍼 와이어.
LED에 대한 간단한 참고: 캐소드는 더 짧은 다리이자 평평한 가장자리가 있는 쪽이고, 애노드는 더 긴 다리입니다(영상 03:13). 저항 값은 중요하지 않습니다 — 저항이 클수록 LED가 어두워질 뿐이므로 약 300 Ω에서 1000 Ω 사이면 잘 작동합니다(영상 05:33).
배선 가이드
배선은 기본적으로 표준 5-LED 워킹 라이트와 동일하며, 푸시 버튼 하나가 추가됩니다. 각 LED의 애노드는 자체 Arduino 핀에 연결되고, 각 캐소드는 자체 저항을 통해 브레드보드의 공통 접지 레일에 연결됩니다. 이 빌드에서 LED는 핀 3, 4, 5, 6, 7에 연결됩니다(영상 31:37). 푸시 버튼은 한쪽 다리를 접지에, 다른 쪽 다리를 핀 2에 연결하여 브레드보드에 배치됩니다 — 코드에서 버튼에 사용하는 것과 동일한 핀입니다(영상 37:04).
코드가 Arduino의 내부 풀업 저항을 활성화하므로 버튼에 외부 저항이 필요하지 않습니다. 버튼을 누르지 않으면 핀은 HIGH를 읽고, 버튼을 누르면 핀이 접지로 당겨져 LOW를 읽습니다(영상 14:02).
코드 설명
전체 프로그램은 이 글 아래에서 확인할 수 있습니다. 여기서는 실제로 변경하고 싶을 부분에 초점을 맞춥니다.
스케치 상단에서 각 LED와 버튼이 핀에 할당됩니다. 여기에서 자신의 배선에 맞게 빌드를 사용자 정의합니다:
const int pushButtonPin = 2; // push button pin
const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;
int LED_ON = LED1; // which LED is currently lit
LED_ON 변수는 이 프로젝트의 핵심입니다. 현재 어떤 LED가 켜져 있는지 기억하며, LED1에서 시작합니다. 버튼을 누를 때마다 코드는 LED_ON을 시퀀스의 다음 LED로 진행시키고 이전 LED를 끄므로, 한 번에 하나의 LED만 켜져 있습니다.
또한 각 버튼 누름 후에 약간의 지연이 있습니다:
delay(200); // debounce / give the user time between presses
이 200 밀리초의 일시 정지는 한 번의 물리적 누름이 여러 번의 누름으로 등록되는 것을 방지합니다. 손가락이 떨리거나 버튼이 너무 민감하게 느껴지면 이 숫자를 늘리세요. 더 빠른 응답을 원하면 줄이세요. 너무 낮게 설정하면 조명이 예기치 않게 건너뛸 수 있다는 점에 유의하세요(영상 41:20).
주요 로직은 loop()에 있습니다. 버튼을 읽고, 버튼이 눌렸을 때(즉, LOW를 읽을 때)만 불을 다음으로 진행시킵니다. 시퀀스는 if / else if 검사 체인을 사용하여 LED1에서 LED2, LED3 등으로 이동하고, 마지막 다음에는 다시 LED1로 돌아옵니다. 방향이나 LED 순서를 바꾸고 싶다면 바로 이 블록을 편집하면 됩니다 — 어떤 핀 다음에 어떤 핀이 오는지만 다시 지정하면 됩니다.
실시간 프로젝트 및 시연
코드를 업로드한 뒤 버튼을 누르면 첫 번째 LED가 켜지고, 버튼에서 손을 떼도 그 LED는 켜진 상태로 유지됩니다. 다음 번 누르면 불이 두 번째 LED로 이동하고, 그다음에는 세 번째, 네 번째, 다섯 번째로 이동하며, 그다음 누르면 다시 첫 번째로 돌아갑니다 — 즉 연속 회전입니다(영상 40:22).
200 밀리초 지연의 좋은 부작용은 버튼을 계속 누르고 있으면 불이 200 밀리초마다 스스로 계속 진행되어, 버튼을 누르고 있는 동안 사실상 이 프로젝트를 자동 워킹 라이트로 바꿔 준다는 점입니다(영상 42:07). 버튼에서 손을 떼면 현재 LED에서 멈춥니다. 이렇게 하면 버튼 하나로 수동 스텝과 핸즈프리 실행을 모두 얻을 수 있습니다.
버튼 없이 불이 자동으로 계속 실행되게 하고 싶다면 그것은 별도의 구성입니다. 자동 버전은 Lesson 98-7: Walking Light Using Arduino and 5 LEDs에서 다룹니다.
이 영상의 관련 프로젝트
- 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-7: Walking Light Using Arduino and 5 LEDs
- Lesson 98-9: LED Voltage Level Meter Using Arduino or walking light with potentiometer
- Lesson 98-10: Arduino Traffic Light
챕터
- [00:00] 10가지 Arduino LED 프로젝트 개요
- [01:22] Arduino 단계별 과정 소개
- [02:29] LED 이해: 기호, 극성 및 핀
- [03:49] LED 전류 제한 저항 계산
- [30:47] 5개 LED로 워킹 라이트: 배선 및 원리
- [32:52] 워킹 라이트 코드: 핀, 타이밍 및 루프
- [36:41] 푸시 버튼으로 불 진행시키기
- [37:44] 푸시 버튼이 있는 워킹 라이트: 코드 해설
- [40:22] 시연 및 누름 지연 조정
- [57:16] 맺음말 및 과정 아웃트로
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