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Ω Resistor 아마존
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 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.