5.1 Beleuchtungssystem
5.1.1 Eine LED zum Leuchten bringen
Öffnen Sie den Code 5.1.1Blink mit der Arduino IDE.
#define LED_BUILTIN 27 //LED pins
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Wählen Sie das Board ESP32 Dev Module und den COM-Port aus und laden Sie den Code hoch.

Testergebnis:
Die LED blinkt pro Sekunde, da io27 auf dem ESP32-Board jede Sekunde abwechselnd einen hohen und niedrigen Pegel ausgibt.
Leistungspegel |
Ergebnis |
|---|---|
HIGH |
LED AN |
LOW |
LED AUS |

5.1.2 Die LED mit PWM steuern
Öffnen Sie den Code 5.1.2PWM mit der Arduino IDE.
#define led 27 //Define LED pin
void setup(){
pinMode(led, OUTPUT); //Set pin to output mode
}
void loop(){
for(int i=0; i<255; i++) //for loop statement. Constantly increase variable i till 255, exit the loop
{
analogWrite(led, i); //PWM output, used to control the brightness of LED
delay(3);
}
for(int i=255; i>0; i--) //for loop statement. Constantly decrease variable i till 0, exit the loop
{
analogWrite(led, i);
delay(3);
}
}
Wählen Sie das Board ESP32 Dev Module und den COM-Port aus und laden Sie den Code hoch.

Testergebnis:
Bei einer geeigneten Signalfrequenz ändert PWM die effektive Ausgangsspannung, indem es das Tastverhältnis in einer Periode ändert. Einfach ausgedrückt: Innerhalb einer bestimmten Zeit gilt, je höher der IO-Port einen hohen Pegel ausgibt, desto größer ist der PWM-Wert und desto heller leuchtet die LED.
Das LED-Modul leuchtet langsam von dunkel nach hell auf und dann wieder von dunkel nach hell.

5.1.3 Den digitalen Wert des Tasters lesen
Öffnen Sie den Code 5.1.3Button mit der Arduino IDE.
#define ButtonPin 5 //Define the button pin to 5
void setup() {
//initialize serial port and set baud rate to 9600
Serial.begin(9600);
//Set pin to input mode
pinMode(ButtonPin,INPUT);
}
void loop() {
//Define a value as the read button value
int ReadValue = digitalRead(ButtonPin);
//Serial port prints the defined value
Serial.print("The current status of the button is : ");
Serial.println(ReadValue);
delay(500);
}
Wählen Sie das Board ESP32 Dev Module und den COM-Port aus und laden Sie den Code hoch.

Testergebnis:
Öffnen Sie den seriellen Monitor und stellen Sie die Baudrate auf 9600 ein.
Wenn die Taste losgelassen wird, ist der Wert 1; wenn Sie die Taste drücken, wird er 0.
Das Prinzip des Tastenmoduls ist ein Schaltkreis, der von dieser Taste gesteuert wird.
Wenn die Taste gedrückt wird, ist der Stromkreis geschlossen, so dass Strom durch die Taste zu GND fließt, wodurch der digitale Eingangspin einen niedrigen Pegel erkennt.
Wenn die Taste losgelassen wird, wird der Stromkreis unterbrochen und der Pin-Pegel steigt aufgrund eines Pull-up-Widerstands an, wodurch der digitale Pin einen hohen Pegel erkennt.

5.1.4 Selbsthaltender Taster
Öffnen Sie den Code 5.1.4 Self-Locking_Button mit der Arduino IDE.
#define ButtonPin 5 //Define the button pin
int value = 0; //Define a value to determine the status of button
void setup() {
//Initialize the serial port and set baud rate to 9600
Serial.begin(9600);
//Set the pin to inpu tmode
pinMode(ButtonPin,INPUT);
}
void loop() {
//Define a value as the read button value
int ReadValue = digitalRead(ButtonPin);
//Detect whether the button is pressed
if (ReadValue == 0) {
//Eliminate the button shake
delay(10);
if (ReadValue == 0) {
value = !value;
Serial.print("The current status of the button is : ");
Serial.println(value);
}
//Detect again whether the button is still pressed
//Pressed: execute the loop; Released: exit the loop to next step
while (digitalRead(ButtonPin) == 0);
}
}
Wählen Sie das Board ESP32 Dev Module und den COM-Port aus und laden Sie den Code hoch.

Testergebnis:
Öffnen Sie den seriellen Monitor und stellen Sie die Baudrate auf 9600 ein.
Wenn Sie die Taste einmal drücken, wird 1 angezeigt. Wenn Sie die Taste ein zweites Mal drücken, wird der Wert 0. Nun verfügt eine gewöhnliche Taste über die Funktion eines selbsthaltenden Tasters.

5.1.5 Den Taster zur Steuerung des LED-Moduls verwenden
Öffnen Sie den Code 5.1.5 Lighting-System mit der Arduino IDE.
#define ButtonPin 5 //Define a button pin
#define LED 27 //Define LED pin
int value = 0; //Define a value to detect button status
void setup() {
//initialize serial port and set baud rate to 9600
Serial.begin(9600);
//Set pin to input mode
pinMode(ButtonPin,INPUT);
//Set pin to output mode
pinMode(LED,OUTPUT);
}
void loop() {
//Define a value as the read button value
int ReadValue = digitalRead(ButtonPin);
//Detect whether the button is pressed
if (ReadValue == 0) {
//Eliminate the button shake
delay(10);
if (ReadValue == 0) {
value = !value;
//Detect the button status, press once to light up LED, press again to turn off LED, in a loop
if(value) {
digitalWrite(LED,HIGH);
}else{
digitalWrite(LED,LOW);
}
}
//Detect the button status again
//Pressed: execute the loop; Released: exit the loop to next step
while (digitalRead(ButtonPin) == 0);
}
}
Wählen Sie das Board ESP32 Dev Module und den COM-Port aus und laden Sie den Code hoch.

Testergebnis:
Wenn Sie die Taste einmal drücken, leuchtet die LED auf; wenn Sie sie erneut drücken,