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!

2.2.6 Geschwindigkeitssensor-Modul

Einführung

In diesem Projekt werden wir den Einsatz des Geschwindigkeitssensor-Moduls erlernen. Ein Geschwindigkeitssensor-Modul ist eine Art von Tachometer, der verwendet wird, um die Geschwindigkeit eines rotierenden Objekts wie eines Motors zu messen.

Benötigte Komponenten

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

../_images/2.2.6component.png

Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

Raphael Kit

337

Raphael Kit

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

KOMPONENTENBESCHREIBUNG

KAUF-LINK

GPIO Extension Board

KAUFEN

Steckbrett

KAUFEN

Jumper-Kabel

KAUFEN

Widerstand

KAUFEN

LED

KAUFEN

Geschwindigkeitssensormodul

-

Schaltplan

../_images/2.2.6circuit.png

Experimentelle Verfahren

Schritt 1: Schaltung aufbauen.

../_images/2.2.6fritzing.png

Schritt 2: Verzeichnis wechseln.

cd ~/raphael-kit/python

Schritt 3: Starten.

sudo python3 2.2.6_speed_sensor_module.py

Nachdem der Code ausgeführt wurde, leuchtet die grüne LED auf. Wenn Sie ein Hindernis in den Spalt des Geschwindigkeitssensor-Moduls stellen, wird „Licht blockiert“ auf dem Bildschirm angezeigt und die rote LED leuchtet auf. Entfernen Sie das Hindernis, und die grüne LED leuchtet wieder auf.

Code

Bemerkung

Sie können den untenstehenden Code Modifizieren/Zurücksetzen/Kopieren/Starten/Stoppen. Bevor Sie dies tun, müssen Sie jedoch zum Quellcode-Pfad, wie raphael-kit/python, navigieren. Nachdem Sie den Code modifiziert haben, können Sie ihn direkt ausführen, um den Effekt zu sehen.

#!/usr/bin/env python3
import RPi.GPIO as GPIO

speedPin  = 17
Gpin   = 27
Rpin   = 22

def setup():
    GPIO.setmode(GPIO.BCM)       #
    GPIO.setup(Gpin, GPIO.OUT)     # Set Green Led Pin mode to output
    GPIO.setup(Rpin, GPIO.OUT)     # Set Red Led Pin mode to output
    GPIO.setup(speedPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)    # Set speedPin's mode is input, and pull up to high level(3.3V)
    GPIO.add_event_detect(speedPin, GPIO.BOTH, callback=detect, bouncetime=200)

def Led(x):
    if x == 0:
        GPIO.output(Rpin, 0)
        GPIO.output(Gpin, 1)
    if x == 1:
        GPIO.output(Rpin, 1)
        GPIO.output(Gpin, 0)
        print ('Light was blocked')

def detect(chn):
    Led(GPIO.input(speedPin))

def loop():
    while True:
        pass

def destroy():
    GPIO.output(Gpin, GPIO.LOW)       # Green led off
    GPIO.output(Rpin, GPIO.LOW)       # Red led off
    GPIO.cleanup()                     # Release resource

if __name__ == '__main__':     # Program start from here
    setup()
    try:
        loop()
    except KeyboardInterrupt:  # When 'Ctrl+C' is pressed, the child program destroy() will be  executed.
        destroy()

Code-Erklärung

GPIO.add_event_detect(speedPin, GPIO.BOTH, callback=detect, bouncetime=200)

Füge hier ein Ereignis hinzu, welches durch eine Pegeländerung an speedPin ausgelöst wird und rufe detect() auf, um die beiden LEDs ein- und auszuschalten.

def Led(x):
    if x == 0:
        GPIO.output(Rpin, 0)
        GPIO.output(Gpin, 1)
    if x == 1:
        GPIO.output(Rpin, 1)
        GPIO.output(Gpin, 0)
        print ('Light was blocked')

Definiere eine Funktion Led(), die die rote LED einschaltet und Das Licht wurde blockiert ausgibt, wenn der Parameter 1 ist; schaltet die grüne LED ein, wenn der Parameter 0 ist.

def detect(chn):
    Led(GPIO.input(speedPin))

Definiere eine Rückruffunktion, bei der der Wert von speedPin das Ein- oder Ausschalten der beiden LEDs steuert.

Phänomen-Bild

../_images/2.2.6photo_interrrupter.JPG