Note

Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi rejoindre ?

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

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

  • Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.

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

  • Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.

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

2.1.7 Potentiomètre

Note

../_images/mcp3008_and_adc0834.jpg

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

Introduction

La fonction ADC peut être utilisée pour convertir des signaux analogiques en signaux numériques. Dans cette expérience, l’ADC0834 est utilisé pour obtenir cette fonction ADC. Nous mettons en œuvre ce processus en utilisant un potentiomètre. Le potentiomètre modifie la quantité physique - la tension, qui est convertie par la fonction ADC.

Composants Nécessaires

Pour ce projet, nous avons besoin des composants suivants :

../_images/list_2.1.4_potentiometer.png

Il est très pratique d’acheter un kit complet, voici le lien :

Nom

ÉLÉMENTS DANS CE KIT

LIEN

Kit Raphael

337

Raphael Kit

Vous pouvez également les acheter séparément via les liens ci-dessous.

INTRODUCTION DES COMPOSANTS

LIEN D’ACHAT

Carte d’extension GPIO

ACHETER

Plaque d’expérimentation (Breadboard)

ACHETER

Fils de Liaison

ACHETER

Résistance

ACHETER

LED

ACHETER

Potentiomètre

ACHETER

ADC0834

-

Schéma Électrique

../_images/image311.png ../_images/image312.png

Procédures Expérimentales

Étape 1 : Construire le circuit.

../_images/image180.png

Note

Veuillez placer la puce en vous référant à la position correspondante indiquée sur l’image. Notez que les rainures sur la puce doivent être à gauche lorsqu’elle est placée.

Étape 2 : Ouvrir le fichier de code

cd ~/raphael-kit/python/

Étape 3 : Exécuter.

sudo python3 2.1.7_Potentiometer.py

Après l’exécution du code, tournez le bouton du potentiomètre, l’intensité de la LED changera en conséquence.

Code

Note

Vous pouvez Modifier/Réinitialiser/Copier/Exécuter/Arrêter le code ci-dessous. Mais avant cela, vous devez accéder au chemin du code source comme raphael-kit/python. Après avoir modifié le code, vous pouvez l’exécuter directement pour voir l’effet.

#!/usr/bin/env python3

import RPi.GPIO as GPIO
import ADC0834
import time

LedPin = 22

def setup():
    global led_val
    # Set the GPIO modes to BCM Numbering
    GPIO.setmode(GPIO.BCM)
    # Set all LedPin's mode to output and initial level to High(3.3v)
    GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH)
    ADC0834.setup()
    # Set led as pwm channel and frequece to 2KHz
    led_val = GPIO.PWM(LedPin, 2000)

    # Set all begin with value 0
    led_val.start(0)

# Define a MAP function for mapping values.  Like from 0~255 to 0~100
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

def destroy():
    # Stop all pwm channel
    led_val.stop()
    # Release resource
    GPIO.cleanup()

def loop():
    while True:
        res = ADC0834.getResult()
        print ('res = %d' % res)
        R_val = MAP(res, 0, 255, 0, 100)
        led_val.ChangeDutyCycle(R_val)
        time.sleep(0.2)

if __name__ == '__main__':
    setup()
    try:
        loop()
    except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the program destroy() will be executed.
        destroy()

Explication du Code

import ADC0834

Importer la bibliothèque ADC0834. Vous pouvez vérifier le contenu de la bibliothèque en appelant la commande nano ADC0834.py.

def setup():
    global led_val
    # Set the GPIO modes to BCM Numbering
    GPIO.setmode(GPIO.BCM)
    # Set all LedPin's mode to output and initial level to High(3.3v)
    GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH)
    ADC0834.setup()
    # Set led as pwm channel and frequece to 2KHz
    led_val = GPIO.PWM(LedPin, 2000)

    # Set all begin with value 0
    led_val.start(0)

Dans setup(), définir la méthode de numérotation comme BCM, configurer LedPin comme canal PWM et lui attribuer une fréquence de 2 kHz.

ADC0834.setup() : Initialiser ADC0834, et connecter les broches définies CS, CLK, DIO de l’ADC0834 respectivement à GPIO17, GPIO18 et GPIO27.

def loop():
    while True:
        res = ADC0834.getResult()
        print ('res = %d' % res)
        R_val = MAP(res, 0, 255, 0, 100)
        led_val.ChangeDutyCycle(R_val)
        time.sleep(0.2)

La fonction getResult() est utilisée pour lire les valeurs analogiques des quatre canaux de l’ADC0834. Par défaut, la fonction lit la valeur de CH0, et si vous souhaitez lire d’autres canaux, veuillez entrer le numéro du canal dans ( ), par exemple, getResult(1).

La fonction loop() lit d’abord la valeur de CH0, puis assigne la valeur à la variable res. Ensuite, elle appelle la fonction MAP pour mapper la valeur lue du potentiomètre de 0 à 100. Cette étape est utilisée pour contrôler le cycle de travail de LedPin. Vous pourrez maintenant voir que la luminosité de la LED change en fonction de la valeur du potentiomètre.

Image du Phénomène

../_images/image181.jpeg