Différences entre versions de « P2E-Analog-Input-FR »
(→Code) |
|||
Ligne 28 : | Ligne 28 : | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
− | from machine import Pin | + | from machine import Pin, ADC |
import time | import time | ||
− | |||
− | # | + | # Désactive PowerSafe (lower ripple) |
− | + | Pin( 23, Pin.OUT, value=True ) | |
− | |||
− | + | a0 = ADC( Pin( Pin.board.GP26 ) ) | |
− | + | while True: | |
+ | val = a0.read_u16() | ||
+ | volt = val*3.3/65535 | ||
+ | print( 'adc= %5i , volt= %1.2f' % (val,volt) ) | ||
+ | time.sleep_ms( 300 ) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Version du 27 octobre 2024 à 23:22
Introduction
Le Pico dispose de plusieurs entrées analogiques communément appelée A0, A1, A2 localisées sur les broches GP26, GP27 et GP28.
Ce type de broche permet de lire précisément la tension présente sur la broche d'entrée. A l'opposé d'une entrée numérique où il existe seulement deux valeurs (1 ou 0), l'entrée analogique retourne une valeur entière entre 0 et 65535 (valeur 16 bits). Cette valeur couvre la plage de tension entre 0V et 3.3V.
Il existe de très nombreux périphériques capable de produire une tension analogique en sortie. Le plus simple est le potentiomètre qui produit une tension de sortie proportionnelle à la rotation de son axe. Une tension analogique peut servir à fournir une référence de consigne ou dans le cas d'un capteur, produire une tension de sortie proportionnelle au phénomène physique mesuré (distance, température, luminosité, etc).
Cas pratique
Dans cet exemple, nous allons utiliser l'entrée analogique A0 (GP26) pour mesurer la tension produite par le potentiomètre. Le script affiche la valeur du convertisseur et la tension correspondante
Un potentiomètre linéaire produit une tension de proportionnelle à la position du curseur. L'image ci-dessous présente la mise en relation entre la position du curseur sur la résistance interne et la tension de sortie.
Branchement simplifiée
Dans cet exemple, nous allons utiliser l'entrée analogique A0 (sur GP26) et mesurer la tension analogique produite par le potentiomètre.
Code
Le code ci-dessous peut être saisi dans une session REPL ou dans Thonny IDE.
Cet exemple est également disponible dans le dépôt Pico-2-Explorer/analog-pot/
1 from machine import Pin, ADC
2 import time
3
4 # Désactive PowerSafe (lower ripple)
5 Pin( 23, Pin.OUT, value=True )
6
7 a0 = ADC( Pin( Pin.board.GP26 ) )
8 while True:
9 val = a0.read_u16()
10 volt = val*3.3/65535
11 print( 'adc= %5i , volt= %1.2f' % (val,volt) )
12 time.sleep_ms( 300 )
Voici quelques explications:
- Ligne 1: importer la classe Pin depuis le module machine. Cette classe permet de manipuler les broches du microcontrôleur.
- Ligne 3: la variable p contient une instance de la classe Pin. Le premier paramètre est l'identification de la broche (2 pour GP2) et la constante Pin.OUT (OUT = sortie) configure la broche en sortie.
- Ligne 6: la méthode value( val ) permet de modifier l'état de la broche en fonction de la valeur du paramètre. Avec un paramètre True, la broche est placée au niveau HAUT. La tension de la broche est de 3.3V, ce qui allume la LED.
- Ligne 7: l'appel de time.sleep(1) crée une pause de 1 seconde.
- Ligne 10: l'appel de pin.value( False ) place la broche au niveau BAS. La tension de la broche est de 0V, la LED est donc éteinte.
Un problème?
La LED ne s'allume pas ? Voici quelques pistes de recherche:
- Vérifier votre câblage. Etes-vous bien connecté sur la broche GP2 du microcontrôleur ?
- Vérifier que le script Python manipule bien la broche 2.
- Vérifier que la broche est bien commandée en sortie (Pin.OUT).
Le défi
xx
Encore plus
xxx
Truc et astuce
xxx