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

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

../_images/2.1.7_potentiometer_list.png

Schéma de circuit

../_images/2.1.7_potentiometer_second_1.png ../_images/2.1.7_potentiometer_second_2.png

Procédure expérimentale

Étape 1 : Construisez le circuit.

../_images/2.1.7_Potentiometer_circuit.png

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

  1. gpiozero est utilisé pour contrôler la LED PWM, ADC0834 pour la conversion analogique-numérique, et time pour les temporisations.

    #!/usr/bin/env python3
    
    from gpiozero import PWMLED
    import ADC0834
    import time
    
  2. 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()
    
  3. Définissez une fonction appelée MAP pour 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
    
  4. 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