ESP32 마이크로파이썬 여러 LED 깜빡이기

이 가이드는 time.sleep() 함수를 사용하지 않고 여러 LED를 서로 다른 속도로 깜빡이게 할 ESP32용 MicroPython 코드를 설정하고 작성하는 방법을 보여줍니다. 두 가지 다른 방식으로 지침을 제공합니다:

ESP32 마이크로파이썬이 여러 개의 LED를 깜빡입니다.

세 개의 LED로 이것을 수행하는 방법을 설명하겠습니다. 두 개, 네 개 또는 그 이상의 LED로도 쉽게 조정할 수 있습니다.

준비물

1×ESP32 ESP-WROOM-32 개발 모듈 쿠팡 | 아마존
1×USB 케이블 타입-A to 타입-C (USB-A PC용) 쿠팡 | 아마존
1×USB 케이블 타입-C to 타입-C (USB-C PC용) 아마존
1×LED 쿠팡 | 아마존
1×220Ω 저항기 아마존
1×브레드보드 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) ESP32용 스크루 터미널 확장 보드 쿠팡 | 아마존
1×(추천) ESP32용 전원 분배기 쿠팡 | 아마존
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

LED에 대하여

LED(핀 배치, 작동 방식, ESP32와의 인터페이싱, 그리고 ESP32와 상호 작용하기 위한 MicroPython 코드 작성 등)에 대해 아직 익숙하지 않다면, 자세한 내용을 다음에서 확인할 수 있습니다:

선연결

ESP32 마이크로파이썬 다중 LED 배선도

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

ESP32 마이크로파이썬 코드 - 여러 LED 깜빡이기

여러 LED를 동시에 깜빡이게 하려면, 다른 코드의 실행을 방해하기 때문에 time.sleep() 함수를 사용하지 마세요. 대신 타임스탬프를 사용하여 타이밍을 처리하세요.

프로그래밍을 처음 시작하면서 여러 LED의 깜빡이는 타이밍을 맞추는 데 어려움을 겪고 있다면, DIYables_MicroPython_LED 라이브러리가 타이밍 처리를 대신해주어 더 쉽게 사용할 수 있습니다. 즉, 라이브러리를 사용할 때 타이밍 문제에 대해 걱정할 필요가 없습니다.

/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-blink-multiple-led */ from DIYables_MicroPython_LED import LED, LED_DELAY, LED_BLINKING, LED_IDLE, CTRL_ANODE # Define LED pins PIN_LED_1 = 16 # The ESP32 pin connected to the LED 1 (GPIO16) PIN_LED_2 = 17 # The ESP32 pin connected to the LED 2 (GPIO17) PIN_LED_3 = 18 # The ESP32 pin connected to the LED 3 (GPIO18) # Create LED objects that attach to the specified pins led1 = LED(PIN_LED_1, CTRL_ANODE) led2 = LED(PIN_LED_2, CTRL_ANODE) led3 = LED(PIN_LED_3, CTRL_ANODE) led1.blink(500, 500) # 500ms ON, 500ms OFF, blink immediately led2.blink_with_duration(100, 100, 5000) # 100ms ON, 100ms OFF, blink for 5 seconds, blink immediately led3.blink_n_times(250, 750, 10) # 250ms ON, 750ms OFF, repeat 10 times, blink immediately # Main loop while True: led1.loop() # MUST call the led1.loop() function led2.loop() # MUST call the led2.loop() function led3.loop() # MUST call the led3.loop() function # DO OTHER TASKS HERE # DO SOMETHING HERE

자세한 사용 방법

다음은 Thonny IDE를 사용하여 ESP32에서 MicroPython 코드를 설정하고 실행하는 방법에 대한 지침입니다:

  • 컴퓨터에 Thonny IDE가 설치되어 있는지 확인하세요.
  • ESP32 보드에 MicroPython 펌웨어가 로드되어 있는지 확인하세요.
  • MicroPython과 함께 ESP32를 처음 사용하는 경우 단계별 안내를 위해 ESP32 마이크로파이썬 - 시작하기 가이드를 참조하세요.
  • 다이어그램에 표시된 대로 ESP32 보드를 LED에 연결하세요.
  • USB 케이블을 사용하여 ESP32 보드를 컴퓨터에 연결하세요.
  • 컴퓨터에서 Thonny IDE를 실행하세요.
  • Thonny IDE에서 Tools Options로 이동하세요.
  • Interpreter 탭에서 드롭다운 메뉴에서 MicroPython (ESP32)를 선택하세요.
  • 올바른 포트가 선택되어 있는지 확인하세요. Thonny IDE가 보통 자동으로 감지하지만, 수동으로 선택해야 할 수도 있습니다 (예: Windows의 COM12 또는 Linux의 /dev/ttyACM0).
  • Thonny IDE에서 Tools Manage packages로 이동하세요.
  • “DIYables-MicroPython-LED”를 검색하여 DIYables가 제공한 LED 라이브러리를 찾으세요.
  • DIYables-MicroPython-LED를 클릭한 후 ESP32 보드에 LED 라이브러리를 설치하기 위해 Install 버튼을 클릭하세요.
ESP32 마이크로파이썬 LED 라이브러리
  • 제공된 MicroPython 코드를 복사하여 Thonny의 에디터에 붙여넣으세요.
  • 다음 단계로 코드를 ESP32에 저장하세요:
    • 저장 버튼을 클릭하거나 Ctrl+S를 눌러주세요.
    • 저장 대화 상자에서 MicroPython device를 선택하세요.
    • 파일 이름을 main.py로 지정하세요.
  • 초록색 실행 버튼을 클릭하거나 F5를 눌러 스크립트를 실행하세요.
  • LED가 켜져 있는지 꺼져 있는지 확인하세요.

ESP32 MicroPython 코드 - 배열을 사용하여 여러 LED 깜빡이기

우리는 LED 배열을 사용하여 이전 코드를 개선할 수 있습니다. 아래 코드는 이 배열을 사용하여 LED 객체를 관리합니다.

/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-blink-multiple-led */ from DIYables_MicroPython_LED import LED, LED_DELAY, LED_BLINKING, LED_IDLE, CTRL_ANODE # Define LED pins PIN_LED_1 = 16 # The ESP32 pin connected to the LED 1 (GPIO16) PIN_LED_2 = 17 # The ESP32 pin connected to the LED 2 (GPIO17) PIN_LED_3 = 18 # The ESP32 pin connected to the LED 3 (GPIO18) # Create an array of LED objects led_array = [ LED(PIN_LED_1, CTRL_ANODE), # create ezLED object that attach to pin PIN_LED_1 LED(PIN_LED_2, CTRL_ANODE), # create ezLED object that attach to pin PIN_LED_2 LED(PIN_LED_3, CTRL_ANODE) # create ezLED object that attach to pin PIN_LED_3 ] led_array[0].blink(500, 500) # 500ms ON, 500ms OFF, blink immediately led_array[1].blink_with_duration(100, 100, 5000) # 100ms ON, 100ms OFF, blink for 5 seconds, blink immediately led_array[2].blink_n_times(250, 750, 10) # 250ms ON, 750ms OFF, repeat 10 times, blink immediately # Function to print the state of an LED def print_state(state, led_index): if state == LED_DELAY: print(f"LED {led_index + 1} DELAYING") elif state == LED_BLINKING: print(f"LED {led_index + 1} BLINKING") elif state == LED_IDLE: print(f"LED {led_index + 1} BLINK ENDED") # Track the previous states of the LEDs previous_states = [None] * len(led_array) # Main loop while True: # Update each LED state for i, led in enumerate(led_array): led.loop() # MUST call the led.loop() function in loop() # Get the current state of the LED current_state = led.get_state() # Print the state only if it has changed if current_state != previous_states[i]: print_state(current_state, i) previous_states[i] = current_state # Update the previous state # DO SOMETHING HERE

DIYables_MicroPython_LED 라이브러리를 사용하면 이렇게 몇 개의 LED를 빠르게 깜빡이게 할 수 있습니다.

  • 여러 개의 LED가 각기 다른 속도로 깜빡이게 합니다.
  • 여러 개의 LED가 서로 다른 시간에 깜빡이기 시작하게 합니다.
  • 각 LED가 일정 시간 동안 깜빡이도록 합니다.
  • 각 LED가 정해진 횟수만큼 깜빡이도록 합니다.

동영상

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