ESP32 - LED - 페이드 | ESP32 - LED - Fade

이 튜토리얼은 다음 사용 방법을 안내합니다:

준비물

1×ESP-WROOM-32 Dev Module 쿠팡 | Amazon
1×USB Cable Type-C 쿠팡 | Amazon
1×LED Amazon
1×220 ohm resistor Amazon
1×Breadboard 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Optional) DC Power Jack 쿠팡 | Amazon
1×(Recommended) Screw Terminal Expansion Board for ESP32 쿠팡 | Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

LED에 대하여

LED 핀배열

LED에는 두 개의 핀이 포함되어 있습니다:

  • Cathode(-) pin: 이 핀을 GND(0V)에 연결하세요.
  • Anode(+) pin: LED의 상태를 제어하는 데 사용됩니다.
LED Pinout

LED가 어떻게 작동하는가

음극(-)을 GND에 연결한 후:

  • 우리가 음극(-)에 GND를 연결하면, LED는 꺼집니다.
  • 우리가 양극(+)에 VCC를 연결하면, LED는 켜집니다.
  • 우리가 양극(+) 핀에 PWM 신호를 생성하면, LED의 밝기는 PWM 듀티 사이클에 비례합니다. PWM 듀티 사이클은 0부터 255까지 변합니다. PWM 듀티 사이클이 클수록, LED는 더 밝습니다.
    • PWM 값이 0이면 GND와 동등합니다 ⇒ LED는 꺼집니다
    • PWM 값이 255이면 VCC와 동등합니다 ⇒ LED는 최대 밝기로 켜집니다.
    How LED Works

    ※ NOTE THAT:

    보통, LED가 타지 않도록 보호하기 위해 저항기가 필요합니다. 저항값은 LED의 사양에 따라 달라집니다.

    ESP32 - LED 페이드

    ESP32의 디지털 출력 핀은 PWM 신호를 생성하도록 프로그래밍 할 수 있습니다. LED의 양극(+) 핀을 ESP32의 핀에 연결하고, LED의 음극(-)을 GND에 연결한 다음, ESP32를 프로그래밍하여 PWM의 듀티 사이클을 변경함으로써 LED를 서서히 밝게 하거나 어둡게 할 수 있습니다.

LED와 ESP32 사이의 배선도

ESP32 LED Wiring Diagram

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

ESP32 및 다른 구성 요소에 전원을 공급하는 방법에 대해 잘 알지 못하는 경우, 다음 튜토리얼에서 안내를 찾을 수 있습니다: ESP32 전원 공급 방법.

프로그램 하는 방법

  • pinMode() 함수를 사용하여 ESP32의 핀을 디지털 출력 핀으로 설정하세요. 예를 들어, GPIO18 핀:
pinMode(18, OUTPUT); // 이 줄은 코드에 주석이 없어서 변역할 내용이 없습니다.

analogWrite() 함수를 사용하여 해당 듀티 사이클로 PWM 신호를 생성하여 LED의 밝기를 설정합니다.

analogWrite(18, brightness);

밝기는 0에서 255 사이의 값입니다.

ESP32 코드 - 간단한 페이드 예제

사용 방법

  • ESP32를 처음 사용하는 경우, Arduino IDE에서 ESP32 환경 설정하는 방법을 참조하세요.
  • 위 이미지와 같이 배선하세요.
  • ESP32 보드를 마이크로 USB 케이블을 통해 PC에 연결하세요.
  • PC에서 Arduino IDE를 엽니다.
  • 올바른 ESP32 보드(예: ESP32 Dev Module)와 COM 포트를 선택하세요.
  • 아래 코드를 복사하여 Arduino IDE에 붙여넣으세요.
/* * 이 ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32/esp32-led-fade */ #define LED_PIN 18 // ESP32 핀 GPIO18가 LED에 연결되어 있습니다. int brightness = 0; // LED의 밝기 int fadeAmount = 5; // LED를 얼마나 어둡게 할지의 점수 // setup 루틴은 리셋을 누를 때 한 번 실행됩니다: void setup() { // 핀 GPIO18을 출력으로 선언합니다: pinMode(LED_PIN, OUTPUT); } // loop 루틴은 계속해서 영원히 반복됩니다: void loop() { // 핀 GPIO18의 밝기를 설정합니다: analogWrite(LED_PIN, brightness); // 다음 반복을 위해 밝기를 변경합니다: brightness = brightness + fadeAmount; // 페이딩 끝에서 페이딩의 방향을 반전시킵니다: if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; } // 어둡게 하는 효과를 보기 위해 30밀리초 기다립니다 delay(30); }

아두이노 IDE에서 Upload 버튼을 클릭하여 ESP32 보드에 코드를 컴파일하고 업로드하세요.

Arduino IDE Upload Code

LED의 밝기를 봐요.

코드 줄마다 설명

위의 ESP32 코드는 줄마다 설명이 포함되어 있습니다. 코드의 주석을 읽어주세요!

※ NOTE THAT:

위의 예제는 delay() 함수를 사용하여 페이드인과 페이드아웃을 합니다. delay() 함수는 LED가 부드럽게 페이드되지 않게 하며 다른 코드의 실행을 막습니다. 다음 파트에서는 millis() 함수를 사용하여 다른 코드의 실행을 막지 않으면서 부드럽게 페이드인과 페이드아웃하는 방법을 배우게 될 것입니다.

지연(delay())을 사용하지 않고 일정 기간 동안 LED를 서서히 켜는 방법

/* * 이 ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32/esp32-led-fade */ #define LED_PIN 18 // ESP32 핀 GPIO18이 LED에 연결됨 #define FADE_PEDIOD 3000 // 페이드 시간은 3초입니다 unsigned long fadeStartTime; // 설정 루틴은 리셋을 누를 때 한 번 실행됩니다 void setup() { pinMode(LED_PIN, OUTPUT); // GPIO18 핀을 출력으로 선언 fadeStartTime = millis(); } // 루프에서 페이드인하고, 마친 후 다시 시작 void loop() { unsigned long progress = millis() - fadeStartTime; if (progress <= FADE_PEDIOD) { long brightness = map(progress, 0, FADE_PEDIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { fadeStartTime = millis(); // 다시 페이드를 시작 } }

지연(delay())을 사용하지 않고 일정 기간 동안 LED를 서서히 꺼는 방법

/* * 이 ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32/esp32-led-fade */ #define LED_PIN 18 // ESP32 핀 GPIO18이 LED에 연결됨 #define FADE_PEDIOD 3000 // 페이드 시간은 3초입니다 unsigned long fadeStartTime; // setup 루틴은 리셋을 누를 때 한 번 실행됩니다 void setup() { pinMode(LED_PIN, OUTPUT); // 핀 GPIO18을 출력으로 선언합니다 fadeStartTime = millis(); } // 루프에서 fade-out을 실행하고, 완료 후 다시 시작합니다 void loop() { unsigned long progress = millis() - fadeStartTime; if (progress <= FADE_PEDIOD) { long brightness = 255 - map(progress, 0, FADE_PEDIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { fadeStartTime = millis(); // 다시 fade를 시작합니다 } }

동영상

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

언어 참고자료

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!