Search Code

ESP32 튜토리얼 9/55 - 푸시 버튼을 사용하여 LED 토글하기, 누르면 켜짐, 누르면 꺼짐 - SunFounder ESP32 IoT 키트

ESP32 튜토리얼 9/55 - 푸시 버튼을 사용하여 LED 토글하기, 누르면 켜짐, 누르면 꺼짐 - SunFounder ESP32 IoT 키트

이 튜토리얼에서는 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를 제어할 준비를 합니다.

void setup() {
  Serial.begin(115200);
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

loop() 함수 내에서 프로그램은 버튼 상태를 지속적으로 읽고 시리얼 모니터에 출력합니다. 버튼이 눌리면 LED가 켜지고, 그렇지 않으면 꺼집니다. 이 논리는 버튼 상태에 따라 LED를 토글하는 데 필수적입니다.

void loop() {
  buttonState = digitalRead(buttonPin);
  Serial.println(buttonState);
  delay(100);
  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}

이 기본 기능을 통해 LED가 푸시 버튼에 직접 반응할 수 있습니다. 프로젝트 및 전체 코드에 대한 자세한 내용은 제공된 비디오(비디오 14:00)를 참조하세요.

시연 / 예상 결과

배선이 완료되고 코드가 업로드되면 푸시 버튼을 누르면 LED가 켜지고, 놓으면 LED가 꺼집니다. 이 동작은 버튼 상태가 올바르게 읽히고 있음을 확인합니다. LED가 예상대로 반응하지 않으면 배선을 확인하고 버튼이 제대로 작동하는지 확인하세요.

테스트 중에는 시리얼 모니터에서 버튼 상태 판독값을 관찰하세요. 버튼을 누르면 '1'이 표시되고 놓으면 '0'이 표시되어야 합니다. 판독값이 예기치 않게 변동하면 배선 문제 또는 코드에 디바운싱 로직이 추가로 필요함을 나타낼 수 있습니다.

비디오 타임스탬프

  • 00:00 시작
  • 1:48 프로젝트 소개
  • 3:10 스위치와 푸시 버튼 설명
  • 7:19 배선 설명
  • 12:25 푸시 버튼용 아두이노 코드 설명
  • 15:56 ESP32 보드 및 COM 포트 선택
  • 17:38 프로젝트 시연
  • 18:33 프로젝트 2: 토글 및 LED
  • 19:09 LED 토글용 아두이노 코드
  • 21:16 LED 토글 시연

이미지

Push button with resistor
Push button with resistor
Push button with resistor
Push button with resistor
Push button without resistor
Push button without resistor
Push button without resistor
Push button without resistor
Push button with resistor
Push button with resistor
808-ESP32 Tutorial 9/55 - Arduino code push button
언어: C++
// 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);
  }
}

자원 및 참고자료

아직 자원이 없습니다.

파일📁

파일이 없습니다.