V tomto návode sa naučíme, ako pomocou tlačidla prepínať LED diódu zapnutú a vypnutú s mikrokontrolérom ESP32. Projekt ukáže, ako čítať stav tlačidla a podľa toho ovládať LED diódu. Keď je tlačidlo stlačené, LED dióda sa zapne, a keď sa uvoľní, vypne sa. Toto je základný koncept pre mnohé interaktívne projekty s ESP32.
ESP32 je výkonný mikrokontrolér so vstavanými funkciami Wi-Fi a Bluetooth, vďaka čomu je vhodný pre rôzne IoT aplikácie. V tejto lekcii použijeme ESP32 zo SunFounder ESP32 Starter Kitu, ktorý obsahuje základné komponenty ako rezistory a LED diódy, na vytvorenie jednoduchého obvodu. Podrobné vysvetlenie zapojenia a kódu nájdete vo videu (vo videu o 00:00).
Vysvetlenie hardvéru
Kľúčové komponenty pre tento projekt zahŕňajú mikrokontrolér ESP32, tlačidlo, LED diódu a rezistory. ESP32 funguje ako mozog projektu, ovláda LED diódu na základe stavu tlačidla. Tlačidlo umožňuje používateľom interagovať s obvodom, zatiaľ čo LED dióda poskytuje vizuálnu spätnú väzbu, keď je tlačidlo stlačené.
Tlačidlo funguje tak, že pri stlačení uzavrie obvod, čo umožní tok prúdu. Táto akcia vyšle signál HIGH na určený vstupný pin ESP32, ktorý sa potom dá prečítať v kóde. Rezistor pripojený k tlačidlu zabezpečuje, že pin má definovaný stav, keď tlačidlo nie je stlačené, čím sa predchádza nepravidelnému správaniu.
Tlačidlo s rezistorom
Pokyny na zapojenie
Pri zapájaní obvodu začnite pripojením dlhšieho pinu LED diódy (anóda) k 220-ohmovému rezistoru. Druhý koniec rezistora pripojte na GPIO pin 26 na ESP32. Kratší pin LED diódy (katóda) by mal byť pripojený na zem. Potom vezmite tlačidlo a pripojte jednu stranu na 3,3V napájanie na doske. Druhá strana tlačidla sa pripojí na GPIO pin 14.
Tlačidlo bez rezistora
Tlačidlo bez rezistora
Tlačidlo s rezistorom
Tlačidlo s rezistorom
Okrem toho umiestnite 10k-ohmový rezistor z GPIO pinu 14 na zem, aby sa zabezpečilo, že pin číta LOW, keď tlačidlo nie je stlačené. Nakoniec pripojte uzemňovací vodič z ESP32 na spoločnú zem na breadboarde. Toto nastavenie umožní ESP32 čítať stav tlačidla a podľa toho ovládať LED diódu.
Príklady kódu a vysvetlenie
Jadro programu začína definovaním čísel pinov pre tlačidlo a LED diódu pomocou konštánt. To zabezpečuje, že priradenia pinov zostanú nezmenené počas celého vykonávania programu.
// nastavenie čísel pinov
const int buttonPin = 14; // Pin tlačidla
const int ledPin = 26; // Pin LED diódy
Vo funkcii setup() inicializujeme sériový monitor a nastavíme pin tlačidla ako vstup, zatiaľ čo pin LED diódy nakonfigurujeme ako výstup. Tým sa ESP32 pripraví na čítanie z tlačidla a ovládanie LED diódy.
Vo vnútri funkcie loop() program nepretržite číta stav tlačidla a vypisuje ho do sériového monitora. Ak je tlačidlo stlačené, LED dióda sa zapne; v opačnom prípade sa vypne. Táto logika je nevyhnutná na prepínanie LED diódy na základe stavu tlačidla.
Táto základná funkcia umožňuje LED dióde priamo reagovať na tlačidlo. Ďalšie podrobnosti o projekte a kompletný kód nájdete v poskytnutom videu (vo videu o 14:00).
Demonštrácia / Čo očakávať
Po dokončení zapojenia a nahratí kódu by stlačenie tlačidla malo zapnúť LED diódu a jeho uvoľnenie ju vypne. Toto správanie potvrdzuje, že stav tlačidla sa číta správne. Ak LED dióda nereaguje podľa očakávania, skontrolujte zapojenie a uistite sa, že tlačidlo funguje správne.
Počas testovania sledujte sériový monitor pre hodnoty stavu tlačidla. Mali by ste vidieť '1', keď je tlačidlo stlačené, a '0', keď je uvoľnené. Ak hodnoty neočakávane kolíšu, môže to naznačovať problém so zapojením alebo potrebu dodatočnej logiky na odstránenie zákmitov v kóde.
// 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);
}
}
Vyhlásenie: Ako partner Amazon zarábame na kvalifikovaných nákupoch. To znamená, že môžeme dostať malú províziu, ak kliknete na odkaz a uskutočníte nákup bez ďalších nákladov pre vás.