ESP32 C3 Super Mini 버튼 LED

이 튜토리얼은 ESP32 C3 Super Mini를 버튼과 함께 사용하여 LED를 제어하는 방법을 보여줍니다. LED를 버튼 누르기와 동기화하든지 상태를 토글하든지 간단한 코드 예제로 두 방법 모두를 배웁니다.

이 튜토리얼에서 배울 내용:

ESP32 C3 Super Mini - 버튼 LED

ESP32 C3 Super Mini 버튼 LED 제어의 두 가지 사용 사례를 다룹니다:

사용 사례 1 - LED 및 버튼 상태 동기화:

사용 사례 2 - 버튼 누르기로 LED 상태 토글:

사용 사례 2에서 버튼 디바운싱은 중요합니다. 디바운싱을 사용한 경우와 사용하지 않은 경우의 ESP32 C3 Super Mini 코드 차이를 보여드려 중요성을 이해할 수 있습니다.

필요한 하드웨어

1×ESP32 C3 Super Mini 아마존
1×USB 케이블 타입-A to 타입-C (USB-A PC용) 쿠팡 | 아마존
1×USB 케이블 타입-C to 타입-C (USB-C PC용) 아마존
1×캡이 있는 버튼 쿠팡 | 아마존
1×버튼 키트 쿠팡 | 아마존
1×패널 장착 푸시 버튼 아마존
1×푸시 버튼 모듈 아마존
1×LED 쿠팡 | 아마존
1×LED Module 아마존
1×220Ω Resistor 아마존
1×브레드보드 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(옵션) 5V Power Adapter for ESP32 C3 Super Mini 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

LED 및 버튼 정보

LED와 버튼은 ESP32 C3 Super Mini 프로젝트의 기본 컴포넌트입니다.

완전한 초보자 가이드는 이 튜토리얼을 확인하세요:

이 설정에 대한 주요 포인트:

  • LED는 손상을 방지하기 위해 전류 제한 저항이 필요합니다 (220옴 권장)
  • 버튼은 내부 또는 외부 풀업/풀다운 저항으로 연결될 수 있습니다
  • ESP32 C3 Super Mini는 디지털 입력 (버튼)과 출력 (LED)을 동시에 지원합니다
  • 버튼과 LED를 결합하면 초보자에게 완벽한 대화형 프로젝트가 만들어집니다

배선 다이어그램

아래 다이어그램에 따라 버튼과 LED를 ESP32 C3 Super Mini에 연결합니다.

ESP32 C3 Super Mini 버튼 LED 배선 다이어그램

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

배선 연결:

Component Pin ESP32 C3 Super Mini Pin
Button One terminal D5
Button Other terminal GND
LED Anode (long leg) D7
LED Cathode (short leg) 220Ω resistor to GND

중요한 참고:

  • 참고: LED가 220옴 저항을 통해 연결되어 손상을 방지합니다
  • 참고: 버튼은 D5의 내부 풀업 저항을 사용합니다

응용 프로그램 1 - LED 상태가 버튼 상태와 동기화됨

이 ESP32 C3 Super Mini 응용 프로그램은 버튼으로 LED를 직접 제어하는 방법을 보여줍니다.

이 코드가 하는 일:

  • ESP32 C3 Super Mini에서 버튼 상태를 지속적으로 읽음
  • 버튼을 누르면 LED를 즉시 켭니다
  • 버튼을 놓으면 LED를 즉시 끕니다
  • 간단하고 실시간 동기화된 응답을 만듭니다

ESP32 C3 Super Mini 코드

/* * 이 ESP32 C3 Super Mini 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 C3 Super Mini 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-c3/esp32-c3-super-mini-button-led */ #define BUTTON_PIN 5 // The ESP32 C3 SuperMini pin connected to the button #define LED_PIN 7 // The ESP32 C3 SuperMini pin connected to the LED int button_state = 0; // variable for reading the pushbutton status void setup() { // Configure the LED pin as a digital output pinMode(LED_PIN, OUTPUT); // initialize the button pin as an pull-up input (HIGH when the switch is open and LOW when the switch is closed) pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the pushbutton value: button_state = digitalRead(BUTTON_PIN); // control LED according to the state of button if(button_state == LOW) // If button is pressing digitalWrite(LED_PIN, HIGH); // turn on LED else // otherwise, button is not pressing digitalWrite(LED_PIN, LOW); // turn off LED }

빠른 단계

  • ESP32 C3 Mini를 처음 사용하시나요? 먼저 ESP32 C3 슈퍼 미니 - 시작하기 튜토리얼을 완료하여 개발 환경을 설정합니다.
  • 컴포넌트 연결: 위에 표시된 배선 다이어그램을 따릅니다.
  • ESP32 C3 Super Mini 연결: USB Type-C 케이블을 사용하여 컴퓨터에 연결합니다.
  • Arduino IDE 설정: ESP32 C3 Super Mini를 처음 사용하는 경우 ESP32 C3 Super Mini를 Arduino IDE에서 설정하는 방법을 참고하세요.
  • 보드 선택: Arduino IDE에서 ESP32 C3 Super Mini 보드와 COM 포트를 선택합니다.
  • 코드 업로드: 위의 코드를 복사하여 ESP32 C3 Super Mini에 업로드합니다.
아두이노 ide 코드 업로드
  • 버튼 테스트: 몇 초 동안 버튼을 누르고 있습니다.
  • LED 관찰: 버튼 누르기에 따라 LED가 켜지고 꺼지는 것을 봅니다.
  • Pro Tip: LED 동작이 역순으로 보이면 버튼이 눌린 상태를 올바르게 식별했는지 확인합니다.

ESP32 C3 Super Mini에서 LED 상태가 버튼 상태와 동기화되는 것을 볼 수 있습니다.

코드 설명

소스 코드의 주석에 포함된 라인별 설명을 확인하세요!

응용 프로그램 2 - 버튼이 LED를 토글합니다

이 ESP32 C3 Super Mini 응용 프로그램은 직접 동기화 대신 버튼 누르기로 LED를 토글하는 방법을 보여줍니다.

ESP32 C3 Super Mini의 토글 동작:

  • 첫 번째 버튼 누르기가 LED를 켭니다
  • 두 번째 버튼 누르기가 LED를 끕니다
  • 각 누르기는 반대 상태로 전환합니다
  • 신뢰할 수 있는 작동을 위해 디바운싱 필요

ESP32 C3 Super Mini 코드 - 디바운싱 없이 버튼이 LED를 토글

이 첫 번째 예제는 디바운싱 없이 ESP32 C3 Super Mini의 버튼 토글 문제를 보여줍니다.

/* * 이 ESP32 C3 Super Mini 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 C3 Super Mini 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-c3/esp32-c3-super-mini-button-led */ #define BUTTON_PIN 5 // The ESP32 C3 SuperMini pin connected to the button #define LED_PIN 7 // The ESP32 C3 SuperMini pin connected to the LED int led_state = LOW; // The current state of LED int prev_button_state; // The previous state of button int button_state; // The current state of button void setup() { Serial.begin(115200); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if(prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // toggle state of LED led_state = !led_state; // control LED according to the toggled state digitalWrite(LED_PIN, led_state); } }

코드 설명

ESP32 C3 Super Mini 코드 위의 주석 라인에서 설명을 찾을 수 있습니다.

토글 논리 이해:

코드에서 led_state = !led_state 표현식은 다음 코드와 같습니다:

if(led_state == LOW) led_state = HIGH; else led_state = LOW;

왜 이 단축형이 작동합니까:

  • ! 연산자가 부울 값을 반전시킵니다
  • 더 간단하고 읽기 쉽습니다
  • ESP32 C3 Super Mini 토글 응용 프로그램의 일반적인 패턴

빠른 단계

  • 코드 업로드: 위의 코드를 복사하여 ESP32 C3 Super Mini에 업로드합니다.
  • 여러 번 누르기 테스트: 버튼을 여러 번 누르고 놓습니다.
  • 이상한 동작 관찰: LED가 일관되지 않게 토글될 수 있습니다.
  • 문제 이해: 단일 누르기는 LED를 여러 번 토글하거나 전혀 토글하지 않을 수 있습니다.
  • Pro Tip: 이 불일치는 버튼이 누를 때 전기적으로 "바운스"하여 여러 신호를 생성하기 때문입니다.

LED 상태가 버튼을 누를 때마다 토글되는 것을 관찰할 수 있습니다. 그러나 이 동작은 항상 일관되지는 않을 수 있습니다. 때로는 LED 상태가 단일 버튼 누르기 내에서 여러 번 빠르게 토글되거나 전혀 토글되지 않을 수 있습니다 (연속으로 두 번 토글되어 육안으로 보기 어려울 수 있음).

⇒ 이 문제를 해결하려면 ESP32 C3 Super Mini - 버튼 - 디바운스합니다.

ESP32 C3 Super Mini 코드 - 디바운싱을 포함하여 버튼이 LED를 토글

이제 적절한 디바운싱을 사용하여 ESP32 C3 Super Mini 버튼 LED 토글을 신뢰할 수 있게 만듭니다.

ezButton 라이브러리 사용 이유:

  • ESP32 C3 Super Mini를 위해 모든 디바운싱을 자동으로 처리합니다
  • 간단하고 초보자 친화적인 명령
  • 버튼 바운스 문제를 완전히 제거합니다
  • ESP32 C3 Super Mini 프로젝트를 더 전문적으로 만듭니다

버튼을 디바운스하는 것은 초보자에게 어려울 수 있습니다. 다행히 ezButton 라이브러리는 쉽게 만들어줍니다.

디바운싱이 필요한 이유는? 더 많은 정보를 위해 ESP32 C3 Super Mini - 버튼 - 디바운스을 참고하세요.

/* * 이 ESP32 C3 Super Mini 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 C3 Super Mini 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-c3/esp32-c3-super-mini-button-led */ #include <ezButton.h> #define BUTTON_PIN 5 // The ESP32 C3 SuperMini pin connected to the button #define LED_PIN 7 // The ESP32 C3 SuperMini pin connected to the LED ezButton button(BUTTON_PIN); // create ezButton object int led_state = LOW; // The current state of LED void setup() { Serial.begin(115200); // Initialize the Serial to communicate with the Serial Monitor. pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if(button.isPressed()) { Serial.println("The button is pressed"); // toggle state of LED led_state = !led_state; // control LED according to the toggleed sate digitalWrite(LED_PIN, led_state); } }

빠른 단계

  • ezButton 라이브러리 설치: ezButton 라이브러리를 설치합니다. 지침은 방법을 참고하세요.
  • 디바운스된 코드 업로드: 위의 코드를 복사하여 ESP32 C3 Super Mini에 업로드합니다.
  • 버튼 누르기 테스트: 버튼을 여러 번 누르고 놓습니다.
  • 신뢰할 수 있는 토글 관찰: LED가 누르기당 정확히 한 번 토글됩니다.
  • 동작 비교: 디바운스되지 않은 버전과 비교할 때 훨씬 더 신뢰할 수 있습니다.
  • Pro Tip: ezButton 라이브러리는 버튼 입력이 필요한 모든 ESP32 C3 Super Mini 프로젝트에서 작동합니다.

ESP32 C3 Super Mini에서 버튼을 누를 때마다 LED 상태가 정확히 한 번 토글되는 것을 볼 수 있습니다.

응용 프로그램 아이디어

ESP32 C3 Super Mini 버튼 LED 제어를 프로젝트에 사용하는 창의적인 방법은 다음과 같습니다:

  • 수동 ON/OFF 토글 제어가 있는 간단한 ESP32 C3 Super Mini 책상 스탠드 구축
  • 버튼을 누르면 켜지는 초인종 표시기 생성
  • ESP32 C3 Super Mini를 사용한 시각적 LED 피드백이 있는 게임 버저 시스템 설계
  • ESP32 C3 Super Mini를 사용한 버튼 제어로 잠금/잠금 해제 상태를 표시하는 상태 표시기 구축
  • 반응 시간 게임 생성 및 LED를 토글할 수 있는 속도 측정
  • 간단한 잠금 표시기 생성

비디오 섹션

이 ESP32 C3 Super Mini 버튼 LED 프로젝트의 시각적 설명을 보려면 아래 비디오를 시청하세요.

자신을 시도해보기

이러한 과제를 시도하여 ESP32 C3 Super Mini 버튼 LED 기술을 향상합니다:

  • 쉬움: 코드를 수정하여 단일 버튼으로 두 개의 LED를 제어합니다 (하나는 누르면 켜지고, 하나는 꺼짐)
  • 쉬움: LED를 변경하여 버튼을 누를 때 3번 깜박입니다 (고정 상태 대신)
  • 중간: 두 번째 버튼을 ESP32 C3 Super Mini에 추가하여 LED 밝기를 제어합니다 (어두움/밝음 토글)
  • 중간: 각 버튼 누르기에서 다음 상태로 진행하는 신호등 시퀀스 생성
  • 고급: ESP32 C3 Super Mini에서 짧은 누르기와 다르게 동작하는 긴 누르기 감지 구현
  • 고급: 올바른 순서로만 LED가 켜지는 여러 버튼을 사용하는 조합 잠금 구축

의견