.. note:: Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l'univers des Raspberry Pi, Arduino et ESP32 avec d'autres passionnés. **Pourquoi rejoindre ?** - **Support d'experts** : Résolvez les problèmes après-vente et les défis techniques avec l'aide de notre communauté et de notre équipe. - **Apprendre et partager** : Échangez des astuces et des tutoriels pour améliorer vos compétences. - **Aperçus exclusifs** : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus. - **Réductions spéciales** : Profitez de réductions exclusives sur nos produits les plus récents. - **Promotions festives et cadeaux** : Participez à des cadeaux et des promotions de vacances. 👉 Prêt à explorer et à créer avec nous ? Cliquez [|link_sf_facebook|] et rejoignez-nous aujourd'hui ! .. _2.2.1_py_pi5: 2.2.1 Photorésistance ======================== .. note:: .. image:: ../img/mcp3008_and_adc0834.jpg :width: 25% :align: left Selon la version de votre kit, identifiez si vous disposez d’un **ADC0834** ou d’un **MCP3008** et suivez la section correspondante. Introduction --------------- La photorésistance est un composant couramment utilisé pour mesurer l'intensité lumineuse ambiante. Elle aide le contrôleur à reconnaître le jour et la nuit et à réaliser des fonctions de contrôle de l'éclairage telles que la lampe de nuit. Ce projet est très similaire au potentiomètre, et vous pourriez penser qu'il s'agit de changer la tension pour détecter la lumière. Composants nécessaires ------------------------ Dans ce projet, nous avons besoin des composants suivants. .. image:: ../python_pi5/img/2.2.1_photoresistor_list.png Il est certainement pratique d'acheter un kit complet, voici le lien : .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nom - ARTICLES DANS CE KIT - LIEN * - Kit Raphael - 337 - |link_Raphael_kit| Vous pouvez également les acheter séparément via les liens ci-dessous. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCTION DU COMPOSANT - LIEN D'ACHAT * - :ref:`cpn_gpio_extension_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| Schéma -------- .. image:: ../python_pi5/img/2.2.1_photoresistor_schematic_1.png .. image:: ../python_pi5/img/2.2.1_photoresistor_schematic_2.png Procédures expérimentales ----------------------------- **Étape 1 :** Construisez le circuit. .. image:: ../python_pi5/img/2.2.1_photoresistor_circuit.png **Étape 2 :** Allez dans le dossier du code. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Étape 3 :** Exécutez le fichier exécutable. .. raw:: html .. code-block:: sudo python3 2.2.1_Photoresistor_zero.py Lorsque le code s'exécute, la luminosité de la LED changera en fonction de l'intensité lumineuse détectée par la photorésistance. .. warning:: Si vous recevez le message d'erreur ``RuntimeError: Cannot determine SOC peripheral base address``, veuillez consulter :ref:`faq_soc` **Code** .. note:: Vous pouvez **Modifier/Réinitialiser/Copier/Exécuter/Arrêter** le code ci-dessous. Mais avant cela, vous devez vous rendre au chemin du code source comme ``raphael-kit/python-pi5``. Après avoir modifié le code, vous pouvez l'exécuter directement pour voir l'effet. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import PWMLED import ADC0834 import time # Initialize a PWM LED on GPIO pin 22 led = PWMLED(22) # Set up the ADC0834 module ADC0834.setup() # Define a function for mapping values from one range to another def MAP(x, in_min, in_max, out_min, out_max): return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min # Main loop for reading ADC value and controlling LED brightness def loop(): while True: # Read analog value from ADC analogVal = ADC0834.getResult() print('value = %d' % analogVal) # Map the ADC value to a PWM value and set LED brightness led.value = float(analogVal/255) # Wait for 0.2 seconds time.sleep(0.2) # Run the main loop and handle KeyboardInterrupt for graceful shutdown try: loop() except KeyboardInterrupt: # Turn off LED before exiting led.value = 0 **Explication du code** #. Ce segment importe la classe PWMLED de la bibliothèque gpiozero, nécessaire pour contrôler les LEDs PWM. Il inclut également le module ADC0834 pour interfacer avec le convertisseur analogique-numérique, et le module time pour exécuter des fonctions basées sur le temps comme sleep. .. code-block:: python #!/usr/bin/env python3 from gpiozero import PWMLED import ADC0834 import time #. Initialise une LED PWM connectée à la broche GPIO 22 et configure le module ADC0834, le préparant pour une utilisation dans le projet. .. code-block:: python # Initialize a PWM LED on GPIO pin 22 led = PWMLED(22) # Set up the ADC0834 module ADC0834.setup() #. Définit une fonction pour mapper une valeur d'entrée d'une plage à une autre. Cette fonction est cruciale pour traduire les lectures de l'ADC en une plage appropriée pour le contrôle PWM. .. code-block:: python # Define a function for mapping values from one range to another def MAP(x, in_min, in_max, out_min, out_max): return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min #. Cette section contient une boucle qui lit continuellement la valeur analogique de l'ADC0834, la mappe à une valeur PWM correspondante, et ajuste la luminosité de la LED. Un court délai (`time.sleep(0.2)`) est inclus pour rendre les changements visibles et éviter de surcharger le CPU. .. code-block:: python # Main loop for reading ADC value and controlling LED brightness def loop(): while True: # Read analog value from ADC analogVal = ADC0834.getResult() print('value = %d' % analogVal) # Map the ADC value to a PWM value and set LED brightness led.value = float(analogVal/255) # Wait for 0.2 seconds time.sleep(0.2) #. Exécute la fonction loop et inclut une gestion des erreurs pour un arrêt propre sur KeyboardInterrupt. Il s'assure que la LED est éteinte lorsque le programme est arrêté. .. code-block:: python # Run the main loop and handle KeyboardInterrupt for graceful shutdown try: loop() except KeyboardInterrupt: # Turn off LED before exiting led.value = 0