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.1 Fotowiderstand

Bemerkung

../_images/mcp3008_and_adc0834.jpg

Abhängig von Ihrer Kit-Version identifizieren Sie bitte, ob Sie ADC0834 oder MCP3008 haben, und fahren Sie mit dem entsprechenden Abschnitt fort.

Einführung

Der Fotowiderstand ist eine häufig verwendete Komponente zur Messung der Umgebungslichtintensität im Alltag. Er hilft dem Controller, Tag und Nacht zu erkennen und Lichtsteuerungsfunktionen wie eine Nachtlampe zu realisieren. Dieses Projekt ähnelt sehr dem Potentiometer, und man könnte denken, es ändere die Spannung, um Licht zu erfassen.

Erforderliche Komponenten

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

../_images/list_2.2.1_photoresistor.png

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

Name

ARTIKEL IN DIESEM KIT

LINK

Raphael Kit

337

Raphael Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

GPIO Extension Board

KAUFEN

Steckbrett

KAUFEN

Jumper-Kabel

KAUFEN

Widerstand

KAUFEN

LED

KAUFEN

ADC0834

-

Fotowiderstand

KAUFEN

Schaltplan

../_images/image321.png ../_images/image322.png

Experimentelle Verfahren

Schritt 1: Bauen Sie den Schaltkreis.

../_images/image198.png

Schritt 2: Navigieren Sie zum Ordner des Codes.

cd ~/raphael-kit/python/

Schritt 3: Führen Sie die ausführbare Datei aus.

sudo python3 2.2.1_Photoresistor.py

Wenn der Code läuft, wird die Helligkeit der LED je nach vom Fotowiderstand erfasster Lichtintensität variieren.

Code

Bemerkung

Sie können den untenstehenden Code Ändern/Zurücksetzen/Kopieren/Ausführen/Stoppen. Bevor Sie das tun, müssen Sie jedoch zum Quellcodepfad wie raphael-kit/python navigieren. Nachdem Sie den Code geändert haben, können Sie ihn direkt ausführen, um das Ergebnis zu sehen.

#!/usr/bin/env python3
import RPi.GPIO as GPIO
import ADC0834
import time
LedPin = 22
def setup():
    global led_val
    # Set the GPIO modes to BCM Numbering
    GPIO.setmode(GPIO.BCM)
    # Set all LedPin's mode to output and initial level to High(3.3v)
    GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH)
    ADC0834.setup()
    # Set led as pwm channel and frequece to 2KHz
    led_val = GPIO.PWM(LedPin, 2000)
    # Set all begin with value 0
    led_val.start(0)
def destroy():
    # Stop all pwm channel
    led_val.stop()
    # Release resource
    GPIO.cleanup()
def loop():
    while True:
        analogVal = ADC0834.getResult()
        print ('analog value = %d' % analogVal)
        led_val.ChangeDutyCycle(analogVal*100/255)
        time.sleep(0.2)
if __name__ == '__main__':
    setup()
    try:
        loop()
    except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the program destroy() will be executed.
        destroy()

Code-Erklärung

def loop():
    while True:
        analogVal = ADC0834.getResult()
        print ('analog value = %d' % analogVal)
        led_val.ChangeDutyCycle(analogVal*100/255)
        time.sleep(0.2)

Lesen Sie den Analogwert von CH0 des ADC0834. Standardmäßig wird die Funktion getResult() verwendet, um den Wert von CH0 zu lesen. Wenn Sie andere Kanäle lesen möchten, geben Sie bitte 1, 2 oder 3 in die () der Funktion getResult() ein. Als Nächstes sollten Sie den Wert über die Print-Funktion ausgeben. Da das sich ändernde Element der Tastverhältnis von LedPin ist, wird die Rechenformel analogVal*100/255 benötigt, um analogVal in Prozentwerte umzurechnen. Schließlich wird ChangeDutyCycle() aufgerufen, um den Prozentsatz in LedPin zu schreiben.

Phänomen-Bild

../_images/image199.jpeg