이 튜토리얼에서는 ESP32 마이크로컨트롤러를 사용하여 푸시 버튼으로 LED를 켜고 끄는 방법을 배웁니다. 이 프로젝트는 푸시 버튼의 상태를 읽고 그에 따라 LED를 제어하는 방법을 보여줍니다. 버튼을 누르면 LED가 켜지고, 놓으면 꺼집니다. 이는 ESP32를 사용하는 많은 인터랙티브 프로젝트의 기초 개념입니다.
ESP32는 내장 Wi-Fi 및 블루투스 기능을 갖춘 강력한 마이크로컨트롤러로, 다양한 IoT 애플리케이션에 적합합니다. 이 강의에서는 SunFounder ESP32 스타터 키트의 ESP32를 사용하여 저항과 LED 같은 필수 부품으로 간단한 회로를 만듭니다. 배선 및 코드에 대한 자세한 설명은 비디오(비디오 00:00)를 참조하세요.
하드웨어 설명
이 프로젝트의 주요 부품에는 ESP32 마이크로컨트롤러, 푸시 버튼, LED 및 저항이 포함됩니다. ESP32는 프로젝트의 두뇌 역할을 하며, 푸시 버튼 상태에 따라 LED를 제어합니다. 푸시 버튼은 사용자가 회로와 상호 작용할 수 있게 하고, LED는 버튼을 눌렀을 때 시각적 피드백을 제공합니다.
푸시 버튼은 눌렀을 때 회로를 닫아 전류가 흐르게 합니다. 이 동작은 ESP32의 지정된 입력 핀에 HIGH 신호를 보내며, 코드에서 이를 읽을 수 있습니다. 버튼에 연결된 저항은 버튼을 누르지 않았을 때 핀에 정의된 상태를 유지하여 불규칙한 동작을 방지합니다.
저항이 있는 푸시 버튼
배선 지침
회로를 배선하려면 먼저 LED의 긴 핀(양극)을 220옴 저항에 연결합니다. 저항의 다른 쪽 끝을 ESP32의 GPIO 핀 26에 연결합니다. LED의 짧은 핀(음극)은 접지에 연결해야 합니다. 다음으로 푸시 버튼을 가져와 한쪽을 보드의 3.3V 전원 공급 장치에 연결합니다. 푸시 버튼의 다른 쪽은 GPIO 핀 14에 연결합니다.
저항이 없는 푸시 버튼
저항이 없는 푸시 버튼
저항이 있는 푸시 버튼
저항이 있는 푸시 버튼
또한 GPIO 핀 14에서 접지로 10k옴 저항을 연결하여 버튼을 누르지 않았을 때 핀이 LOW를 읽도록 합니다. 마지막으로 ESP32의 접지선을 브레드보드의 공통 접지에 연결합니다. 이 설정을 통해 ESP32가 버튼 상태를 읽고 그에 따라 LED를 제어할 수 있습니다.
코드 예제 및 설명
프로그램의 핵심은 상수를 사용하여 버튼과 LED의 핀 번호를 정의하는 것으로 시작합니다. 이렇게 하면 프로그램 실행 중에 핀 할당이 변경되지 않습니다.
// 핀 번호 설정
const int buttonPin = 14; // 버튼 핀
const int ledPin = 26; // LED 핀
setup() 함수에서 시리얼 모니터를 초기화하고 버튼 핀을 입력으로 설정하면서 LED 핀을 출력으로 구성합니다. 이는 ESP32가 버튼에서 읽고 LED를 제어할 준비를 합니다.
// set pin numbers
const int buttonPin = 14; // Button pin
const int ledPin = 26; // LED pin
// variable for storing the button status
int buttonState = 0;
void setup() {
Serial.begin(115200);
// initialize the button pin as an input
pinMode(buttonPin, INPUT);
// initialize the LED pin as an output
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the state of the button value
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
delay(100);
// if the button is pressed
if (buttonState == HIGH) {
// turn LED on
digitalWrite(ledPin, HIGH);
} else {
// turn LED off
digitalWrite(ledPin, LOW);
}
}