Note

Bonjour et bienvenue dans la communauté SunFounder dédiée aux passionnés de Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez plus profondément dans l’univers du Raspberry Pi, de l’Arduino et de l’ESP32 avec d’autres passionnés.

Pourquoi nous rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et relevez les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre & Partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Bénéficiez d’un accès anticipé aux nouvelles annonces de produits et aux avant-premières.

  • Réductions spéciales : Profitez de remises exclusives sur nos produits les plus récents.

  • Promotions festives et cadeaux : Participez à des concours et des promotions spéciales lors des fêtes.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [Ici] et rejoignez-nous dès aujourd’hui !

2.2.1 Photoresistor

Note

../_images/mcp3008_and_adc0834.jpg

Selon la version de votre kit, identifiez si vous disposez du ADC0834 ou du MCP3008 et suivez la section correspondante.

Introduction

La photorésistance est un composant couramment utilisé pour mesurer l’intensité de la lumière ambiante. Elle permet au contrôleur de distinguer le jour et la nuit, et d’implémenter des fonctions de contrôle de la lumière, comme l’activation d’une lampe de nuit. Ce projet est très similaire à celui du potentiomètre, mais au lieu de changer la tension, la photorésistance détecte la lumière.

Composants nécessaires

Pour ce projet, nous aurons besoin des composants suivants :

../_images/2.2.1_photoresistor_list.png

Schematic Diagram

../_images/2.2.1_photoresistor_schematic_1.png ../_images/2.2.1_photoresistor_schematic_2.png

Procédure expérimentale

Étape 1 : Construisez le circuit.

../_images/2.2.1_photoresistor_circuit.png

Étape 2 : Accédez au répertoire contenant le code.

cd ~/davinci-kit-for-raspberry-pi/python-pi5

Étape 3 : Exécutez le fichier.

sudo python3 2.2.1_Photoresistor.py

Lorsque le code s’exécute, la luminosité de la LED variera en fonction de l’intensité lumineuse détectée par la photorésistance.

Avertissement

En cas d’erreur RuntimeError: Cannot determine SOC peripheral base address, veuillez consulter Si gpiozero ne fonctionne pas..

Code

Note

Vous pouvez Modifier/Réinitialiser/Copier/Exécuter/Arrêter le code ci-dessous. Mais avant cela, assurez-vous de vous rendre dans le répertoire source tel que davinci-kit-for-raspberry-pi/python-pi5. Après modification, vous pouvez exécuter le code pour voir le résultat.

#!/usr/bin/env python3
from gpiozero import PWMLED
import ADC0834
import time

# Initialiser une LED PWM sur la broche GPIO 22
led = PWMLED(22)

# Configurer le module ADC0834
ADC0834.setup()

# Définir une fonction pour mapper les valeurs d'une plage à une autre
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

# Boucle principale pour lire les valeurs de l'ADC et contrôler la luminosité de la LED
def loop():
    while True:
        # Lire la valeur analogique depuis l'ADC
        analogVal = ADC0834.getResult()
        print('value = %d' % analogVal)

        # Mapper la valeur de l'ADC sur une valeur PWM et régler la luminosité de la LED
        led.value = float(analogVal/255)

        # Attendre 0,2 seconde
        time.sleep(0.2)

# Exécuter la boucle principale et gérer KeyboardInterrupt pour un arrêt propre
try:
    loop()
except KeyboardInterrupt:
    # Éteindre la LED avant de quitter
    led.value = 0

Explication du code

  1. Ce segment importe la classe PWMLED de la bibliothèque gpiozero, nécessaire pour contrôler les LED en PWM. Il inclut également le module ADC0834 pour interfacer avec le convertisseur analogique-numérique, ainsi que le module time pour les fonctions basées sur le temps, telles que sleep.

    #!/usr/bin/env python3
    from gpiozero import PWMLED
    import ADC0834
    import time
    
  2. Initialise une LED PWM connectée à la broche GPIO 22 et configure le module ADC0834 pour son utilisation dans le projet.

    # Initialiser une LED PWM sur la broche GPIO 22
    led = PWMLED(22)
    
    # Configurer le module ADC0834
    ADC0834.setup()
    
  3. Définit une fonction pour mapper une valeur d’entrée d’une plage à une autre. Cette fonction est essentielle pour traduire les lectures de l’ADC en une plage appropriée pour le contrôle PWM de la LED.

    # Définir une fonction pour mapper les valeurs d'une plage à une autre
    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
    
  4. Cette section contient une boucle qui lit continuellement la valeur analogique de l’ADC0834, la mappe sur une valeur PWM correspondante et ajuste la luminosité de la LED. Une brève pause (time.sleep(0.2)) est incluse pour rendre les changements visibles et éviter une surcharge du processeur.

    # Boucle principale pour lire les valeurs de l'ADC et contrôler la luminosité de la LED
    def loop():
        while True:
            # Lire la valeur analogique depuis l'ADC
            analogVal = ADC0834.getResult()
            print('value = %d' % analogVal)
    
            # Mapper la valeur de l'ADC sur une valeur PWM et régler la luminosité de la LED
            led.value = float(analogVal/255)
    
            # Attendre 0,2 seconde
            time.sleep(0.2)
    
  5. Exécute la fonction loop et inclut la gestion des erreurs pour un arrêt propre lors d’un KeyboardInterrupt. Cela garantit que la LED est éteinte lorsque le programme se termine.

    # Exécuter la boucle principale et gérer KeyboardInterrupt pour un arrêt propre
    try:
        loop()
    except KeyboardInterrupt:
        # Éteindre la LED avant de quitter
        led.value = 0