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