Différences entre versions de « Pyb-discovery-Intro-programmation »
(32 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | {{MicroPython.Pyboard.Discovery-NAV}} | ||
+ | |||
== Un bouquin? == | == Un bouquin? == | ||
{{bloc-etroit|text=Cette section du tutoriel offre un aperçu rapide et très condensé. | {{bloc-etroit|text=Cette section du tutoriel offre un aperçu rapide et très condensé. | ||
Ligne 5 : | Ligne 7 : | ||
Quoi qu'il en soit, si vous cherchez de la littérature en Français autour du Langage Python, MC Hobby propose {{cl|23|différents ouvrages (sur stock) dans la section documentation du WebShop}}. | Quoi qu'il en soit, si vous cherchez de la littérature en Français autour du Langage Python, MC Hobby propose {{cl|23|différents ouvrages (sur stock) dans la section documentation du WebShop}}. | ||
− | |||
− | == | + | Gerard Swinnen propose également un livre libre "[[PI-Python-Apprendre-Python|Apprendre à programmer avec Python 3]]" libre d'accès. |
− | + | ||
+ | [[Fichier:Apprendre-Python-3.jpg|360px]] | ||
+ | |||
+ | OpenClassRoom offre aussi une excellent référence Francophone: "[https://openclassrooms.com/courses/apprenez-a-programmer-en-python Apprenez à programmer en Python]" déjà mentionné dans le cadre de nos tutoriels Raspberry-Pi (et oui, il utilise aussi Python).}} | ||
+ | |||
+ | == La programmation Python en Bref == | ||
+ | Un MicroContrôleur MicroPython est programmé en langage Python 3. Cette section est une petite introduction à la programmation visant les personnes ayant un peu d'expérience et qui ont juste besoin d'un petit briefing sur les particularités de Python. | ||
+ | |||
+ | Python est une langage de scripting vraiment très facile à apprendre, très expressif, vraiment {{underline|très puissant}} et disposant d'une gigantesque communauté. En fonctionnant sur un microcontrôleur, MicroPython permet de faire clignoter des LEDs sans aucun effort, lire des tensions, faire bouger des moteurs et servo moteurs, jouer du son, écrire/lire des données sur la carte micro SD, établir des communications sans fils (avec un module complémentaire) et devenir ce cerveau que votre robot attend désespérément. | ||
+ | |||
+ | Python est un langage très abordable et productif dès votre première ligne de code! Vous apprendrez les fondements en quelques heures (minutes?) et vous serez productif en une demi journée tout au plus. La force de Python réside dans sa simplicité, malgré cette simplicité c'est aussi l'un des langages les plus évolutifs... vous pourrez faire évoluer vos savoir durant de nombreuses années tellement les champs d'application sont vastes. | ||
Ne vous inquiétez pas si vous trouvez les concepts un peu intimidant, vous pouvez commencer avec les montages de circuits et | Ne vous inquiétez pas si vous trouvez les concepts un peu intimidant, vous pouvez commencer avec les montages de circuits et | ||
− | essayer d'en comprendre un maximum en cours de chemin. | + | essayer d'en comprendre un maximum en cours de chemin. |
− | Le site web [https://docs.python.org/3/ Python 3.5.1 documentation] est une excellente ressource pour découvrir le langage sur PC. La syntaxe est identique pour MicroPython, la différence réside principalement dans les bibliothèques supportées. | + | Le site web [https://docs.python.org/3/ Python 3.5.1 documentation] est une excellente ressource pour découvrir le langage sur PC. La syntaxe est identique pour MicroPython, la différence réside principalement dans les bibliothèques supportées. |
== Structure d'un programme == | == Structure d'un programme == | ||
− | {{ | + | === L'indentation === |
+ | Ce qui est le plus surprenant, et peut être le plus déroutant, pour les nouveaux venus, c'est que la structure des programmes Python s'organisent autour d'une indentation (chaque identation = 4 espaces). | ||
+ | |||
+ | Les différents blocs (conditions, boucles, etc) sont donc décalés les un par rapport aux autres. Au final, cela offre une code élégant et confortable à lire. | ||
+ | |||
+ | [[Fichier:Exemple-Identation-Python.png|640px]] | ||
+ | |||
+ | Pour éditer vos programme python, un simple éditeur de texte fera amplement l'affaire. Evitez surtout les programmes trop intelligent qui manipule les espaces et les tabulations car cela peu devenir un vrai cauchemar (ex: c'est le cas de l'éditeur geany si vous ne modifiez pas ses paramètres). | ||
+ | |||
+ | === Structurer un programme Python === | ||
+ | Vos programmes Python (souvent appelé un "script") contiennent un corps du programme qui sera exécuté lors du démarrage du script. | ||
+ | |||
+ | Au démarrage de la carte MicroPython PyBoard, cette dernière essaye de charger le script {{fname|main.py}} et de l'exécuter. Vos programme MicroPython se trouverons donc dans ce fichier {{fname|main.py}} (''nous y reviendrons plus tard''). | ||
+ | |||
+ | Votre script Python peut également contenir: | ||
+ | * la definition de constante. | ||
+ | * la définition de fonctions. | ||
+ | * la définition d'objets. | ||
+ | * le chargement de bibliothèque (aussi appelé ''module'') | ||
+ | |||
+ | Le corps de votre programme /script pourra faire appel à tout ces éléments. | ||
+ | |||
+ | === Bonnes pratiques === | ||
+ | Idéalement: | ||
+ | # Déclarer les constantes en début de script | ||
+ | # Initialiser les broches d'entrées/sortie en début de script (aussi tôt que possible) | ||
+ | # Définir les fonctions et objets | ||
+ | # Corps principal de votre programme | ||
+ | # dés-initialisation (si applicable). | ||
+ | |||
+ | Voici un tout petit exemple qui illustre ces recommandation. | ||
+ | |||
+ | <nowiki># --- DEFINITION DES CONSTANTES --- | ||
+ | RED_PIN = pyb.Pin.board.Y10 # Led rouge | ||
+ | GREEN_PIN = pyb.Pin.board.Y11 # Led verte | ||
+ | BLUE_PIN = pyb.Pin.board.Y12 # Led bleue | ||
+ | |||
+ | # --- INITIALISATION DES BROCHES --- | ||
+ | pRed = pyb.Pin( RED_PIN, pyb.Pin.OUT_PP ) | ||
+ | pGreen = pyb.Pin( GREEN_PIN, pyb.Pin.OUT_PP ) | ||
+ | pBlue = pyb.Pin( BLUE_PIN, pyb.Pin.OUT_PP ) | ||
− | + | # --- CORPS DU PROGRAMME ---- | |
− | === | + | # Allumer la led ROUGE |
− | {{fname| | + | pRed.low() |
− | + | pGreen.high() | |
+ | pBlue.high() | ||
+ | |||
+ | # Attendre 1 secondes | ||
+ | pyb.delay( 1000 ) | ||
+ | |||
+ | # Allumer la led BLEUE | ||
+ | pRed.high() | ||
+ | pGreen.high() | ||
+ | pBlue.low() | ||
+ | |||
+ | # Attendre 1 secondes | ||
+ | pyb.delay( 1000 ) | ||
+ | |||
+ | # Allumer la led VERTE | ||
+ | pRed.high() | ||
+ | pGreen.low() | ||
+ | pBlue.high() | ||
+ | |||
+ | # Attendre 1 secondes | ||
+ | pyb.delay( 1000 ) | ||
+ | |||
+ | # --- FIN DE PROGRAMME --- | ||
+ | |||
+ | # Tout en noir (toutes les LEDs éteintes) | ||
+ | pRed.high() | ||
+ | pGreen.high() | ||
+ | pBlue.high() | ||
+ | </nowiki> | ||
+ | |||
+ | === Comparaison avec Arduino === | ||
+ | Bon nombre d'entre vous connaissent déjà l'environnement Arduino. Voici donc une petite comparaisons pour fixer les idées. | ||
+ | |||
+ | Dans l'environnement Arduino, vous devez définir les deux fonctions {{fname|setup()}} (pour l'initialisation des broches) et {{fname|loop()}} (exécution du corps du programme). | ||
+ | |||
+ | Ces fonctions n'existent pas sur la PyBoard. | ||
− | + | Dans votre script Python, vous définirez l'initialisation des broches (l'équivalent de {{fname|setup()}} en début de script. Vous pourrez ensuite écrire une boucle infinie exécutant le corps de votre programme (l'équivalent de {{fname|loop()}} | |
− | + | Voici un exemple concret qui fait clignoter une LED indéfiniment: | |
− | |||
− | |||
− | + | <nowiki># --- DEFINITION DES CONSTANTES --- | |
+ | RED_PIN = pyb.Pin.board.Y10 # Led rouge | ||
− | + | # --- INITIALISATION DES BROCHES --- | |
+ | pRed = pyb.Pin( RED_PIN, pyb.Pin.OUT_PP ) | ||
+ | # --- CORPS DU PROGRAMME ---- | ||
+ | while True: | ||
+ | # Eteind la led | ||
+ | pRed.low() | ||
+ | # Attendre 1 secondes | ||
+ | pyb.delay( 1000 ) | ||
+ | # Allumer la led | ||
+ | pRed.high() | ||
+ | </nowiki> | ||
== Syntaxe == | == Syntaxe == | ||
− | + | Le langage Python est puissant de par sa simplicité, mais cela demande un minimum d'effort de "formatage" durant l'écriture de vos script. | |
+ | |||
+ | La lisibilité du code est des éléments fondamentaux du langage, il existe même une recommandation officielle connue sous le nom [https://www.python.org/dev/peps/pep-0008/ PEP8], des recommandations de les développeurs Python s'efforcent de suivre. '''La plus importante restant l'indentation du code''' (indispensable pour que vos scripts soient correctement interprétés). | ||
Tout devrait bien se passer si vous vous souvenez de ce qui suit. | Tout devrait bien se passer si vous vous souvenez de ce qui suit. | ||
=== Commentaires === | === Commentaires === | ||
− | {{fname| | + | {{fname|# (simple ligne de commentaire) |
}} | }} | ||
Souvent utile pour écrire , au fur et à mesure, des notes expliquant le fonctionnement de chaque ligne de code. | Souvent utile pour écrire , au fur et à mesure, des notes expliquant le fonctionnement de chaque ligne de code. | ||
− | Pour faire un commentaire, taper | + | Pour faire un commentaire, taper le sigle # (dièse) suivit d'un espace puis de votre commentaire. |
− | {{fname| | + | === Blocs indentés === |
+ | {{fname|1=Indentation = 4 espaces | ||
}} | }} | ||
− | + | Ajouter une indentation de 4 espaces supplémentaire pour définir le début d'un nouveau bloc. Toutes les lignes suivantes utilisant la même indentation font partie du même bloc. | |
− | + | ||
+ | Dès que vous réduisez l’indentation (réduction de 4 espaces), vous sortez du bloc d'exécution (et revenez au bloc précédent). | ||
+ | |||
+ | <nowiki>var1 = 100 | ||
+ | if var1 > 10: | ||
+ | print( "1 - obtenu une expression vraie" ) | ||
+ | print( var1 ) | ||
+ | else: | ||
+ | print( "1 - Obtenu une expression fausse" ) | ||
+ | print( var1 )</nowiki> | ||
+ | print( "fin de programme" ) | ||
+ | |||
+ | Produira le résultat suivant: | ||
− | + | <nowiki>1 - obtenu une expression vraie | |
− | + | 100 | |
− | + | fin de programme</nowiki> | |
− | + | === Retour à la ligne === | |
+ | {{fname|(retour à la ligne)}} | ||
− | + | Chaque ligne de code se termine par un retour à la ligne. | |
− | |||
− | + | Bien que l’interpréteur Python supporte l'étalement d'une instruction sur plusieurs lignes mais cela n'est pas recommandé (surtout si l'on début) | |
− | + | {{underline|Note:}} contrairement à Arduino, pas besoin de point-virgule à la fin de chaque instruction. | |
== Variables == | == Variables == | ||
Un programme n'est rien d'autre que des instructions manipulant des nombres de façon intelligente. | Un programme n'est rien d'autre que des instructions manipulant des nombres de façon intelligente. | ||
− | Les variables sont utilisées pour faire ces manipulations. | + | Les variables sont utilisées pour faire ces manipulations. |
− | + | En python, le type des variables est fixé et évolue de façon dynamique. | |
− | |||
− | + | C'est l'assignation de la valeur qui fixera le type de la variable. | |
− | + | === Les nombres === | |
+ | {{fname|1=i = 12}} | ||
− | + | Les nombres sont les principaux outils de travail des programmes. | |
− | |||
− | + | En python, les types entier {{fname|int}} et {{fname|long}} sont unifiés et permettent de stocker des valeurs entières. | |
− | + | En Python, un entier pure permet de stocker une valeur jusqu'à 2^31 -1 (soit 9223372036854775807)... et python change automatiquement la représentation du nombre si ce dernier devient trop grand. | |
− | + | Il n'y a donc presque pas de limite en python (si ce n'est celle de la mémoire). | |
− | |||
− | + | Envie d'en savoir plus? Voyez [[PI-Python-Apprendre-Python#Ouvrage_PDF|le livre de George Swinnen, Apprendre à programmer en Python 3, page 49, "Les données numériques"]]. | |
=== Les valeurs décimales === | === Les valeurs décimales === | ||
− | {{fname| | + | {{fname|1=f = 2.5}} |
Utilisé pour les opérations mathématiques à virgule flottante (nombres décimaux). | Utilisé pour les opérations mathématiques à virgule flottante (nombres décimaux). | ||
− | + | <nowiki>f = 2.5 | |
+ | print( f + 1.3 )</nowiki> | ||
− | + | Envie d'en savoir plus? Voyez [[PI-Python-Apprendre-Python#Ouvrage_PDF|le livre de George Swinnen, Apprendre à programmer en Python 3, page 61, "Le type float"]]. | |
− | |||
− | + | === Nombres complexes === | |
+ | Bien que cela soit peu pertinent dans le cadre de ce kit, sachez que python supporte les nombres complexes (partie réelle + partie imaginaire). | ||
− | + | === Les booléens === | |
+ | {{fname|1=b = True}} | ||
+ | |||
+ | Une simple variable ou une expression est vraie ({{fname|True}}) ou fausse ({{fname|False}}) . | ||
+ | |||
+ | === Chaîne de caractère === | ||
+ | {{fname|1=s = "Bonjour le monde"}} | ||
+ | |||
+ | Les chaînes de caractères Python vont bien au delà du simple stockage de lettre. | ||
+ | |||
+ | Envie d'en savoir plus? Voyez [[PI-Python-Apprendre-Python#Ouvrage_PDF|le livre de George Swinnen, Apprendre à programmer en Python 3, page 63, "Les données alphanumériques"]]. | ||
+ | |||
+ | === None === | ||
+ | {{fname|1=ref = None}} | ||
+ | |||
+ | None permet d'indiquer que la variable est "vide". C'est une valeur pratique dans de nombreux cas de programmation avancée. | ||
+ | |||
+ | == Les autres types natifs == | ||
+ | A côtés des types de variables traditionnels, il existe quelques types natifs simple d'emploi et d'une puissance inouïe. | ||
+ | |||
+ | Il n'est pas nécessaire de savoir les utiliser mais savoir qu'ils existent est important... au moins pour faire des recherches. | ||
+ | |||
+ | === Les Listes === | ||
+ | Les listes permettent de regrouper un ensemble de valeurs (de différent types) sous forme de liste. Il est, par la suite, possible d'explorer cette liste, extraire une valeur, etc. | ||
+ | |||
+ | Etant donné qu'il s'agit d'une liste non bornée, il est très simple d'y ajouter de nouvelles entrées (pas besoin de redimensionner la liste). | ||
+ | |||
+ | <nowiki>une_liste = [ 'lundi', 'mardi', 'mercredi', 123, 15, 16 ] | ||
+ | print( une_liste[1] ) | ||
+ | print( une_liste[3] )</nowiki> | ||
+ | |||
+ | ce qui produira le résultat: | ||
+ | <nowiki>mardi | ||
+ | 123</nowiki> | ||
+ | |||
+ | Envie d'en savoir plus? Voyez [[PI-Python-Apprendre-Python#Ouvrage_PDF|le livre de George Swinnen, Apprendre à programmer en Python 3, page 67, "Les listes (première approche)"]]. | ||
+ | |||
+ | === Les dictionnaires === | ||
+ | Un dictionnaire est une structure particulière permettant d'associer une valeur avec une clé. Cette clé permet d'identifier facilement la valeur que l'on désire extraire du dictionnaire. | ||
+ | |||
+ | Chaque clé doit être unique et peut être de n'importe quel type. Le plus évident semble être l'utilisation d'un mot clé (donc une chaîne de caractère) mais cela fonctionne aussi avec des entiers, des objets, etc. | ||
+ | |||
+ | <nowiki>dico = { 'nom' : 'Mhoa', 'prenom': 'Joseph', 'age': 13 } | ||
+ | dico['ville'] = 'Bruxelles' | ||
+ | |||
+ | print( dico['prenom'] ) | ||
+ | print( dico['ville'] )</nowiki> | ||
+ | |||
+ | Ce qui produit le résultat suivant: | ||
+ | |||
+ | <nowiki>Joseph | ||
+ | Bruxelles</nowiki> | ||
+ | |||
+ | Envie d'en savoir plus? Voyez [[PI-Python-Apprendre-Python#Ouvrage_PDF|le livre de George Swinnen, Apprendre à programmer en Python 3, page 182, "Les dictionnaires"]]. | ||
+ | |||
+ | === Les tuples === | ||
+ | Python dispose également d'une autre structure un peu bizarre, à mis chemin entre les listes et objet non modifiable (comme les chaînes de caractères). | ||
+ | |||
+ | Le fait que les tuples soient "non modifiable" est une particularité du langage (particularité à dessein). | ||
+ | |||
+ | Cette structure laisse souvent les nouveaux venu un peu perplexe mais se révèle vite assez pratique au cours du temps, surtout grâce à son écriture très compacte. | ||
+ | |||
+ | En effet, grâce au tuple vous pourrez: | ||
+ | * passer plusieurs valeurs à une fonction | ||
+ | * permettre à vos fonctions de retourner facilement plusieurs valeurs. | ||
+ | |||
+ | <nowiki>def test( valeur ): | ||
+ | return( 7, valeur+'-Hello', 'test-'+valeur ) | ||
+ | |||
+ | print( test('salut') ) | ||
+ | print( test('salut')[0] ) | ||
+ | print( test('salut')[1] ) | ||
+ | print( test('salut')[2] )</nowiki> | ||
+ | |||
+ | Ce qui produit les résultats suivants: | ||
+ | |||
+ | <nowiki>(7, 'salut-Hello', 'test-salut') | ||
+ | 7 | ||
+ | salut-Hello | ||
+ | test-salut</nowiki> | ||
+ | |||
+ | Envie d'en savoir plus? Voyez [[PI-Python-Apprendre-Python#Ouvrage_PDF|le livre de George Swinnen, Apprendre à programmer en Python 3, page 180, "Les tupples"]]. | ||
+ | |||
+ | === Bytes et byte arrays === | ||
+ | Vous rencontrerez inévitable ce type de donnée dès que vous aurez besoin de manipuler des données binaires (par exemple, le contenu d'un fichier jpeg). | ||
== Opérateurs mathématiques == | == Opérateurs mathématiques == | ||
Ligne 115 : | Ligne 308 : | ||
|- style="font-size: 90%" | |- style="font-size: 90%" | ||
| align="left" | = | | align="left" | = | ||
− | | align="left" | (assignation) rend quelque-chose | + | | align="left" | (assignation) rend quelque-chose égale à autre chose. Ex: x = 10 * 2 (x est maintenant égal à 20) |
|- style="font-size: 90%" | |- style="font-size: 90%" | ||
| align="left" | % (modulo) | | align="left" | % (modulo) | ||
Ligne 131 : | Ligne 324 : | ||
| align="left" | / | | align="left" | / | ||
| align="left" | (division) | | align="left" | (division) | ||
+ | |- style="font-size: 90%" | ||
+ | | align="left" | ** | ||
+ | | align="left" | (puissance) | ||
|} | |} | ||
− | + | {{MicroPython.Pyboard.Discovery-TRAILER}} |
Version actuelle datée du 20 février 2016 à 15:27
Un bouquin?
Cette section du tutoriel offre un aperçu rapide et très condensé.
Le but est d'aller droit au but et le plus rapidement possible.
Quoi qu'il en soit, si vous cherchez de la littérature en Français autour du Langage Python, MC Hobby propose différents ouvrages (sur stock) dans la section documentation du WebShop.
Gerard Swinnen propose également un livre libre "Apprendre à programmer avec Python 3" libre d'accès.
OpenClassRoom offre aussi une excellent référence Francophone: "Apprenez à programmer en Python" déjà mentionné dans le cadre de nos tutoriels Raspberry-Pi (et oui, il utilise aussi Python).
La programmation Python en Bref
Un MicroContrôleur MicroPython est programmé en langage Python 3. Cette section est une petite introduction à la programmation visant les personnes ayant un peu d'expérience et qui ont juste besoin d'un petit briefing sur les particularités de Python.
Python est une langage de scripting vraiment très facile à apprendre, très expressif, vraiment très puissant et disposant d'une gigantesque communauté. En fonctionnant sur un microcontrôleur, MicroPython permet de faire clignoter des LEDs sans aucun effort, lire des tensions, faire bouger des moteurs et servo moteurs, jouer du son, écrire/lire des données sur la carte micro SD, établir des communications sans fils (avec un module complémentaire) et devenir ce cerveau que votre robot attend désespérément.
Python est un langage très abordable et productif dès votre première ligne de code! Vous apprendrez les fondements en quelques heures (minutes?) et vous serez productif en une demi journée tout au plus. La force de Python réside dans sa simplicité, malgré cette simplicité c'est aussi l'un des langages les plus évolutifs... vous pourrez faire évoluer vos savoir durant de nombreuses années tellement les champs d'application sont vastes.
Ne vous inquiétez pas si vous trouvez les concepts un peu intimidant, vous pouvez commencer avec les montages de circuits et essayer d'en comprendre un maximum en cours de chemin.
Le site web Python 3.5.1 documentation est une excellente ressource pour découvrir le langage sur PC. La syntaxe est identique pour MicroPython, la différence réside principalement dans les bibliothèques supportées.
Structure d'un programme
L'indentation
Ce qui est le plus surprenant, et peut être le plus déroutant, pour les nouveaux venus, c'est que la structure des programmes Python s'organisent autour d'une indentation (chaque identation = 4 espaces).
Les différents blocs (conditions, boucles, etc) sont donc décalés les un par rapport aux autres. Au final, cela offre une code élégant et confortable à lire.
Pour éditer vos programme python, un simple éditeur de texte fera amplement l'affaire. Evitez surtout les programmes trop intelligent qui manipule les espaces et les tabulations car cela peu devenir un vrai cauchemar (ex: c'est le cas de l'éditeur geany si vous ne modifiez pas ses paramètres).
Structurer un programme Python
Vos programmes Python (souvent appelé un "script") contiennent un corps du programme qui sera exécuté lors du démarrage du script.
Au démarrage de la carte MicroPython PyBoard, cette dernière essaye de charger le script main.py et de l'exécuter. Vos programme MicroPython se trouverons donc dans ce fichier main.py (nous y reviendrons plus tard).
Votre script Python peut également contenir:
- la definition de constante.
- la définition de fonctions.
- la définition d'objets.
- le chargement de bibliothèque (aussi appelé module)
Le corps de votre programme /script pourra faire appel à tout ces éléments.
Bonnes pratiques
Idéalement:
- Déclarer les constantes en début de script
- Initialiser les broches d'entrées/sortie en début de script (aussi tôt que possible)
- Définir les fonctions et objets
- Corps principal de votre programme
- dés-initialisation (si applicable).
Voici un tout petit exemple qui illustre ces recommandation.
# --- DEFINITION DES CONSTANTES --- RED_PIN = pyb.Pin.board.Y10 # Led rouge GREEN_PIN = pyb.Pin.board.Y11 # Led verte BLUE_PIN = pyb.Pin.board.Y12 # Led bleue # --- INITIALISATION DES BROCHES --- pRed = pyb.Pin( RED_PIN, pyb.Pin.OUT_PP ) pGreen = pyb.Pin( GREEN_PIN, pyb.Pin.OUT_PP ) pBlue = pyb.Pin( BLUE_PIN, pyb.Pin.OUT_PP ) # --- CORPS DU PROGRAMME ---- # Allumer la led ROUGE pRed.low() pGreen.high() pBlue.high() # Attendre 1 secondes pyb.delay( 1000 ) # Allumer la led BLEUE pRed.high() pGreen.high() pBlue.low() # Attendre 1 secondes pyb.delay( 1000 ) # Allumer la led VERTE pRed.high() pGreen.low() pBlue.high() # Attendre 1 secondes pyb.delay( 1000 ) # --- FIN DE PROGRAMME --- # Tout en noir (toutes les LEDs éteintes) pRed.high() pGreen.high() pBlue.high()
Comparaison avec Arduino
Bon nombre d'entre vous connaissent déjà l'environnement Arduino. Voici donc une petite comparaisons pour fixer les idées.
Dans l'environnement Arduino, vous devez définir les deux fonctions setup() (pour l'initialisation des broches) et loop() (exécution du corps du programme).
Ces fonctions n'existent pas sur la PyBoard.
Dans votre script Python, vous définirez l'initialisation des broches (l'équivalent de setup() en début de script. Vous pourrez ensuite écrire une boucle infinie exécutant le corps de votre programme (l'équivalent de loop()
Voici un exemple concret qui fait clignoter une LED indéfiniment:
# --- DEFINITION DES CONSTANTES --- RED_PIN = pyb.Pin.board.Y10 # Led rouge # --- INITIALISATION DES BROCHES --- pRed = pyb.Pin( RED_PIN, pyb.Pin.OUT_PP ) # --- CORPS DU PROGRAMME ---- while True: # Eteind la led pRed.low() # Attendre 1 secondes pyb.delay( 1000 ) # Allumer la led pRed.high()
Syntaxe
Le langage Python est puissant de par sa simplicité, mais cela demande un minimum d'effort de "formatage" durant l'écriture de vos script.
La lisibilité du code est des éléments fondamentaux du langage, il existe même une recommandation officielle connue sous le nom PEP8, des recommandations de les développeurs Python s'efforcent de suivre. La plus importante restant l'indentation du code (indispensable pour que vos scripts soient correctement interprétés).
Tout devrait bien se passer si vous vous souvenez de ce qui suit.
Commentaires
# (simple ligne de commentaire)
Souvent utile pour écrire , au fur et à mesure, des notes expliquant le fonctionnement de chaque ligne de code.
Pour faire un commentaire, taper le sigle # (dièse) suivit d'un espace puis de votre commentaire.
Blocs indentés
Indentation = 4 espaces
Ajouter une indentation de 4 espaces supplémentaire pour définir le début d'un nouveau bloc. Toutes les lignes suivantes utilisant la même indentation font partie du même bloc.
Dès que vous réduisez l’indentation (réduction de 4 espaces), vous sortez du bloc d'exécution (et revenez au bloc précédent).
var1 = 100 if var1 > 10: print( "1 - obtenu une expression vraie" ) print( var1 ) else: print( "1 - Obtenu une expression fausse" ) print( var1 )
print( "fin de programme" )
Produira le résultat suivant:
1 - obtenu une expression vraie 100 fin de programme
Retour à la ligne
(retour à la ligne)
Chaque ligne de code se termine par un retour à la ligne.
Bien que l’interpréteur Python supporte l'étalement d'une instruction sur plusieurs lignes mais cela n'est pas recommandé (surtout si l'on début)
Note: contrairement à Arduino, pas besoin de point-virgule à la fin de chaque instruction.
Variables
Un programme n'est rien d'autre que des instructions manipulant des nombres de façon intelligente.
Les variables sont utilisées pour faire ces manipulations.
En python, le type des variables est fixé et évolue de façon dynamique.
C'est l'assignation de la valeur qui fixera le type de la variable.
Les nombres
i = 12
Les nombres sont les principaux outils de travail des programmes.
En python, les types entier int et long sont unifiés et permettent de stocker des valeurs entières.
En Python, un entier pure permet de stocker une valeur jusqu'à 2^31 -1 (soit 9223372036854775807)... et python change automatiquement la représentation du nombre si ce dernier devient trop grand.
Il n'y a donc presque pas de limite en python (si ce n'est celle de la mémoire).
Envie d'en savoir plus? Voyez le livre de George Swinnen, Apprendre à programmer en Python 3, page 49, "Les données numériques".
Les valeurs décimales
f = 2.5
Utilisé pour les opérations mathématiques à virgule flottante (nombres décimaux).
f = 2.5 print( f + 1.3 )
Envie d'en savoir plus? Voyez le livre de George Swinnen, Apprendre à programmer en Python 3, page 61, "Le type float".
Nombres complexes
Bien que cela soit peu pertinent dans le cadre de ce kit, sachez que python supporte les nombres complexes (partie réelle + partie imaginaire).
Les booléens
b = True
Une simple variable ou une expression est vraie (True) ou fausse (False) .
Chaîne de caractère
s = "Bonjour le monde"
Les chaînes de caractères Python vont bien au delà du simple stockage de lettre.
Envie d'en savoir plus? Voyez le livre de George Swinnen, Apprendre à programmer en Python 3, page 63, "Les données alphanumériques".
None
ref = None
None permet d'indiquer que la variable est "vide". C'est une valeur pratique dans de nombreux cas de programmation avancée.
Les autres types natifs
A côtés des types de variables traditionnels, il existe quelques types natifs simple d'emploi et d'une puissance inouïe.
Il n'est pas nécessaire de savoir les utiliser mais savoir qu'ils existent est important... au moins pour faire des recherches.
Les Listes
Les listes permettent de regrouper un ensemble de valeurs (de différent types) sous forme de liste. Il est, par la suite, possible d'explorer cette liste, extraire une valeur, etc.
Etant donné qu'il s'agit d'une liste non bornée, il est très simple d'y ajouter de nouvelles entrées (pas besoin de redimensionner la liste).
une_liste = [ 'lundi', 'mardi', 'mercredi', 123, 15, 16 ] print( une_liste[1] ) print( une_liste[3] )
ce qui produira le résultat:
mardi 123
Envie d'en savoir plus? Voyez le livre de George Swinnen, Apprendre à programmer en Python 3, page 67, "Les listes (première approche)".
Les dictionnaires
Un dictionnaire est une structure particulière permettant d'associer une valeur avec une clé. Cette clé permet d'identifier facilement la valeur que l'on désire extraire du dictionnaire.
Chaque clé doit être unique et peut être de n'importe quel type. Le plus évident semble être l'utilisation d'un mot clé (donc une chaîne de caractère) mais cela fonctionne aussi avec des entiers, des objets, etc.
dico = { 'nom' : 'Mhoa', 'prenom': 'Joseph', 'age': 13 } dico['ville'] = 'Bruxelles' print( dico['prenom'] ) print( dico['ville'] )
Ce qui produit le résultat suivant:
Joseph Bruxelles
Envie d'en savoir plus? Voyez le livre de George Swinnen, Apprendre à programmer en Python 3, page 182, "Les dictionnaires".
Les tuples
Python dispose également d'une autre structure un peu bizarre, à mis chemin entre les listes et objet non modifiable (comme les chaînes de caractères).
Le fait que les tuples soient "non modifiable" est une particularité du langage (particularité à dessein).
Cette structure laisse souvent les nouveaux venu un peu perplexe mais se révèle vite assez pratique au cours du temps, surtout grâce à son écriture très compacte.
En effet, grâce au tuple vous pourrez:
- passer plusieurs valeurs à une fonction
- permettre à vos fonctions de retourner facilement plusieurs valeurs.
def test( valeur ): return( 7, valeur+'-Hello', 'test-'+valeur ) print( test('salut') ) print( test('salut')[0] ) print( test('salut')[1] ) print( test('salut')[2] )
Ce qui produit les résultats suivants:
(7, 'salut-Hello', 'test-salut') 7 salut-Hello test-salut
Envie d'en savoir plus? Voyez le livre de George Swinnen, Apprendre à programmer en Python 3, page 180, "Les tupples".
Bytes et byte arrays
Vous rencontrerez inévitable ce type de donnée dès que vous aurez besoin de manipuler des données binaires (par exemple, le contenu d'un fichier jpeg).
Opérateurs mathématiques
Les opérateurs sont utilisés pour manipuler les nombres (ils fonctionnent comme dans les mathématiques simples).
Opérateur | Description |
= | (assignation) rend quelque-chose égale à autre chose. Ex: x = 10 * 2 (x est maintenant égal à 20) |
% (modulo) | donne le reste quand un nombre est divisé par un autre. Ex : 12 % 10 (donne 2) |
+ | (addition) |
- | (soustraction) |
* | (multiplication) |
/ | (division) |
** | (puissance) |
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.