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
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 :
Schematic Diagram
Procédure expérimentale
Étape 1 : Construisez le circuit.
É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
Ce segment importe la classe
PWMLEDde la bibliothèquegpiozero, nécessaire pour contrôler les LED en PWM. Il inclut également le moduleADC0834pour interfacer avec le convertisseur analogique-numérique, ainsi que le moduletimepour les fonctions basées sur le temps, telles quesleep.#!/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 pour son utilisation dans le projet.
# Initialiser une LED PWM sur la broche GPIO 22 led = PWMLED(22) # Configurer le module ADC0834 ADC0834.setup()
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
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)
Exécute la fonction
loopet inclut la gestion des erreurs pour un arrêt propre lors d’unKeyboardInterrupt. 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