W tym samouczku nauczymy się, jak używać przycisku chwilowego do przełączania diody LED włączania i wyłączania za pomocą mikrokontrolera ESP32. Projekt pokaże, jak odczytywać stan przycisku i odpowiednio sterować diodą LED. Po naciśnięciu przycisku dioda LED zapali się, a po zwolnieniu zgaśnie. Jest to podstawowa koncepcja wielu interaktywnych projektów z użyciem ESP32.
ESP32 to wydajny mikrokontroler z wbudowaną obsługą Wi-Fi i Bluetooth, co czyni go odpowiednim do różnych zastosowań IoT. W tej lekcji użyjemy ESP32 z zestawu startowego SunFounder ESP32 Starter Kit, który zawiera niezbędne komponenty, takie jak rezystory i diody LED, aby stworzyć prosty obwód. Szczegółowe wyjaśnienie okablowania i kodu znajduje się w filmie (w filmie o 00:00).
Wyjaśnienie sprzętu
Kluczowe komponenty tego projektu to mikrokontroler ESP32, przycisk chwilowy, dioda LED i rezystory. ESP32 pełni rolę mózgu projektu, sterując diodą LED na podstawie stanu przycisku. Przycisk umożliwia użytkownikowi interakcję z obwodem, a dioda LED zapewnia wizualną informację zwrotną po naciśnięciu przycisku.
Przycisk chwilowy działa poprzez zamknięcie obwodu po naciśnięciu, co pozwala na przepływ prądu. Ta akcja wysyła sygnał HIGH do wyznaczonego pinu wejściowego ESP32, który można następnie odczytać w kodzie. Rezystor podłączony do przycisku zapewnia, że pin ma określony stan, gdy przycisk nie jest naciśnięty, zapobiegając niestabilnemu zachowaniu.
Przycisk chwilowy z rezystorem
Instrukcje okablowania
Aby podłączyć obwód, zacznij od połączenia dłuższego pinu diody LED (anody) z rezystorem 220 omów. Podłącz drugi koniec rezystora do pinu GPIO 26 na ESP32. Krótszy pin diody LED (katoda) powinien być podłączony do masy. Następnie weź przycisk chwilowy i podłącz jedną stronę do zasilania 3,3 V na płytce. Druga strona przycisku łączy się z pinem GPIO 14.
Przycisk chwilowy bez rezystora
Przycisk chwilowy bez rezystora
Przycisk chwilowy z rezystorem
Przycisk chwilowy z rezystorem
Dodatkowo umieść rezystor 10k omów od pinu GPIO 14 do masy, aby zapewnić, że pin odczytuje stan LOW, gdy przycisk nie jest naciśnięty. Na koniec podłącz przewód masy z ESP32 do wspólnej masy na płytce stykowej. Ta konfiguracja pozwoli ESP32 odczytywać stan przycisku i odpowiednio sterować diodą LED.
Przykłady kodu i omówienie
Rdzeń programu zaczyna się od zdefiniowania numerów pinów dla przycisku i diody LED za pomocą stałych. Zapewnia to, że przypisania pinów pozostaną niezmienione podczas całego wykonywania programu.
// ustaw numery pinów
const int buttonPin = 14; // Pin przycisku
const int ledPin = 26; // Pin diody LED
W funkcji setup() inicjalizujemy monitor szeregowy i ustawiamy pin przycisku jako wejście, konfigurując pin diody LED jako wyjście. To przygotowuje ESP32 do odczytu z przycisku i sterowania diodą LED.
Wewnątrz funkcji loop() program ciągle odczytuje stan przycisku i wypisuje go na monitorze szeregowym. Jeśli przycisk jest naciśnięty, dioda LED jest włączana; w przeciwnym razie jest wyłączana. Ta logika jest niezbędna do przełączania diody LED w zależności od stanu przycisku.
Ta podstawowa funkcjonalność pozwala diodzie LED reagować bezpośrednio na przycisk chwilowy. Dalsze szczegóły dotyczące projektu i pełnego kodu znajdują się w dołączonym filmie (w filmie o 14:00).
Demonstracja / Czego się spodziewać
Po zakończeniu okablowania i wgraniu kodu naciśnięcie przycisku chwilowego powinno włączyć diodę LED, a zwolnienie go spowoduje jej wyłączenie. To zachowanie potwierdza, że stan przycisku jest poprawnie odczytywany. Jeśli dioda LED nie reaguje zgodnie z oczekiwaniami, sprawdź okablowanie i upewnij się, że przycisk działa prawidłowo.
Podczas testowania obserwuj monitor szeregowy pod kątem odczytów stanu przycisku. Powinieneś zobaczyć '1', gdy przycisk jest naciśnięty, i '0', gdy jest zwolniony. Jeśli odczyty zmieniają się nieoczekiwanie, może to wskazywać na problem z okablowaniem lub konieczność dodania logiki eliminującej drgania styków w kodzie.
// 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);
}
}
Ujawnienie: Jako partner Amazonu, zarabiamy na kwalifikujących się zakupach. Oznacza to, że możemy otrzymać małą prowizję, jeśli klikniesz w link i dokonasz zakupu bez dodatkowych kosztów dla Ciebie.