라즈베리 파이 LED 페이드

이 튜토리얼은 Raspberry Pi로 LED를 페이드하는 프로그래밍 방법을 안내합니다. 세 가지 예제를 살펴보고 그 차이점을 비교할 것입니다:

Hardware Preparation

1×Raspberry Pi 4 Model B Amazon
1×LED Kit with resistor Amazon
1×LED (red) Amazon
1×220 ohm resistor Amazon
1×Breadboard 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(추천) Screw Terminal Block Shield for Raspberry Pi 쿠팡 | Amazon
1×(추천) USB-C Power Cable with On/Off Switch for Raspberry Pi 4B Amazon
1×(추천) Plastic Case and Cooling Fan for Raspberry Pi 4B Amazon
1×(추천) HDMI Touch Screen Monitor for Raspberry Pi Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

LED에 대하여

LED 핀 배치

LED에는 두 개의 핀이 있습니다:

  • 음극(-) 핀은 GND(0V)에 연결해야 합니다.
  • 양극(+) 핀은 LED의 상태를 제어하는 데 사용됩니다.
LED 핀아웃

작동 방식

캐소드(-)가 GND에 연결되면:

  • GND를 양극(+)에 연결하면 LED가 꺼집니다.
  • VCC를 양극(+)에 연결하면 LED가 켜집니다.
  • 양극(+)에 PWM 신호를 생성하면 PWM 값에 따라 LED의 밝기가 조절됩니다. 이 값은 0부터 255까지의 범위를 가지며, 값이 높을수록 LED는 더 밝아지고 값이 낮을수록 더 어두워집니다.
  • PWM 값이 0이면 이는 GND와 동일하며 LED는 꺼집니다.
  • PWM 값이 255이면 이는 VCC와 동일하며 LED는 완전히 켜집니다.
LED 작동 방식

※ NOTE THAT:

대부분의 LED는 양극(+)과 VCC 사이에 저항을 배치해야 합니다. 저항의 값은 LED의 사양에 따라 결정됩니다.

라즈베리 파이 - LED 페이드

Raspberry Pi의 일부 핀은 PWM 신호를 생성하도록 프로그래밍할 수 있습니다. LED를 천천히 켜고 끄려면, LED의 애노드(+) 핀을 Raspberry Pi의 핀에 연결하고, 캐소드(-)를 접지에 연결한 후, Raspberry Pi를 프로그래밍하여 핀에 PWM을 생성하도록 할 수 있습니다.

Wiring Diagram

라즈베리 파이 LED 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

배선 구성을 간단하고 체계적으로 만들기 위해, Raspberry Pi용 스크루 터미널 블록 실드 사용을 권장합니다. 이 실드는 아래와 같이 더욱 안정적이고 관리하기 쉬운 연결을 제공합니다:

Raspberry Pi Screw Terminal Block Shield

프로그래밍 방법

  • GPIO.setup() 함수를 사용하여 Raspberry Pi의 핀에 디지털 출력을 설정합니다.
  • 예를 들어, 핀 GPIO18:
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(LED_PIN, 1000) # PWM 객체 생성, 주파수 설정 pwm.start(0) # PWM 시작, 초기 듀티 사이클 설정 pwm.ChangeDutyCycle(brightness) # 듀티 사이클 변경

밝기는 0에서 100까지 조정할 수 있습니다.

라즈베리 파이 코드가 LED를 천천히 켭니다.

Detailed Instructions

  • 라즈비안 또는 다른 라즈베리 파이 호환 운영 체제가 파이에 설치되어 있는지 확인하세요.
  • 라즈베리 파이가 PC와 동일한 로컬 네트워크에 연결되어 있는지 확인하세요.
  • 일부 라이브러리를 설치해야 하는 경우 라즈베리 파이가 인터넷에 연결되어 있는지 확인하세요.
  • 라즈베리 파이를 처음 사용하시는 경우, 라즈베리 파이 설정 방법을 참조하세요.
  • Linux 및 macOS의 기본 SSH 클라이언트 또는 Windows의 PuTTY를 사용하여 PC를 라즈베리 파이와 SSH로 연결하세요. PC를 라즈베리 파이에 SSH로 연결하는 방법을 참조하세요.
  • RPi.GPIO 라이브러리가 설치되어 있는지 확인하세요. 설치되어 있지 않다면, 다음 명령어를 사용하여 설치하세요:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Python 스크립트 파일 led_fade.py를 만들고 다음 코드를 추가하세요:
# 이 Raspberry Pi 코드는 newbiely.kr 에서 개발되었습니다 # 이 Raspberry Pi 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. # 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: # https://newbiely.kr/tutorials/raspberry-pi/raspberry-pi-led-fade import RPi.GPIO as GPIO from time import sleep LED_PIN = 18 fadePercent = 5 brightness = 0 GPIO.setmode(GPIO.BCM) GPIO.setup(LED_PIN,GPIO.OUT) pwm = GPIO.PWM(LED_PIN, 1000) pwm.start(0) try: while True: pwm.ChangeDutyCycle(brightness) # change the brightness for next time through the loop: brightness = brightness + fadePercent; # reverse the direction of the fading at the ends of the fade: if brightness <= 0 or brightness >= 100: fadePercent = -fadePercent; # wait for 30 milliseconds to see the dimming effect sleep(0.03); finally: GPIO.cleanup()
  • 파일을 저장하고 터미널에서 다음 명령을 실행하여 Python 스크립트를 실행하세요:
python3 led_fade.py
  • LED의 밝기를 확인하세요.

스크립트는 터미널에서 Ctrl + C를 누를 때까지 무한 루프에서 계속 실행됩니다.

코드 설명

소스 코드의 주석에 포함된 줄별 설명을 확인해 보세요!

※ NOTE THAT:

위의 예제는 time.sleep() 함수를 사용하여 페이드 인 및 페이드 아웃 효과를 만듭니다. 그러나 time.sleep() 함수는 LED가 매끄럽지 않게 페이드 인되도록 하고 다른 코드가 실행되는 것을 차단합니다. 다음 섹션에서는 millis() 함수를 사용하여 다른 코드를 차단하지 않으면서 매끄럽게 페이드 인 및 페이드 아웃하는 방법을 배울 것입니다.

LED를 시간.sleep()을 사용하지 않고 페이드 인/아웃하는 방법

Detailed Instructions

  • 파이썬 스크립트 파일 led_fade.py를 생성하고 다음 코드를 추가하세요:
# 이 Raspberry Pi 코드는 newbiely.kr 에서 개발되었습니다 # 이 Raspberry Pi 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. # 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: # https://newbiely.kr/tutorials/raspberry-pi/raspberry-pi-led-fade import RPi.GPIO as GPIO import time LED_PIN = 18 FADE_PERIOD = 3000 FADE_IN_MODE = True FADE_OUT_MODE = False fadeMode = FADE_IN_MODE start_time = 0 brightness = 0 def _map(x, in_min, in_max, out_min, out_max): return int((x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min) GPIO.setmode(GPIO.BCM) GPIO.setup(LED_PIN,GPIO.OUT) pwm = GPIO.PWM(LED_PIN, 1000) pwm.start(0) start_time = time.time()*1000 try: while True: progress = time.time()*1000 - start_time if fadeMode == FADE_IN_MODE: if progress <= FADE_PERIOD: brightness = _map(progress, 0, FADE_PERIOD, 0, 100) print(brightness) pwm.ChangeDutyCycle(brightness) else: start_time = time.time()*1000 fadeMode = FADE_OUT_MODE progress = 0 if fadeMode == FADE_OUT_MODE: if progress <= FADE_PERIOD: brightness = 100 - _map(progress, 0, FADE_PERIOD, 0, 100) print(brightness) pwm.ChangeDutyCycle(brightness) else: start_time = time.time()*1000 fadeMode = FADE_IN_MODE progress = 0 finally: pwm.stop() GPIO.cleanup()
  • 파일을 저장하고 터미널에서 다음 명령을 실행하여 Python 스크립트를 실행하십시오:
python3 led_fade.py
  • LED의 밝기를 확인하세요.

Video Tutorial

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.