본문 바로가기
ESP32/ESP32

ESP32 버튼,LED 제어하기

by 빈이쥬 2024. 10. 15.

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의 디지털 입력을 읽고 디지털 출력을 제어하는 ​​방법을 알아보았습니다.