Note
Bonjour et bienvenue dans la communauté SunFounder Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez plus profondément dans l’univers du Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.
Pourquoi nous rejoindre ?
Support d’experts : Résolvez les problèmes après-vente et surmontez les défis techniques avec l’aide de notre communauté et de notre équipe.
Apprendre & Partager : Échangez des conseils et des tutoriels pour perfectionner 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 réductions exclusives sur nos nouveaux produits.
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] pour nous rejoindre dès aujourd’hui !
2.1.4 Potentiomètre
Note
Selon la version de votre kit, identifiez si vous disposez du ADC0834 ou du MCP3008 et suivez la section correspondante.
Introduction
La fonction ADC (convertisseur analogique-numérique) est utilisée pour convertir des signaux analogiques en signaux numériques. Dans cette expérience, le module ADC0834 est employé pour réaliser cette fonction. Ici, nous illustrons ce processus en utilisant un potentiomètre. Le potentiomètre modifie la grandeur physique (la tension), qui est ensuite convertie par l’ADC.
Composants nécessaires
Pour ce projet, nous aurons besoin des composants suivants.
Schéma de circuit
Procédure expérimentale
Étape 1 : Construisez le circuit.
Note
Placez le composant en vous référant à la position correspondante indiquée sur l’image. Notez que l’encoche sur le composant doit être orientée vers la gauche lorsqu’il est en place.
Étape 2 : Ouvrez le fichier de code.
cd ~/davinci-kit-for-raspberry-pi/python-pi5
Étape 3 : Exécutez le code.
sudo python3 2.1.4_Potentiometer.py
Une fois le code exécuté, tournez le bouton du potentiomètre, l’intensité de la LED changera en conséquence.
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 observer 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()
def MAP(x, in_min, in_max, out_min, out_max):
"""
Map a value from one range to another.
:param x: The value to be mapped.
:param in_min: The lower bound of the value's current range.
:param in_max: The upper bound of the value's current range.
:param out_min: The lower bound of the value's target range.
:param out_max: The upper bound of the value's target range.
:return: The mapped value.
"""
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
try:
while True:
# Lire la valeur actuelle du module ADC0834
res = ADC0834.getResult()
print('res = %d' % res)
# Convertir la valeur de l'ADC en une plage adaptée pour régler la luminosité de la LED
R_val = MAP(res, 0, 255, 0, 100)
# Régler la luminosité de la LED
led.value = float(R_val / 100)
# Attendre 0,2 secondes avant la prochaine lecture
time.sleep(0.2)
# Sortie propre lors de l'appui sur 'Ctrl+C'
except KeyboardInterrupt:
led.value = 0 # Éteindre la LED
Explication du code
gpiozeroest utilisé pour contrôler la LED PWM,ADC0834pour la conversion analogique-numérique, ettimepour les temporisations.#!/usr/bin/env python3 from gpiozero import PWMLED import ADC0834 import time
Initialisez une LED PWM connectée à la broche GPIO 22 et configurez le convertisseur ADC0834.
# Initialiser une LED PWM sur la broche GPIO 22 led = PWMLED(22) # Configurer le module ADC0834 ADC0834.setup()
Définissez une fonction appelée
MAPpour convertir une plage de valeurs en une autre, utile pour ajuster les niveaux de luminosité de la LED en fonction des valeurs de l’ADC.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
Lisez continuellement la valeur de l’ADC, ajustez la luminosité de la LED en conséquence et implémentez un délai de 0,2 secondes pour améliorer la stabilité.
try: while True: # Get the current reading from the ADC0834 module res = ADC0834.getResult() print('res = %d' % res) # Map the ADC value to a range suitable for setting LED brightness R_val = MAP(res, 0, 255, 0, 100) # Set the LED brightness led.value = float(R_val / 100) # Wait for 0.2 seconds before reading again time.sleep(0.2) # Sortie propre lors de l'appui sur 'Ctrl+C' except KeyboardInterrupt: led.value = 0 # Éteindre la LED