Introduction

Dans ce cours on va voir comment lire les valeurs venant d’un potentiomètre sur la Beaglebone Black en utilisant les pins analogiques de celle-ci. Un potentiomètre est une résistance variable dont la valeur va être modifié en tournant le bouton ou la vis situé sur celui-ci. Ceci va permettre de laisser plus où moins de courant passer et donc faire de varier la tension.

Comment fonctionnent les pins analogiques ?

La Beaglebone Black possède 7 pins analogiques qui vont permettre de récupérer la valeur de capteurs, ou bien de contrôler des composants en analogique. Les pins sont reliés à un convertisseur analogique-numérique (8 bits) afin de rendre lisible les valeurs par la Beaglebone Black.

Les pins analogiques fonctionnent en +1.8V maximum ! Vous ne pouvez donc pas utiliser des composants nécessitant une tension de +5V ou +3.3V.  Dans la suite du cours nous allons connecter le potentiomètre au VDD et GND de l’ADC afin d’avoir la bonne tension.

Schéma électronique

Voici le programme qui me permet de lire les valeurs de tension venant du potentiomètre et de les convertir en pourcentage :

Programmation

Le programme suivant permet de récupérer les valeurs analogiques venant de l’ADC, notamment la pin ou se situe notre potentiomètre. Pour cela vous aurez besoin d’installer la librairie Adafruit_BBIO.

Vous pouvez l’installer avec la commande suivante :

sudo pip3 install Adafruit_BBIO
import Adafruit_BBIO.ADC as ADC
import time

# Configuration du canal ADC
potentiometer_pin = "P9_36"  # Vous pouvez ajuster le numéro de broche en fonction de votre configuration

ADC.setup()

try:
    while True:
        # Lecture de la valeur analogique du potentiomètre
        pot_value = ADC.read(potentiometer_pin)

        # Convertir la valeur en une plage plus significative (par exemple, de 0 à 100)
        scaled_value = int(pot_value * 100)

        # Afficher la valeur
        print("Valeur du potentiomètre : {}".format(scaled_value))

        # Attendre un court laps de temps avant la prochaine lecture
        time.sleep(0.1)

except KeyboardInterrupt:
    # Arrêter le programme proprement en cas d'interruption (Ctrl+C)
    pass

finally:
    # Nettoyer les ressources ADC
    ADC.cleanup()

On peut voir qu’en tournant le potentiomètre le pourcentage est modifié. A 100%, la tension est 1.8V et à 0% celle-ci est 0V :