Pyb-discovery-Intro-programmation2
Programmation Suite
Dans cette seconde partie, nous allons nous pencher sur les opérateurs et le contrôle des entrées/sorties de la PyBoard.
Voyez doc.micropython.org pour une référence complète (anglais).
Opérateurs de comparaison
Opérateurs utilisés pour des comparaisons logiques.
Opérateur | Description |
== | (égal à) Ex : 12 == 10 est faux (False) ou 12 == 12 est vrai (True) |
!= | (différent de) Ex: 12 != 10 est vrai (True) ou 12 != 12 est faux (False) |
< | (moins que, inférieur à) Ex : 12 < 10 est faux (False) ou 12 < 12 est faux (False) ou 12 < 14 est vrai (True) |
> | (plus grand que, supérieur à) Ex : 12 > 10 est vrai (True) ou 12 > 12 est faux (False) ou 12 > 14 est faux (False) |
Note: Il est possible de combiner les <,> avec le signe =. Ainsi, la combinaison >= (plus grand ou égal) permet d'écrire un test 12 >= 12 qui, cette fois, sera vrai (True). De façon similaire, vous pourrez écrire une comparaison <= (inférieur ou égal).
Structure de contrôle
L'ordre des séquences exécutées dépendent du programme, voici quelques éléments de contrôles élémentaires précisant au programme comment il doit fonctionner (il y en a bien plus de décrit sur le site).
Si Alors Sinon
if condition: instructions-A elif condition2: instructions-B else: instructions-C
Cela exécute le code indenté d'instructions-A "if" est vraie (True), sinon il va tester la condition2 de "elif" pour exécuter le bloc associé.
Si cette condition est également fausse alors il exécutera le code du bloc "else", soit instruction-C.
Boucle For
La boucle for permet d'itérer tous les éléments d'un ensemble de valeur (comme une liste).
for in range( 0, 4 ): print( i )
La fonction range permet de produit une liste de valeur de 0 à 3.
L'exemple produit les valeurs suivantes:
0 1 2 3
Cette syntaxe fonctionne avec tous les éléments dit itérable comme les listes, les dictionnaires, etc peuvent être utilisés avec une boucle for.
liste = ['un','deux','trois','quatre',5,6] for element in liste: print( element )
ce qui produit ce résultat ci:
un deux trois quatre 5 6
Boucle While
La boucle while est utilisé lorsque l'on ne sait pas à l'avance le nombre de fois que le code sera exécuté.
La boucle while est utilisée pour créer des répétitions dont le nombre d’occurrence (répétition) dépend d'une condition.
i = 10 while i >= 0: print( i ) i = i-1
Ce qui produit le résultat suivant:
10 9 8 7 6 5 4 3 2 1 0
La boucle infinie
Comme précisé dans la section "programmation" précédente, dans l'environnement Arduino il existe la fonction loop() qui est exécuté continuellement par le FirmWare Arduino.
Vous pourrez facilement recréer ce fonctionnement sur votre PyBoard à l'aide de la boucle while.
while True: # contenu de votre programme # a exécuter encore et encore....
Contrôle digital
Votre carte PyBoard dispose de broches d'entrée/sortie, voici comment les contrôler.
p = pyb.Pin( 'X5', pyb.Pin.OUT_PP ) p.high(); p.low(); btn = pyb.Pin( 'Y10', Pin.IN, pull=Pin.PULL_UP ) valeur = btn.value() print( valeur )
pyb.Pin
p = pyb.Pin(pin, mode, pull)
La classe Pin est utilisé pour obtenir un objet pour une broche donné de la PyBoard et initialiser cette broche en tant qu'entrée ou sortie.
- pin : identifie la broche que vous voulez contrôler (tel qu'indiqué sur la sérigraphie).
- mode : indique comment la broche sera utilisée, en entrée ou en sortie.
- Pin.IN Broche configurée en entrée (vous pouvez préciser un paramètre complémentaire pull )
- Pin.OUT_PP - configure la broche en sortie, avec contrôle push-pull. Donc le niveau sera soit forcé au niveau haut ou niveau bas)
- Pin.OUT_OD - configure la broche en sortie, avec un contrôle à drain ouvert (open-drain). Cela signifie que vous pouvez forcer le signal au niveau bas... sinon la valeur du signal est flottante (en fait, à la tension imposée par le circuit que vous y avez raccordé)
- Pin.AF_PP - configure la broche pour fonction alternative, pull-pull;
- Pin.AF_OD - configure la broche pour fonction alternative, open-drain;
- Pin.ANALOG - configure la broche pour opération analogique.
- pull - Si vous utilisez une broche en entrée, ce paramètre permet d'activer les résistances pull-up, pull-down (nous aurons l'occasion de couvrir cette notion dans un futur tutoriel)
- Pin.PULL_NONE - pas de résistance pull-up ou pull-down
- Pin.PULL_UP - Activer la résistance pull-up (qui ramène, par défaut, le potentiel de la broche au niveau haut)
- Pin.PULL_DOWN - Activer la résistance pull-up (qui attire, par défaut, le potentiel de la broche au niveau bas)
Ecriture digital
Cette opération est l'équivalent de la fonction digitalWrite des Arduino.
La broche doit doit préalablement être initialisée à l'aide de pyb.Pin().
p.high() p.low()
Une fois la broche déclarée en sortie avec pyb.pin(), elle peut être mise soit à l'état haut high() (niveau logique haut, potentiel tiré à +3.3 volts) ou l'état bas low() (niveau logique bas, potentiel tiré à la masse/ground).
- p: est l'objet correspondant à la broche. Objet créé avec pyb.Pin()
Lecture digital
Cette opération est l'équivalent de la fonction digitalRead des Arduino.
La broche doit doit préalablement être initialisée à l'aide de pyb.Pin().
valeur = p.value()
Une fois la broche déclarée en entrée digital avec pyb.Pin() (voyez l'exemple dans ce tutoriel), vous pouvez lire l'état de cette broche et savoir si cette broche est placée au niveau haut (au potentiel +3 volts) ou niveau bas (potentiel de la masse/GND, soit 0 volt).
valeur vaudra 0 si la broche est au niveau bas... ou 1 si la broche est au niveau haut.
Contrôle analogique
Pyboard est une machine digitale mais elle est capable de fonctionner dans le monde analogique grâce à des astuces.
Voici comment gérer les cas non digitaux.
Vraie sortie analogique
Grâce à son convertisseur DAC (Digital/Analogic Converteur), la carte MicroPython PyBoard est capable de produire une vraie sortie analogique (une tension entre 0 et 3.3v) sur les broches X5 et X6.
L'utilisation de ces sortie Analogiques sort du cadre du présent kit, vous pouvez consulter la référence "[http://test-ergun.readthedocs.org/en/latest/library/pyb.DAC.html class DAC - digital to analog conversion"
Contrôle analogique via PWM
Le contrôle PWM est très populaire sur les plateformes Arduino. Elle correspond à l'appel de la fonction analogWrite()
Pyboard dispose aussi de nombreuses broches "PWM", mais sa mise en oeuvre réclame un peu plus de travail que sur Arduino.
Cela sera abordé plus en détail dans le tutoriel "Luminosité d'une LED"
lecture analogique
Cette opération est l'équivalent de la fonction analogRead des Arduino.
Vous n'avez pas besoin d'initialiser la broche avec pyb.Pin() lorsque vous voulez utiliser le convertisseur analogique/digital (ADC) de votre PyBoard pour lire une tension.
La broche sera initialisée par la classe pyb.ADC() lorsque vous voudrez utiliser la lecture sur une broche analogique
adc = pyb.ADC(pyb.Pin.board.X19) ivalue = adc.read()
La fonction adc.read() retourne une valeur encodée sur 12 bits, soit un entier entre 0 et 4096. Cette valeur correspondant à la tension 0 à 3.3v appliquée sur la broche d'entrée analogique.
Tutoriels de découvertes électroniques avec MicroPython créés par Meurisse D. pour MCHobby.be (licence CC-SA-BY pour notre création).
Contenu pouvant provenir de différentes sources, consultez la page "Qui sommes nous" pour plus d'information.
Traduit avec l'autorisation de micropython.org - Translated with the authorisation of micropython.org
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.