Différences entre versions de « P2E-Digital-Output-FR »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
(66 versions intermédiaires par le même utilisateur non affichées)
Ligne 2 : Ligne 2 :
  
 
== Introduction ==
 
== Introduction ==
xxx
+
Une broche de microcontrôleur présente généralement plusieurs fonctions qui permettent de l'utiliser de façon différentes.
  
== Brancher ==
+
La fonction la plus simple est le contrôle '''numérique en sortie''' aussi dit "''digital output''" en anglais.
xxx
 
  
== Code ==
+
Dans ce mode de fonctionnement, la broche est commandée en tout ou rien par le microcontrôleur permettant ainsi de fixer la tension de sortie de la broche parmi deux états.
x
+
x
+
* A l'état HAUT, la tension de la broche est fixée à 3,3V.
 +
* A l'état BAS, la tension de la broche est fixée à 0V.
  
 +
Avec ces deux états, il est possible de commander directement des périphériques de faibles puissances comme des LEDs et circuit intégrés.
  
== Plus ==
+
{{tmbox | text = L'utilisation d'un dispositif amplificateur permettra de commander des périphériques plus puissant tels que relais, moteurs, éclairages, appareils base ou haute tension.}}
x
+
 
x
+
En Python, l'état HAUT correspond à une valeur booléenne vraie (True ou 1) et l'état BAS correspond à une valeur booléenne fausse (False ou 0).
 +
 
 +
== Cas pratique ==
 +
 
 +
Dans cet exemple, nous allons utiliser la broche '''GP2''' pour commander la '''LED rouge'''.
 +
 
 +
=== Branchement simplifiée ===
 +
 
 +
Réaliser le branchement entre GP2 et le contact de la LED ROUGE.<br />La carte prend en charge les autres détails du raccordement.
 +
 
 +
[[Fichier:P2E-digital-output.png|800px]]
 +
 
 +
=== 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 [https://github.com/mchobby/pico-2-explorer/tree/main/output-led Pico-2-Explorer/output-led/]
 +
 
 +
<syntaxhighlight lang="python" line>
 +
from machine import Pin
 +
import time
 +
p = Pin( 2, Pin.OUT )
 +
 
 +
# Allumer la LED
 +
p.value( True )
 +
time.sleep(1)
 +
 
 +
# Eteindre la LED
 +
p.value( False )
 +
</syntaxhighlight>
 +
 
 +
Voici quelques explications:
 +
* '''Ligne 1''': importer la classe {{fname|Pin}} depuis le module {{fname|machine}}. Cette classe permet de manipuler les broches du microcontrôleur.
 +
* '''Ligne 3''': la variable {{fname|p}} contient une instance de la classe {{fname|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 {{fname|value( val )}} permet de modifier l'état de la broche en fonction de la valeur du paramètre. Avec un paramètre {{fname|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 {{fname|time.sleep(1)}} crée une pause de 1 seconde.
 +
* '''Ligne 10''': l'appel de {{fname|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 ==
 +
Branchez les LEDs Rouge, Orange, Verte respectivement sur les GPIOs 2, 3, 4.
 +
 
 +
Créez ensuite un script pour allumer chaque LED à tour de rôle pendant une seconde, en commençant par la LED verte puis l'orange et finir par la rouge.
 +
 
 +
== Encore plus ==
 +
 
 +
Si vous voulez savoir comment est branché la LED  présente sur la carte
 +
 
 +
=== A propos de la LED ===
 +
 
 +
Une LED est comme une diode, elle ne laisse passer le courant que dans un seul sens (du "+" vers le "-"). Sa particularité est de produire de la lumière lorsqu'un courant la traverse.
 +
 
 +
Si la LED est branchée à l'envers alors elle se trouve dans le sens bloquant et ne produira aucune lumière (il suffit de la retourner pour inverser le plus et le moins).
 +
 
 +
Pour vous aider à raccorder une LED:
 +
* Une LED dispose d'une broche PLUS longue et d'une broche courte. La broche la '''PLUS''' longue va au '''POSITIF'''.
 +
* Il manque également de la matière sur l'un des côté de la LED. La où il y a de la matière en '''MOINS''' c'est la borne '''NEGATIVE'''.
 +
 
 +
[[Fichier:Led-Polarite.jpg|80px]]
 +
 
 +
=== Brancher une LED ===
 +
{{tmbox | text = Lorsque vous utilisez une des LEDs présentes sur le Pico-2-Explorer, la LED, la résistance et la masse sont déjà pré-cablés sur la carte.}}
 +
 
 +
Pour qu'une LED s'allume, il faut une tension sur la broche positive de la LED et une possibilité pour ce courant de retourner vers la masse (GND).
 +
 
 +
La différence de tension aux bornes de la LED doit être supérieure à un minimum donnée dépendant du type de LED (de l'ordre de 1.5 à 1.8V). Cette tension s'appelle "Tension directe" (Vf), elle est mentionnée dans la fiche technique.
 +
 
 +
Autre point important, une LED à '''absolument besoin d'une résistance''' pour limiter le courant qui la traverse... sinon ce courant tendra vers l'infini et détruira la LED et la broche du microcontrôleur. Pour un système 3.3V cette résistance est de 470 Ohms.
 +
 
 +
Voici à quoi ressemble le schéma électrique
 +
 
 +
[[Fichier:P2E-output-led-wiring.png]]
 +
 
 +
Schéma que l'on peut reporter sur un breadboard comme ceci et qui produira exactement le même résultat que la LED présente sur le Pico-2-Explorer.
 +
 
 +
[[Fichier:P2E-output-led-wiring-2.png|800px]]
 +
 
 +
== Trucs et astuces ==
 +
Voici quelques informations complémentaires concernant la manipulation de broches configurées en sortie.
 +
 
 +
=== lire l'état de la broche ===
 +
 
 +
Il est très facile de connaître l'état actuel de la broche en appelant la méthode {{fname|value()}} sans paramètre.
 +
 
 +
La fonction retourne alors:
 +
* '''1''' pour un niveau HAUT (3V3)
 +
* '''0''' pour un niveau BAS (0V)
 +
 
 +
<syntaxhighlight lang="python" line highlight="9">
 +
from machine import Pin
 +
import time
 +
p = Pin( 2, Pin.OUT )
 +
 
 +
# Allumer la LED
 +
p.value( True )
 +
 
 +
# Obtenir l'état de la broche
 +
val = p.value()
 +
print( val )
 +
</syntaxhighlight>
 +
 
 +
Voici quelques explications:
 +
* '''Ligne 9''': lorsque la méthode {{fname|value()}} est appelée sans paramètre, celle-ci retourne une valeur correspondant à l'état "actuel" de la broche.
 +
* '''Ligne 10''': l'instruction {{fname|print(val)}} affiche la valeur précédemment collectée à la ligne précédente. Cette valeur est '''1''' puisque la broche est à l'état haut.
 +
 
 +
=== Inverser l'état de la broche ===
 +
La méthode {{fname|toggle()}} permet d'inverser facilement l'état d'une broche configurée en sortie.
 +
 
 +
<syntaxhighlight lang="python" line highlight="12,16">
 +
from machine import Pin
 +
import time
 +
p = Pin( 2, Pin.OUT )
 +
 
 +
# Allumer la LED
 +
p.value( True )
 +
 
 +
time.sleep(1)
 +
 
 +
# Inverser l'état de la broche
 +
# Donc, éteindre la LED
 +
p.toggle()
 +
 
 +
# Inverser encore une fois l'état de la broche
 +
# Donc, allumer la LED
 +
p.toggle()
 +
</syntaxhighlight>
 +
 
 +
=== Utiliser une valeur numérique ===
 +
La méthode {{fname|value( val )}} peut également recevoir une valeur numérique en paramètre.
 +
* La valeur 0 placera la broche au niveau BAS (0V)
 +
* La valeur 1 placera la broche au niveau HAUT (3.3V)
 +
* Toutes valeur supérieure à 0 (ou évaluée comme vraie) placera la broche au niveau HAUT (3.3V).
 +
 
 +
Il est donc possible d'utiliser le résultat d'une fonction utilisateur pour fixer l'état de la broche. Cela s'avérera fort utile lors de la création de scripts plus complexes.
 +
 
 +
<syntaxhighlight lang="python" line highlight="6,10">
 +
from machine import Pin
 +
import time
 +
p = Pin( 2, Pin.OUT )
 +
 
 +
# Allumer la LED
 +
p.value( 1 )
 +
time.sleep(1)
 +
 
 +
# Eteindre la LED
 +
p.value( 0 )
 +
</syntaxhighlight>
 +
 
 +
=== Méthodes on() et off() ===
 +
 
 +
La méthode {{fname|on()}} permet de placer une broche au niveau HAUT (3.3V) tandis que la méthode {{fname|off()}} place la broche au niveau BAS (0V).
 +
 
 +
Utiliser les méthodes {{fname|on()}} et {{fname|off()}} permettent d'améliorer la lisibilité du script.
 +
 
 +
<syntaxhighlight lang="python" line highlight="6,10">
 +
from machine import Pin
 +
import time
 +
p = Pin( 2, Pin.OUT )
 +
 
 +
# Allumer la LED
 +
p.on()
 +
time.sleep(1)
 +
 
 +
# Eteindre la LED
 +
p.off()
 +
</syntaxhighlight>
  
 
{{P2E-TRAILER}}
 
{{P2E-TRAILER}}

Version actuelle datée du 27 octobre 2024 à 22:28

Introduction

Une broche de microcontrôleur présente généralement plusieurs fonctions qui permettent de l'utiliser de façon différentes.

La fonction la plus simple est le contrôle numérique en sortie aussi dit "digital output" en anglais.

Dans ce mode de fonctionnement, la broche est commandée en tout ou rien par le microcontrôleur permettant ainsi de fixer la tension de sortie de la broche parmi deux états.

  • A l'état HAUT, la tension de la broche est fixée à 3,3V.
  • A l'état BAS, la tension de la broche est fixée à 0V.

Avec ces deux états, il est possible de commander directement des périphériques de faibles puissances comme des LEDs et circuit intégrés.

En Python, l'état HAUT correspond à une valeur booléenne vraie (True ou 1) et l'état BAS correspond à une valeur booléenne fausse (False ou 0).

Cas pratique

Dans cet exemple, nous allons utiliser la broche GP2 pour commander la LED rouge.

Branchement simplifiée

Réaliser le branchement entre GP2 et le contact de la LED ROUGE.
La carte prend en charge les autres détails du raccordement.

P2E-digital-output.png

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/output-led/

 1 from machine import Pin
 2 import time
 3 p = Pin( 2, Pin.OUT )
 4 
 5 # Allumer la LED
 6 p.value( True )
 7 time.sleep(1)
 8 
 9 # Eteindre la LED
10 p.value( False )

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:

  1. Vérifier votre câblage. Etes-vous bien connecté sur la broche GP2 du microcontrôleur ?
  2. Vérifier que le script Python manipule bien la broche 2.
  3. Vérifier que la broche est bien commandée en sortie (Pin.OUT).

Le défi

Branchez les LEDs Rouge, Orange, Verte respectivement sur les GPIOs 2, 3, 4.

Créez ensuite un script pour allumer chaque LED à tour de rôle pendant une seconde, en commençant par la LED verte puis l'orange et finir par la rouge.

Encore plus

Si vous voulez savoir comment est branché la LED présente sur la carte

A propos de la LED

Une LED est comme une diode, elle ne laisse passer le courant que dans un seul sens (du "+" vers le "-"). Sa particularité est de produire de la lumière lorsqu'un courant la traverse.

Si la LED est branchée à l'envers alors elle se trouve dans le sens bloquant et ne produira aucune lumière (il suffit de la retourner pour inverser le plus et le moins).

Pour vous aider à raccorder une LED:

  • Une LED dispose d'une broche PLUS longue et d'une broche courte. La broche la PLUS longue va au POSITIF.
  • Il manque également de la matière sur l'un des côté de la LED. La où il y a de la matière en MOINS c'est la borne NEGATIVE.

Led-Polarite.jpg

Brancher une LED

Pour qu'une LED s'allume, il faut une tension sur la broche positive de la LED et une possibilité pour ce courant de retourner vers la masse (GND).

La différence de tension aux bornes de la LED doit être supérieure à un minimum donnée dépendant du type de LED (de l'ordre de 1.5 à 1.8V). Cette tension s'appelle "Tension directe" (Vf), elle est mentionnée dans la fiche technique.

Autre point important, une LED à absolument besoin d'une résistance pour limiter le courant qui la traverse... sinon ce courant tendra vers l'infini et détruira la LED et la broche du microcontrôleur. Pour un système 3.3V cette résistance est de 470 Ohms.

Voici à quoi ressemble le schéma électrique

P2E-output-led-wiring.png

Schéma que l'on peut reporter sur un breadboard comme ceci et qui produira exactement le même résultat que la LED présente sur le Pico-2-Explorer.

P2E-output-led-wiring-2.png

Trucs et astuces

Voici quelques informations complémentaires concernant la manipulation de broches configurées en sortie.

lire l'état de la broche

Il est très facile de connaître l'état actuel de la broche en appelant la méthode value() sans paramètre.

La fonction retourne alors:

  • 1 pour un niveau HAUT (3V3)
  • 0 pour un niveau BAS (0V)
 1 from machine import Pin
 2 import time
 3 p = Pin( 2, Pin.OUT )
 4 
 5 # Allumer la LED
 6 p.value( True )
 7 
 8 # Obtenir l'état de la broche
 9 val = p.value()
10 print( val )

Voici quelques explications:

  • Ligne 9: lorsque la méthode value() est appelée sans paramètre, celle-ci retourne une valeur correspondant à l'état "actuel" de la broche.
  • Ligne 10: l'instruction print(val) affiche la valeur précédemment collectée à la ligne précédente. Cette valeur est 1 puisque la broche est à l'état haut.

Inverser l'état de la broche

La méthode toggle() permet d'inverser facilement l'état d'une broche configurée en sortie.

 1 from machine import Pin
 2 import time
 3 p = Pin( 2, Pin.OUT )
 4 
 5 # Allumer la LED
 6 p.value( True )
 7 
 8 time.sleep(1)
 9 
10 # Inverser l'état de la broche
11 # Donc, éteindre la LED
12 p.toggle()
13 
14 # Inverser encore une fois l'état de la broche
15 # Donc, allumer la LED
16 p.toggle()

Utiliser une valeur numérique

La méthode value( val ) peut également recevoir une valeur numérique en paramètre.

  • La valeur 0 placera la broche au niveau BAS (0V)
  • La valeur 1 placera la broche au niveau HAUT (3.3V)
  • Toutes valeur supérieure à 0 (ou évaluée comme vraie) placera la broche au niveau HAUT (3.3V).

Il est donc possible d'utiliser le résultat d'une fonction utilisateur pour fixer l'état de la broche. Cela s'avérera fort utile lors de la création de scripts plus complexes.

 1 from machine import Pin
 2 import time
 3 p = Pin( 2, Pin.OUT )
 4 
 5 # Allumer la LED
 6 p.value( 1 )
 7 time.sleep(1)
 8 
 9 # Eteindre la LED
10 p.value( 0 )

Méthodes on() et off()

La méthode on() permet de placer une broche au niveau HAUT (3.3V) tandis que la méthode off() place la broche au niveau BAS (0V).

Utiliser les méthodes on() et off() permettent d'améliorer la lisibilité du script.

 1 from machine import Pin
 2 import time
 3 p = Pin( 2, Pin.OUT )
 4 
 5 # Allumer la LED
 6 p.on()
 7 time.sleep(1)
 8 
 9 # Eteindre la LED
10 p.off()

Modèle:P2E-TRAILER