Search Code

Tutorial ESP32 9/55 - Utilizarea butonului pentru a comuta LED-ul, Apăsare pentru pornire, Apăsare pentru oprire -Kit IoT SunFounder ESP32

Tutorial ESP32 9/55 - Utilizarea butonului pentru a comuta LED-ul, Apăsare pentru pornire, Apăsare pentru oprire -Kit IoT SunFounder ESP32

Î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.

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

Î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.

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

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.

Marcaje Temporale din Videoclip

  • 00:00 Început
  • 1:48 Introducerea proiectului
  • 3:10 Explicarea comutatorului și butonului
  • 7:19 Explicarea cablajului
  • 12:25 Explicarea codului Arduino pentru buton
  • 15:56 Selectarea plăcii ESP32 și a portului COM
  • 17:38 Demonstrarea proiectului
  • 18:33 Proiectul-2 Comutarea și LED-ul
  • 19:09 Codul Arduino pentru comutarea LED-ului
  • 21:16 Demonstrarea comutării unui LED

Imagini

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
Limba: 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);
  }
}

Resurse și referințe

Încă nu sunt resurse.

Fișiere📁

Nu sunt disponibile fișiere.