오늘은 ESP32의 MicroPython을 사용하여 버튼을 제어해보도록 하겠습니다. GPIO에서 디지털 출력을 다뤄보았다면, 이제는 INPUT에 대해서도 다뤄보면 좋겟죠?! 푸시버튼을 활용해서 GPIO제어를 다뤄보도록 하겠습니다.
2023.03.20 - [메이커 이야기/ESP32] - ESP32 MicroPython GPIO제어 : LED 제어편
ESP32 버튼 회로는 GPIO 14번 핀에 연결
이번 편에서도 역시 별도로 회로 연결 부분에 대해서를 다루지 않도록 하겠습니다. GPIO14번에 푸시버튼을 연결해주시면 됩니다. 저는 풀다운 회로로 구성된 버튼 센서를 사용할 것입니다.
간단히 말해 풀다운 회로의 버튼센서는 기존에는 값이 0으로 나오다가 버튼이 눌리면 값이 1로 되는 버튼이라고 보시면 됩니다.
MicroPython Code작성
코드는 아래와 같이 간단하게 작성해주세요!!
from machine import Pin import time # 핀 번호 지정 led_red_pin = 4 switch_pin = 14 # LED 핀 모드 설정 red_led = Pin(led_red_pin, Pin.OUT) # 스위치 핀 모드 설정 push_switch = Pin(switch_pin, Pin.IN) # 스위치 상태 감지 while True: if push_switch.value() == 1: red_led.value(1) time.sleep(0.2) else: red_led.value(0) time.sleep(0.2) |
코드를 하나씩 살펴보면,
from machine import Pin import time |
machine 모듈에서 Pin 클래스와 time 모듈을 가져옵니다. time모듈은 시간 관련된 함수를 사용할 수 있습니다.
led_red_pin = 4 switch_pin = 14 |
스위치가 연결된 GPIO 핀 번호를 변수 switch_pin에 할당합니다.
red_led = Pin(led_red_pin, Pin.OUT) |
LED를 제어하기 위해 red_led 변수를 생성하고, Pin.OUT 모드는 해당 핀을 출력 핀으로 설정합니다.
push_switch = Pin(switch_pin, Pin.IN) |
스위치 입력을 감지하기 위해 push_switch 변수를 생성합니다. Pin.IN 모드는 해당 핀을 입력 핀으로 설정합니다.
# 스위치 상태 감지 while True: if push_switch.value() == 1: red_led.value(1) time.sleep(0.2) else: red_led.value(0) time.sleep(0.2) |
if push_switch.value() == 1: : 만약 push_switch 변수가 1로 설정되어 있다면 (스위치가 눌려져 있다면) red_led.value(1) : red_led 변수를 사용하여 LED를 켭니다.
time.sleep(0.2) : 0.2초 동안 대기합니다.
그렇지 않으면 (스위치가 눌려져 있지 않으면) 아래의 코드를 실행합니다. red_led.value(0) : red_led 변수를 사용하여 LED를 끕니다.
따라서, 버튼이 눌리면 LED를 켜고, 버튼이 눌리지 않으면 LED를 끄는 코드입니다.
그럼 오늘 GPIO제어하는 것에 대해서 한번 알아보았습니다.
다음에는 ESP32를 활용해서 ADC를 다루는 것에 에 대해서 한번 살펴보도록 하겠습니다. ^^
이전 발행글
2023.03.14 - [메이커 이야기/ESP32] - ESP32 MicroPython 시작하기
2023.03.16 - [메이커 이야기/ESP32] - ESP32 MicroPython 개발환경 구성하기 : Thonny
2023.03.20 - [메이커 이야기/ESP32] - ESP32 MicroPython 기초 문법 : Python편
2023.03.20 - [메이커 이야기/ESP32] - ESP32 MicroPython GPIO제어 : LED 제어편
'메이커 이야기 > ESP32' 카테고리의 다른 글
ESP32 MicroPython DAC편 : 아날로그 출력 (0) | 2023.03.29 |
---|---|
ESP32 MicroPython ADC편 : 아날로그 센서 값 (0) | 2023.03.26 |
ESP32 MicroPython GPIO제어 : LED 제어편 (0) | 2023.03.20 |
ESP32 MicroPython 기초 문법 : Python편 (0) | 2023.03.20 |
ESP32 MicroPython 개발환경 구성하기 : Thonny (0) | 2023.03.16 |