Bemerkung

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!

Lektion 40: Berührungssensor-Lichtumschalter

Dieses Projekt ist eine einfache Implementierung eines Ampelsteuerungssystems unter Verwendung eines Berührungssensors und eines Ampel-LED-Moduls. Das Aktivieren des Berührungssensors startet eine Sequenz, bei der die LEDs in folgender Reihenfolge aufleuchten: Rot -> Gelb -> Grün.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:

Name

ITEMS IN THIS KIT

LINK

Universal Maker Sensor Kit

94

Universal Maker Sensor Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

Component Introduction

Purchase Link

ESP32 & Development Board

BUY

Touch-Sensormodul

-

Ampelmodul

-

Steckbrett

KAUFEN

Verdrahtung

../_images/Lesson_40_Touch_toggle_light_esp32_bb.png

Code

Code-Analyse

Die Funktionsweise dieses Projekts ist einfach: Eine Berührungserkennung am Sensor löst das Aufleuchten der nächsten LED in der Sequenz aus (Rot -> Gelb -> Grün), gesteuert durch die Variable currentLED.

  1. Pins definieren und Anfangswerte festlegen

    // Define pins for touch sensor and LEDs
    const int touchSensorPin = 14;  // touch sensor pin
    const int rledPin = 27;         // red LED pin
    const int yledPin = 26;         // yellow LED pin
    const int gledPin = 25;         // green LED pin
    
    int lastTouchState;     // the previous state of touch sensor
    int currentTouchState;  // the current state of touch sensor
    int currentLED = 0;     // current LED 0->Red, 1->Yellow, 2->Green
    

    Diese Zeilen stellen die Pin-Verbindungen für die Arduino-Komponenten her und initialisieren den Berührungssensor sowie die LED-Zustände.

  2. setup() Funktion

    void setup() {
      Serial.begin(9600);              // initialize serial
      pinMode(touchSensorPin, INPUT);  // configure touch sensor pin as input
    
      // set LED pins as outputs
      pinMode(rledPin, OUTPUT);
      pinMode(yledPin, OUTPUT);
      pinMode(gledPin, OUTPUT);
    
      currentTouchState = digitalRead(touchSensorPin);
    }
    

    Diese Funktion konfiguriert die anfängliche Einrichtung für den Arduino, definiert Eingangs- und Ausgangsmodi und startet die serielle Kommunikation für das Debugging.

  3. loop() Funktion

    void loop() {
      lastTouchState = currentTouchState;               // save the last state
      currentTouchState = digitalRead(touchSensorPin);  // read new state
    
      // check if the touch sensor was just touched
      if (lastTouchState == LOW && currentTouchState == HIGH) {
        Serial.println("The sensor is touched");
    
        turnAllLEDsOff();  // Turn off all LEDs
    
        // switch on the next LED in sequence
        switch (currentLED) {
          case 0:
            digitalWrite(rledPin, HIGH);
            currentLED = 1;
            break;
          case 1:
            digitalWrite(yledPin, HIGH);
            currentLED = 2;
            break;
          case 2:
            digitalWrite(gledPin, HIGH);
            currentLED = 0;
            break;
        }
      }
    }
    

    Die Schleife überwacht kontinuierlich den Berührungssensor und schaltet die LEDs durch, wenn eine Berührung erkannt wird, wobei stets nur eine LED leuchtet.

  4. Funktion zum Ausschalten der LEDs

    // function to turn off all LEDs
    void turnAllLEDsOff() {
      digitalWrite(rledPin, LOW);
      digitalWrite(yledPin, LOW);
      digitalWrite(gledPin, LOW);
    }
    

    Diese Hilfsfunktion schaltet alle LEDs aus und unterstützt so den Umschaltprozess.