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 42: Touch-Schalter für Licht

Dieses Projekt ist eine einfache Umsetzung eines Verkehrslichtsteuerungssystems unter Verwendung eines Berührungssensors und eines Verkehrslicht-LED-Moduls. Die Aktivierung des Berührungssensors löst eine Sequenz aus, in der die LEDs in folgender Reihenfolge leuchten: 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 von den untenstehenden Links kaufen.

Component Introduction

Purchase Link

Arduino UNO R3 or R4

KAUFEN

Touch-Sensormodul

-

Ampelmodul

-

Steckbrett

KAUFEN

Verkabelung

../_images/Lesson_42_Touch_toggle_light_uno_bb.png

Code

Code-Analyse

Die Funktionsweise dieses Projekts ist unkompliziert: Eine Berührungserkennung am Sensor löst die Beleuchtung der nächsten LED in der Sequenz (Rot -> Gelb -> Grün) aus, gesteuert durch die Variable currentLED. 1. Pins und Startwerte definieren

const int touchSensorPin = 2;  // Touch sensor pin
const int rledPin = 7;         // Red LED pin
const int yledPin = 8;         // Yellow LED pin
const int gledPin = 9;         // Green LED pin
int lastTouchState;            // Previous touch sensor state
int currentTouchState;         // Current touch sensor state
int currentLED = 0;            // Current LED: 0->Red, 1->Yellow, 2->Green

Diese Zeilen definieren die Pin-Verbindungen für die Komponenten des Arduino-Boards und initialisieren die Zustände des Berührungssensors und der LEDs.

  1. setup() Funktion

    void setup() {
      Serial.begin(9600);              // Initialize serial communication
      pinMode(touchSensorPin, INPUT);  // Set touch sensor pin as input
      // Configure LED pins as outputs
      pinMode(rledPin, OUTPUT);
      pinMode(yledPin, OUTPUT);
      pinMode(gledPin, OUTPUT);
      currentTouchState = digitalRead(touchSensorPin); // Read initial touch state
    }
    

    Diese Funktion konfiguriert das initiale Setup für den Arduino, definiert Eingangs- und Ausgangsmodi und startet die serielle Kommunikation zum Debuggen.

  2. loop() Funktion

    void loop() {
      lastTouchState = currentTouchState;                        // Store the last state
      currentTouchState = digitalRead(touchSensorPin);           // Read new touch state
      if (lastTouchState == LOW && currentTouchState == HIGH) {  // Detect touch
        Serial.println("Sensor touched");
        turnAllLEDsOff();  // Turn off all LEDs
        // Activate 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, durchläuft die LEDs, wenn eine Berührung erkannt wird, und stellt sicher, dass jeweils nur eine LED eingeschaltet ist.

  3. LEDs ausschalten Funktion

    void turnAllLEDsOff() {
      // Set all LED pins to LOW, turning them off
      digitalWrite(rledPin, LOW);
      digitalWrite(yledPin, LOW);
      digitalWrite(gledPin, LOW);
    }
    

    Diese Hilfsfunktion schaltet alle LEDs aus und hilft beim Durchlaufen des Zyklus.