Pyb-discovery-Intro-programmation2

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

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.