În acest tutorial, vom învăța cum să folosim un buton pentru a comanda pornirea și oprirea unui LED cu un microcontroler ESP32. Proiectul va demonstra cum să citim starea butonului și să controlăm LED-ul în consecință. Când butonul este apăsat, LED-ul se va aprinde, iar când este eliberat, se va stinge. Acesta este un concept fundamental pentru multe proiecte interactive care folosesc ESP32.
ESP32 este un microcontroler puternic, cu capacități integrate de Wi-Fi și Bluetooth, ceea ce îl face potrivit pentru diverse aplicații IoT. În această lecție, vom folosi ESP32 din Kitul de pornire ESP32 SunFounder, care include componente esențiale precum rezistențe și LED-uri, pentru a crea un circuit simplu. Pentru o explicație detaliată a cablajului și a codului, vă rugăm să consultați videoclipul (în videoclip la 00:00).
Hardware Explicat
Componentele cheie pentru acest proiect includ microcontrolerul ESP32, un buton, un LED și rezistențe. ESP32 acționează ca creierul proiectului, controlând LED-ul pe baza stării butonului. Butonul permite utilizatorilor să interacționeze cu circuitul, în timp ce LED-ul oferă feedback vizual atunci când butonul este apăsat.
Butonul funcționează prin închiderea circuitului atunci când este apăsat, permițând curentului să circule. Această acțiune trimite un semnal HIGH către pinul de intrare desemnat al ESP32, care poate fi apoi citit în cod. Rezistorul conectat la buton asigură că pinul are o stare definită atunci când butonul nu este apăsat, prevenind comportamentul erratic.
Buton cu rezistor
Instrucțiuni de Cablare
Pentru a cabla circuitul, începeți prin conectarea pinului mai lung al LED-ului (anod) la un rezistor de 220 ohmi. Conectați celălalt capăt al rezistorului la pinul GPIO 26 de pe ESP32. Pinul mai scurt al LED-ului (catod) ar trebui conectat la masă. Apoi, luați butonul și conectați o parte la sursa de alimentare de 3.3V de pe placă. Cealaltă parte a butonului se conectează la pinul GPIO 14.
Buton fără rezistor
Buton fără rezistor
Buton cu rezistor
Buton cu rezistor
În plus, plasați un rezistor de 10k ohmi de la pinul GPIO 14 la masă pentru a asigura că pinul citește LOW atunci când butonul nu este apăsat. În final, conectați firul de masă de la ESP32 la masa comună de pe breadboard. Această configurare va permite ESP32 să citească starea butonului și să controleze LED-ul în consecință.
Exemple de Cod și Explicații
Miezul programului începe prin definirea numerelor pinilor pentru buton și LED folosind constante. Acest lucru asigură că atribuirile pinilor rămân neschimbate pe parcursul execuției programului.
// set pin numbers
const int buttonPin = 14; // Button pin
const int ledPin = 26; // LED pin
În funcția setup(), inițializăm monitorul serial și setăm pinul butonului ca intrare, în timp ce configurăm pinul LED-ului ca ieșire. Aceasta pregătește ESP32 să citească de la buton și să controleze LED-ul.
În interiorul funcției loop(), programul citește continuu starea butonului și o afișează pe monitorul serial. Dacă butonul este apăsat, LED-ul este aprins; în caz contrar, este stins. Această logică este esențială pentru comanda LED-ului pe baza stării butonului.
Această funcționalitate de bază permite LED-ului să răspundă direct la buton. Pentru mai multe detalii despre proiect și codul complet, vă rugăm să consultați videoclipul furnizat (în videoclip la 14:00).
Demonstrație / Ce să Vă Așteptați
Odată ce cablajul este complet și codul este încărcat, apăsarea butonului ar trebui să aprindă LED-ul, iar eliberarea lui îl va stinge. Acest comportament confirmă că starea butonului este citită corect. Dacă LED-ul nu răspunde conform așteptărilor, verificați cablajul și asigurați-vă că butonul funcționează corect.
În timpul testării, asigurați-vă că observați monitorul serial pentru citirile stării butonului. Ar trebui să vedeți un '1' când butonul este apăsat și un '0' când este eliberat. Dacă citirile fluctuează neașteptat, poate indica o problemă de cablare sau necesitatea unei logici suplimentare de debounce în cod.
// 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);
}
}
Divulgare: Ca asociat Amazon, câștigăm din achizițiile eligibile. Aceasta înseamnă că putem primi un mic comision dacă dai clic pe un link și faci o achiziție fără costuri suplimentare pentru tine.