코드 검색

레슨 98-8: 아두이노로 푸시 버튼과 LED를 사용한 워킹 라이트

레슨 98-8: 아두이노로 푸시 버튼과 LED를 사용한 워킹 라이트

이 프로젝트는 푸시 버튼을 누를 때마다 한 단계씩 진행되는 "워킹 라이트"를 만드는 방법을 보여줍니다. 자체 타이머로 실행되는 조명 대신, 직접적이고 촉각적인 제어를 얻을 수 있습니다. 각 버튼 누름은 켜진 LED를 한 위치 앞으로 이동시키고, 마지막 LED 이후에는 다시 첫 번째로 돌아갑니다. 이것은 Arduino 학습에서 가장 유용한 구성 요소 중 하나인데, 디지털 입력(버튼)과 순환 상태 머신(현재 어떤 LED가 켜져 있는지)을 결합하는 방법을 가르쳐 주기 때문입니다 — 이 패턴은 계속해서 재사용하게 될 것입니다.

5 leds on breadboard with push button shown connected to Arduino UNO
Arduino UNO에 연결된 푸시 버튼과 브레드보드 위의 5개 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).

배선 가이드

Schematic for Arduino walking light LEDs
Arduino 워킹 라이트 LED 회로도
wiring for Arduino walking light LEDs with push button
푸시 버튼이 있는 Arduino 워킹 라이트 LED 배선

배선은 기본적으로 표준 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에서 다룹니다.

이 영상의 관련 프로젝트

챕터

  • [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] 맺음말 및 과정 아웃트로

이미지

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

파일📁

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

사용자 매뉴얼