.. note::
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 [|link_sf_facebook|] und treten Sie heute bei!
.. _2.2.1_py:
2.2.1 Fotowiderstand
====================
.. note::
.. image:: ../img/mcp3008_and_adc0834.jpg
:width: 25%
:align: left
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.
.. image:: ../img/list_2.2.1_photoresistor.png
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Name
- ARTIKEL IN DIESEM KIT
- LINK
* - Raphael Kit
- 337
- |link_Raphael_kit|
Sie können diese auch einzeln über die untenstehenden Links kaufen.
.. list-table::
:widths: 30 20
:header-rows: 1
* - KOMPONENTENBESCHREIBUNG
- KAUF-LINK
* - :ref:`cpn_gpio_board`
- |link_gpio_board_buy|
* - :ref:`cpn_breadboard`
- |link_breadboard_buy|
* - :ref:`cpn_wires`
- |link_wires_buy|
* - :ref:`cpn_resistor`
- |link_resistor_buy|
* - :ref:`cpn_led`
- |link_led_buy|
* - :ref:`cpn_adc0834`
- \-
* - :ref:`cpn_photoresistor`
- |link_photoresistor_buy|
Schaltplan
----------
.. image:: ../img/image321.png
.. image:: ../img/image322.png
Experimentelle Verfahren
----------------------------
**Schritt 1:** Bauen Sie den Schaltkreis.
.. image:: ../img/image198.png
**Schritt 2:** Navigieren Sie zum Ordner des Codes.
.. raw:: html
.. code-block::
cd ~/raphael-kit/python/
**Schritt 3:** Führen Sie die ausführbare Datei aus.
.. raw:: html
.. code-block::
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**
.. note::
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.
.. raw:: html
.. code-block:: python
#!/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**
.. code-block:: python
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
-------------
.. image:: ../img/image199.jpeg