Ligne 1 : |
Ligne 1 : |
| + | {{MicroPython.Pyboard.Discovery-NAV}} |
| == Programmation Suite == | | == 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. | | Dans cette seconde partie, nous allons nous pencher sur les opérateurs et le contrôle des entrées/sorties de la PyBoard. |
Ligne 25 : |
Ligne 26 : |
| |} | | |} |
| | | |
| + | {{bloc-etroit|text= |
| {{underline|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 ({{fname|True}}). De façon similaire, vous pourrez écrire une comparaison <= (inférieur ou égal). | | {{underline|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 ({{fname|True}}). De façon similaire, vous pourrez écrire une comparaison <= (inférieur ou égal). |
| + | }} |
| | | |
| == Structure de contrôle == | | == 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). | + | {{bloc-etroit|text=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 === | | === Si Alors Sinon === |
Ligne 73 : |
Ligne 76 : |
| 6 | | 6 |
| </nowiki> | | </nowiki> |
| + | |
| + | === Boucle While === |
| + | La boucle {{fname|while}} est utilisé lorsque l'on ne sait pas '''à l'avance''' le nombre de fois que le code sera exécuté. |
| + | |
| + | La boucle {{fname|while}} est utilisée pour créer des répétitions dont le nombre d’occurrence (répétition) dépend d'une condition. |
| + | |
| + | <nowiki>i = 10 |
| + | while i >= 0: |
| + | print( i ) |
| + | i = i-1</nowiki> |
| + | |
| + | Ce qui produit le résultat suivant: |
| + | |
| + | <nowiki>10 |
| + | 9 |
| + | 8 |
| + | 7 |
| + | 6 |
| + | 5 |
| + | 4 |
| + | 3 |
| + | 2 |
| + | 1 |
| + | 0</nowiki> |
| + | |
| + | === La boucle infinie === |
| + | |
| + | Comme précisé dans [[Pyb-discovery-Intro-programmation|la section "programmation" précédente]], dans l'environnement Arduino il existe la fonction {{fname|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 {{fname|while}}. |
| + | |
| + | <nowiki>while True: |
| + | # contenu de votre programme |
| + | # a exécuter encore et encore....</nowiki> |
| | | |
| == Contrôle digital == | | == Contrôle digital == |
Ligne 98 : |
Ligne 135 : |
| ** {{fname|Pin.AF_OD}} - configure la broche pour fonction alternative, open-drain; | | ** {{fname|Pin.AF_OD}} - configure la broche pour fonction alternative, open-drain; |
| ** {{fname|'''Pin.ANALOG'''}} - configure la broche pour opération analogique. | | ** {{fname|'''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 | + | * '''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 analogique === | + | === Ecriture digital === |
− | Cette opération est l'équivalent de la fonction Arduino {{fname|digitalWrite}}. | + | Cette opération est l'équivalent de la fonction {{fname|digitalWrite}} des Arduino. |
| | | |
| La broche doit doit préalablement être initialisée à l'aide de pyb.Pin(). | | La broche doit doit préalablement être initialisée à l'aide de pyb.Pin(). |
Ligne 108 : |
Ligne 148 : |
| p.low()</nowiki> | | p.low()</nowiki> |
| | | |
− | Une fois la broche déclarée comme OUTPUT avec {{fname|pinName}}, elle peut être mise soit à l'état {{fname|HIGH}} (niveau logique haut, potentiel tiré à +5 volts) ou l'état {{fname|LOW}} (niveau logique bas, potentiel tiré à la masse/ground). | + | Une fois la broche déclarée en sortie avec {{fname|pyb.pin()}}, elle peut être mise soit à l'état haut {{fname|high()}} (niveau logique haut, potentiel tiré à +3.3 volts) ou l'état bas {{fname|low()}} (niveau logique bas, potentiel tiré à la masse/ground). |
| + | |
| + | * p: est l'objet correspondant à la broche. Objet créé avec {{fname|pyb.Pin()}} |
| + | |
| + | === Lecture digital === |
| + | Cette opération est l'équivalent de la fonction {{fname|digitalRead}} des Arduino. |
| + | |
| + | La broche doit doit préalablement être initialisée à l'aide de pyb.Pin(). |
| | | |
− | * pin: est le numéro de broche
| + | <nowiki>valeur = p.value()</nowiki> |
− | * value: le niveau logique désiré (soit {{fname|HIGH}} ou {{fname|LOW}}
| |
| | | |
− | === digitalRead ===
| + | Une fois la broche déclarée en entrée digital avec {{fname|pyb.Pin()}} (voyez l'[[MicroPython-Hack-button|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). |
− | <nowiki>int digitalRead(pin);</nowiki>
| |
| | | |
− | Une fois la broche déclarée comme {{fname|INPUT}} avec {{fname|pinMode}}, vous pouvez lire l'état de cette broche et savoir si elle est placée au niveau haut ({{fname|HIGH}}, au potentiel +5 volts) ou niveau bas ({{fname|LOW}}, potentiel de la masse/GND, soit 0 volt) par le montage.
| + | valeur vaudra 0 si la broche est au niveau bas... ou 1 si la broche est au niveau haut. |
| | | |
| == Contrôle analogique == | | == Contrôle analogique == |
− | Arduino est une machine digitale mais elle est capable de fonctionner dans le monde analogique grâce à des astuces.
| + | 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. | | Voici comment gérer les cas non digitaux. |
| | | |
− | === analogWrite === | + | === Vraie sortie analogique === |
− | <nowiki>int analogWrite(pin,value);</nowiki>
| + | 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 {{fname|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 "[[MicroPython-Hack-fading|Luminosité d'une LED]]" |
| | | |
− | Certaines broches d'Arduino supporte la modulation d'impulsion (3, 5, 6, 9, 10, 11).
| + | === lecture analogique === |
| + | Cette opération est l'équivalent de la fonction {{fname|analogRead}} des Arduino. |
| | | |
− | Cela active et désactive la broche très rapidement, la faisant agir "comme" une sortie analogique. cela s'appelle un signal PWM.
| + | Vous n'avez pas besoin d'initialiser la broche avec {{fname|pyb.Pin()}} lorsque vous voulez utiliser le convertisseur analogique/digital (ADC) de votre PyBoard pour lire une tension. |
| | | |
− | La valeur utilisée est un nombre entre 0 (0% de cycle utile approximativement 0v) et 255 (100% de cycle utile ~5 volts). | + | La broche sera initialisée par la classe pyb.ADC() lorsque vous voudrez utiliser la lecture sur une broche analogique |
| | | |
− | === analogRead ===
| + | <nowiki>adc = pyb.ADC(pyb.Pin.board.X19) |
− | <noiki>int analogRead(pin);</nowiki> | + | ivalue = adc.read()</nowiki> |
| | | |
− | Quand une broche analogique est déclarée comme entrée ({{fname|INPUT}}) à l'aide de {{fname|pinMode}}, vous pouvez y lire sa tension.
| + | La fonction {{fname|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. |
| | | |
− | La valeur retournée est entre 0 (pour 0 volts) et 1024 (pour 5 volts).
| + | {{MicroPython.Pyboard.Discovery-TRAILER}} |