ESP32 디지털 입력 및 디지털 출력
ESP32를 사용하여 버튼 스위치와 같은 디지털 입력을 읽고 LED와 같은 디지털 출력을 제어하는 방법을 알아봅니다.
ESP32 제어 - 디지털 출력
GPIO를 출력 설정하기
pinMode(GPIO, OUTPUT);
디지털 출력하기
digitalWrite() 함수를 사용하여 출력을 할수 있습니다 .
digitalWrite(GPIO, HIGH);
digitalWrite(GPIO, LOW);
GPIO 6~11(통합 SPI 플래시에 연결됨) 및 GPIO 34, 35, 36 및 39(입력 전용 GPIO)를 제외한 모든 GPIO는 출력으로 사용할 수 있습니다.
ESP32 제어 - 디지털 입력
GPIO를 입력 설정하기
pinMode(GPIO, INPUT);
디지털 입력받기
버튼과 같은 디지털 입력을 읽으려면 다음을 사용합니다.
digitalRead(GPIO);
모든 ESP32 GPIO는 GPIO 6~11(통합 SPI 플래시에 연결됨)을 제외하고 입력으로 사용할 수 있습니다.
프로젝트 예시
디지털 입력과 디지털 출력을 사용하는 방법을 보여드리기 위해 푸시버튼과 LED가 있는 간단한 프로젝트 예제를 빌드하겠습니다. 다음 그림에서 설명한 대로 푸시버튼의 상태를 읽고 그에 따라 LED를 켭니다.
준비물
- ESP32
- LED
- 330옴 저항
- 10K옴 저항
- 푸시버튼
- 브레드보드
- 점퍼 와이어
회로도
예제 코드
const int buttonPin = 4; // 버튼 핀
const int ledPin = 5; // LED 핀
// 푸시버튼 상태를 저장하는 변수
int buttonState = 0;
void setup() {
//시리얼모니터 통신속도 설정
Serial.begin(115200);
// 푸시버튼 핀을 입력으로 초기화
pinMode(buttonPin, INPUT);
// LED 핀을 출력으로 초기화
pinMode(ledPin, OUTPUT);
}
void loop() {
// 푸시버튼 값의 상태를 읽습니다.
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
// 만약에 ButtonState는 HIGH라면
if (buttonState == HIGH) {
// LED on
digitalWrite(ledPin, HIGH);
} else {
// LED off
digitalWrite(ledPin, LOW);
}
}
코드 작동 방식
핀을 할당하기 위한 변수를 만듭니다.
const int buttonPin = 4;
const int ledPin = 5;
버튼은 4번핀에 연결되어있고,LED는 5번핀에 연결되어있습니다.
버튼 상태를 보관할 변수를 만듭니다. 기본적으로 0(눌리지 않음)입니다.
int buttonState = 0;
pinMode를 사용해서 각 핀들을 초기화 해줍니다.
buttonPin 입력으로 초기화, ledPin 출력으로 초기화
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
buttonState변수에 버튼의 상태를 저장합니다. 1 or 0
buttonState = digitalRead(buttonPin);
if문으로 buttonState 변수가 HIGH 상태인지 확인합니다. 버튼이 눌리면 HIGH, 눌리지 않으면 LOW입니다.
HIGH 상태라면 LED ON
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
buttonState 변수가 LOW일때 LED OFF
else {
digitalWrite(ledPin, LOW);
}
ESP32의 디지털 입력을 읽고 디지털 출력을 제어하는 방법을 알아보았습니다.
'ESP32 > ESP32' 카테고리의 다른 글
ESP32 Timer 구현하기 - millis()함수 사용하기 (4) | 2024.10.16 |
---|---|
ESP32 ADC - 아날로그 값 읽기 (0) | 2024.10.16 |
아두이노에서 ESP32 PWM 알아보기 (1) | 2024.09.27 |
ESP32 PinMap (0) | 2024.09.26 |
아두이노 IDE에 ESP32 사용환경 설치하기 (0) | 2021.07.19 |