Search Code

ESP32 Tutorial 9/55 - Een drukknop gebruiken om LED te schakelen, indrukken om aan te zetten, indrukken om uit te zetten -SunFounder ESP32 IoT-kit

ESP32 Tutorial 9/55 - Een drukknop gebruiken om LED te schakelen, indrukken om aan te zetten, indrukken om uit te zetten -SunFounder ESP32 IoT-kit

In deze tutorial leren we hoe we een drukknop kunnen gebruiken om een LED aan en uit te schakelen met een ESP32-microcontroller. Het project laat zien hoe we de status van de drukknop kunnen uitlezen en de LED dienovereenkomstig kunnen aansturen. Wanneer de knop wordt ingedrukt, gaat de LED aan, en wanneer deze wordt losgelaten, gaat de LED uit. Dit is een fundamenteel concept voor veel interactieve projecten met de ESP32.

De ESP32 is een krachtige microcontroller met ingebouwde Wi-Fi- en Bluetooth-mogelijkheden, waardoor deze geschikt is voor diverse IoT-toepassingen. In deze les gebruiken we de ESP32 uit de SunFounder ESP32 Starter Kit, die essentiële componenten zoals weerstanden en LED's bevat, om een eenvoudig circuit te maken. Voor een gedetailleerde uitleg van de bedrading en code verwijzen we naar de video (in video op 00:00).

Hardware uitgelegd

De belangrijkste componenten voor dit project zijn de ESP32-microcontroller, een drukknop, een LED en weerstanden. De ESP32 fungeert als het brein van het project en stuurt de LED aan op basis van de status van de drukknop. De drukknop stelt gebruikers in staat om met het circuit te interageren, terwijl de LED visuele feedback geeft wanneer de knop wordt ingedrukt.

De drukknop werkt door het circuit te sluiten wanneer deze wordt ingedrukt, waardoor er stroom kan vloeien. Deze actie stuurt een HOOG signaal naar de aangewezen invoerpin van de ESP32, die vervolgens in de code kan worden uitgelezen. De weerstand die op de knop is aangesloten, zorgt ervoor dat de pin een gedefinieerde status heeft wanneer de knop niet wordt ingedrukt, waardoor grillig gedrag wordt voorkomen.

Drukknop met weerstand

Bedradingsinstructies

Om het circuit te bedraden, begin je met het verbinden van de langere pin van de LED (anode) met een 220-ohm weerstand. Verbind het andere uiteinde van de weerstand met GPIO-pin 26 op de ESP32. De kortere pin van de LED (kathode) moet worden verbonden met de grond. Neem vervolgens de drukknop en verbind één zijde met de 3.3V-voeding op het bord. De andere zijde van de drukknop wordt verbonden met GPIO-pin 14.

Drukknop zonder weerstand
Drukknop zonder weerstand
Drukknop met weerstand
Drukknop met weerstand

Plaats daarnaast een 10k-ohm weerstand van GPIO-pin 14 naar de grond om ervoor te zorgen dat de pin LAAG leest wanneer de knop niet wordt ingedrukt. Verbind ten slotte de gronddraad van de ESP32 met de gemeenschappelijke grond op het breadboard. Deze opstelling stelt de ESP32 in staat om de knopstatus uit te lezen en de LED dienovereenkomstig aan te sturen.

Codevoorbeelden & Uitleg

De kern van het programma begint met het definiëren van de pinnummers voor de knop en de LED met behulp van constanten. Dit zorgt ervoor dat de pintoewijzingen ongewijzigd blijven gedurende de uitvoering van het programma.

// pinnummers instellen
const int buttonPin = 14;  // Knop pin
const int ledPin = 26;     // LED pin

In de setup()-functie initialiseren we de seriële monitor en stellen we de knop pin in als invoer, terwijl we de LED pin configureren als uitvoer. Dit bereidt de ESP32 voor om van de knop te lezen en de LED aan te sturen.

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

Binnen de loop()-functie leest het programma continu de knopstatus en print deze naar de seriële monitor. Als de knop wordt ingedrukt, gaat de LED aan; anders gaat deze uit. Deze logica is essentieel voor het schakelen van de LED op basis van de knopstatus.

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

Deze basisfunctionaliteit zorgt ervoor dat de LED direct reageert op de drukknop. Voor verdere details over het project en de volledige code verwijzen we naar de meegeleverde video (in video op 14:00).

Demonstratie / Wat te verwachten

Zodra de bedrading is voltooid en de code is geüpload, zou het indrukken van de drukknop de LED moeten inschakelen, en het loslaten ervan zal de LED uitschakelen. Dit gedrag bevestigt dat de knopstatus correct wordt uitgelezen. Als de LED niet reageert zoals verwacht, controleer dan de bedrading en zorg ervoor dat de knop correct functioneert.

Tijdens het testen moet je de seriële monitor observeren voor de knopstatuswaarden. Je zou een '1' moeten zien wanneer de knop wordt ingedrukt en een '0' wanneer deze wordt losgelaten. Als de waarden onverwacht fluctueren, kan dit duiden op een bedradingsprobleem of de noodzaak van extra debouncing-logica in de code.

Videotijdstempels

  • 00:00 Start
  • 1:48 Projectintroductie
  • 3:10 Schakelaar en drukknop uitgelegd
  • 7:19 Bedrading uitgelegd
  • 12:25 Arduino-code voor drukknop uitgelegd
  • 15:56 ESP32-board en COM-poort selecteren
  • 17:38 Demonstratie van het project
  • 18:33 Project-2 Schakelen en LED
  • 19:09 Arduino-code om LED te schakelen
  • 21:16 Demonstratie van het schakelen van een LED

Afbeeldingen

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

Hulpmiddelen en referenties

Nog geen middelen.

Bestanden📁

Geen bestanden beschikbaar.