Pyb-discovery-Intro-programmation

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche

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.

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.

OpenClassRoom offre 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).

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.

Exemple-Identation-Python.png

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).

Structure d'un programme

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:

  1. Déclarer les constantes en début de script
  2. Initialiser les broches d'entrées/sortie en début de script (aussi tôt que possible)
  3. Définir les fonctions et objets
  4. Corps principal de votre programme
  5. 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()

La différence avec Arduino

Bon nombre d'entre vous connaissent déjà l'environnement Arduino.

Dans l'environnement Arduino, vous devez definir les deux fonctions {fname|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()

Syntaxe

L'un des éléments frustrants du C est son exigence de formatage (ce qui le rends aussi très puissant).

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 deux barres de division et tout ce qui suit jusqu'à la fin de la ligne sera ignoré par votre programme.

/* */ (commentaire multi-lignes)

Si vous avez beaucoup à noter, vous pouvez répartir votre commentaire sur plusieurs lignes. Tout ce qui se trouve entre ces deux symboles sera ignoré par votre programme.

Accolades {}

{ } (accolades)

Utilisées pour définir le début et la fin d'un bloc de code. Les accolades sont utilisées dans une fonction comme dans les boucles).

Le point-virgule ;

; (point-virgule)

Chaque ligne de code se termine par un point-virgule.

Un point virgule manquant est souvent la raison pour laquelle votre programme refuse de compiler.

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.

Les entiers

int

Principal outil de travail, un entier est stocké sur 2 octets (2 bytes, soit 16 bits).

Il n'a pas de décimal et stocke une valeur entre -32.768 et 32.767.

Les entiers longs

long

Ce type est utilisé quand un entier n'est pas suffisant.

Utilise 4 octets (4 bytes, soit 32 bits) de RAM et supporte les valeurs allant de -2.147.483.648 à 2.147.483.647

Les booléens

boolean

Une simple variable vrai (True) ou faux (False) . Utile car elle n'utilise qu'un bit de mémoire RAM.

Les valeurs décimales

float

Utilisé pour les opérations mathématiques à virgule flottante (nombres décimaux).

Utilise 4 octets (32 bits) de mémoire RAM et peut stocker une valeur allant de -3,4028235E+38 à 3,4028235E+38.

Le caractère

char

Stocke un caractère en utilisant le code ASCII (ex : 'A' = 65). Utilise un octet (1 byte, soit 8 bits) de mémoire RAM.

Arduino manipule les chaines de caractères (strings) comme des tableaux de caractères (array de char).

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 equal à 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)

Voyez ardx.org/PROG pour une référence complète (anglais).