Le pcDuino : s'installer pour programmer le pcDuino en ... · • C'est incroyablement efficace je...

15
Le pcDuino : s'installer pour programmer le pcDuino en Python ! Par X. HINAULT – Juin 2013– MAJ : Juin 2013 – www.mon-club-elec.fr Mon choix pour programmer le pcDuino : le langage Python A mon sens, comme je l'ai expliqué précédemment, le langage Python est probablement la meilleure solution pour plusieurs raisons : langage interprété ne nécessitant pas de chaîne de compilation et pouvant notamment être testé ligne à ligne dans l'interpréteur Python il existe un éditeur léger à coloration syntaxique et auto-complétion automatique, permettant d'exécuter immédiatement le code avec affichage des messages dans la console : j'ai nommé Geany... déjà installé si vous avez suivi mes instructions précédentes... sinon, çà se fait en 1 ligne de commande ! langage peu gourmand en ressources (les paquets du langage Python ne prennent que quelques dizaines de Mo au plus à comparer au 200 Mo de Java + IDE Arduino...) langage permettant assez simplement la mise en place d'interfaces graphiques GUI « comme les pro » de toute sorte, dans lesquelles il sera facile d'intégrer les données issues des broches E/S, des mesures analogiques, etc... syntaxe simplifiée comparativement au C/C++ (pas de poin ; de fin de ligne, pas d'accolades... utilise indentation pour structurer le code..) grande puissance de codage, notamment pour la gestion de tableaux, des types, etc... Il faut l'avoir testé pour comprendre de quoi on parle. Par exemple, en C, passer un tableau à une fonction est assez complexe... en Python, il n'y a aucun problème... çà se fait simplement. et surtout gestion relativement simple du réseau éthernet, de la communication avec le système, de l'utilisation du port série... etc... le tout dans un Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 1 / 15

Transcript of Le pcDuino : s'installer pour programmer le pcDuino en ... · • C'est incroyablement efficace je...

Le pcDuino : s'installer pour programmer le pcDuino en Python !

Par X. HINAULT – Juin 2013– MAJ : Juin 2013 – www.mon-club-elec.fr

Mon choix pour programmer le pcDuino : le langage Python

• A mon sens, comme je l'ai expliqué précédemment, le langage Python est probablement la meilleure solution pour plusieurs raisons :

◦ langage interprété ne nécessitant pas de chaîne de compilation et pouvant notamment être testé ligne à ligne dans l'interpréteur Python

◦ il existe un éditeur léger à coloration syntaxique et auto-complétion automatique, permettant d'exécuter immédiatement le code avec affichage des messages dans la console : j'ai nommé Geany... déjà installé si vous avez suivi mes instructions précédentes... sinon, çà se fait en 1 ligne de commande !

◦ langage peu gourmand en ressources (les paquets du langage Python ne prennent que quelques dizaines de Mo au plus à comparer au 200 Mo de Java + IDE Arduino...)

◦ langage permettant assez simplement la mise en place d'interfaces graphiques GUI « comme les pro » de toute sorte, dans lesquelles il sera facile d'intégrer les données issues des broches E/S, des mesures analogiques, etc...

◦ syntaxe simplifiée comparativement au C/C++ (pas de poin ; de fin de ligne, pas d'accolades... utilise indentation pour structurer le code..)

◦ grande puissance de codage, notamment pour la gestion de tableaux, des types, etc... Il faut l'avoir testé pour comprendre de quoi on parle. Par exemple, en C, passer un tableau à une fonction est assez complexe... en Python, il n'y a aucun problème... çà se fait simplement.

◦ et surtout gestion relativement simple du réseau éthernet, de la communication avec le système, de l'utilisation du port série... etc... le tout dans un

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 1 / 15

même programme qui pourra gérer également les broches E/S du pcDuino. Ceci ne sera pas aussi facilement possible (pour ne pas dire impossible) avec l'IDE Arduino seul... ce qui fait perdre une bonne partie de l'intérêt de la plateforme pcDuino

• Je vous propose donc ici une première approche de la programmation du pcDuino en Python...

Préparatifs

Créer un répertoire de travailCréer un répertoire pour les scripts Python, soit graphiquement, soit en ligne de commande :

$ mkdir scripts_python

$ cd scripts_python

Ce répertoire se trouvera ainsi dans votre répertoire utilisateur, le répertoire Ubuntu :

Vous y placerez ensuite vos codes Python (qui se reconnaissent par le suffixe .py), ce qui donnera par exemple :

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 2 / 15

+/- Installer un interpréteur Python sympathiqueOn utilise l'interpréteur pour tester des bouts de code à la volée : c'est un des grands atouts de Python. On peut utiliser l'interpréteur système mais il est plus sympa d'utiliser Dreampie (3,25 Mo avec les dépendances), un interpréteur à coloration syntaxique avec une interface plus agréable :

$ sudo apt-get install dreampie

On lance dreampie à partir du menu Programming :

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 3 / 15

Ce qui donne :

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 4 / 15

• Avec DreamPie, on saisit les instructions dans la fenêtre du bas : le résulta s'affiche dans le fenêtre du haut. Une fois fait, vous pouvez fermer DreamPie

Paramétrer l'éditeur de programmation Pour coder en Python, l'éditeur Geany constitue une solution simple, efficace et légère pouvant tourner facilement sur un petit système tel que pcDuino. Installer l'éditeur Geany (qui va permettre d'éditer et d'exécuter les codes ) si ce n'est déjà fait. Dans un terminal, saisir :

$ sudo apt-get install geany

Geany se lance ensuite à partir du menu graphique Programming > Geany :

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 5 / 15

Paramétrer Geany pour faciliter le codage avec Python : dans le menu Affichage > Editeur > cocher « afficher espace » et « afficher guides indentation »

• Avec ces paramétrages, votre code aura l'allure suivante :

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 6 / 15

• Et Geany intègre l'auto-complétion (ce que ne fait pas l'éditeur Arduino...), ce qui donnera par exemple :

• C'est incroyablement efficace je trouve pour la légèreté d'installation de ce logiciel ! A comparer au paramétrage d'un IDE comme Eclipse pour ceux qui connaissent... Geany est largement suffisant en pratique courante pour coder en Python.

Votre premier programme

• Ouvrir Geany depuis le menu graphique Programming > Geany :

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 7 / 15

• Enregistrer le fichier sous hello_world.py

Saisir le code suivant : print (« hello world ! »)

Cliquer sur le bouton « exécuter » de Geany :

On obtient une fenêtre de Terminal qui s'ouvre avec le message qui s'affiche :

Bravo ! Vous avez écrit votre premier script Python ! Une fois, fermer la fenêtre Terminal qui s'est lancée.

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 8 / 15

Voici le même code de façon un peu plus finie, ce code étant exécutable directement par double-clic sur le nom du fichier#!/usr/bin/python# -*- coding: utf-8 -*-

# -- Classe principale (lancement) --def main():

print("coucou")

if __name__=="__main__": # pour rendre le code exécutable main() # appelle la fonction main

Eh... oh... ! Moi, je connais pas le Python !!

• Bon, ben c'est comme le reste çà s'apprend... (« ah, ah, ah ! j'suis mort de rire... ») Blague à part, la bonne nouvelle, c'est que pour ce que vous allez faire, il y a juste quelques transpositions à connaître... et « roule ma poule »... Vous approfondirez ensuite progressivement en fonction de vos besoins et croyez-moi, il n'y a (presque) pas de limites !!

• Voici un rapide résumé de l'essentiel à savoir (si vous connaissez déjà le langage Python, passez d'emblée à la suite..)

Syntaxe de base : ce que vous connaissez La syntaxe concerne les règles d'écriture à respecter . C'est un peu comme la ponctuation, les majuscules, les guillemets, etc.... lorsque l'on écrit un texte. Si vous avez utilisé un autre langage, tel que le C ou Arduino vous avez dû apprendre la syntaxe de base suivante :

Fin de ligne

• terminer une ligne par un point-virgule ; instruction ;

Section de code

• encadrer les sections de code (boucle, condition, fonction, .. ) par des accolades : une de début { et une de fin } { // debut section de code

instructions ;

} // fin section de code

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 9 / 15

Structuration du code

• le code est structuré à l'aide des imbrications d'accolades et l'indentation n'a pas grande importance. Autrement dit : { // niveau 1

{ // niveau 2

fairececi() ;

} // fin niveau 2

} // fin niveau 1

équivaut à : { // niveau 1

{ // niveau 2

fairececi() ;

} // fin niveau 2

} // fin niveau 1

• Ceci étant, assez naturellement, en langage C ou équivalent, on utilise assez volontiers les indentations pour structurer visuellement le code, une habitude qui va s'avérer utile lorsque l'on passe au langage Python.

Syntaxe de base : En langage PythonEn langage Python, les choses sont différentes et finalement plus simples.

Fin de ligne

• En langage Python, on termine une ligne par... rien ! Difficile de faire plus simple !instruction

Section de code

• En langage Python, on fixe :

◦ le début d'une section de code (boucle, condition, fonction, .. ) par :

▪ les instructions de la section sont indentées par rapport au : de début

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 10 / 15

◦ et la fin par un retour d'indentation de même niveau que le : de début: # début section de code– tab → instructions– tab →# fin section de code

• Truc : au début de votre utilisation du langage Python et même après..) , pour signaler la fin d'une section de code, vous pouvez insérer un commentaire sur la ligne de fin, de la forme # fin section code

Structuration du code

• La structuration du code en langage Python se fait à l'aide de l'indentation réalisée avec des tabulations (et pas des espaces!!!) :

◦ toutes les instructions qui se suivent ayant la même indentation sont considérées comme faisant partie du même niveau

◦ un retour d'indentation est considérer comme une « élévation » au niveau précédent

◦ une nouvelle indentation crée un sous-niveau dans le niveau courant.

◦ ce qui donne : # niveau 1– tab → # niveau 2– tab → instructions– tab →– tab →– tab → # niveau3– tab →– tab → instructions– tab →– tab → – tab → # suite niveau 2– tab → instructions– tab →# suite niveau 1instructions

• Une conséquence essentielle est que :fairececi()

n'est pas équivalent à : fairececi()

• Bien noter qu'il s'agit de tabulation et pas d'espaces : c'est un piège au début +++

• C'est ici un point clé, un peu déroutant, voire « prise de tête » au début, mais on s'y fait très vite. L'interpréteur vous aidera en vous signalant qu'il considère

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 11 / 15

être dans un niveau avec le prompt qui deviendra … au lieu de >>>

L'indentation utilisée avec le langage Python est « LA » nouveauté par rapport à ce que vous connaissez... C'est le principal obstacle à « surmonter », ce qui se fait très bien en y allant progressivement. Le « piège » n°1 est d'utiliser des espaces au lieu d'une tabulation.

Les commentaires

Ce que vous connaissez

En langage C ou équivalent, vous connaissez le commentaire sur une ligne : // ceci est commentaire sur une ligne

et le commentaire multilignes :/*Ceci est un commentairesur plusieurslignes*/

En Python

En langage Python, le commentaire sur une ligne sera de la forme :# ceci est un commentaire sur une seule ligne

et le commentaire sur plusieurs lignes sera de la forme : """Ceci est un commentaire sur plusieurslignes"""

Les fonctions

Ce que vous avez appris

Avec un langage tel que le C, Arduino ou équivalent, vous avez appris à écrire une fonction de la façon suivante :

• préciser le type de valeur renvoyée (valeur entière, à virgule, chaine de caractères) : le « café moulu »

• donner un nom à la fonction qui décrit ce qu'elle fait si possible

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 12 / 15

• mettre entre parenthèses les paramètres à utiliser (ou reçus) par la fonction : les « grains de café »

• indiquer le début du code de la fonction à l'aide d'une accolade {

• écrire ligne à ligne le code de la fonction (« moudre les grains »):

◦ les commentaires précédés d'un double //

◦ les instructions suivies d'un ;

• indiquer la fin du code de la fonction à l'aide d'une accolade }

Par convention, le nom d'une fonction commencera toujours par une minuscule.

En Python

A partir de ce que nous avons dit précédemment, vous devriez être capable quasiment par vous-mêmes d'écrire une fonction simple en Python... En fait, le Python est plus simple qu'un langage tel que le C car :

• il n'est pas nécessaire de préciser le type renvoyé par la fonction

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 13 / 15

• il n'est pas nécessaire de préciser le type des paramètres reçus .

• En ce qui concerne les paramètres reçus :

◦ si la fonction ne reçoit aucun paramètre, on laissera les parenthèses vides

◦ si la fonction reçoit plusieurs paramètres, on fera précéder d'un * le paramètre

• le code de la fonction est encadré par le : du début et le retour de tabulation de fin.

Cela donne la structure type suivante :

• le mot clé pour indiquer que l'on déclare une fonction est def

• que l'on fait suivre du nom de la fonction,

• puis des paramètres entre ( ), laissées vides si aucun paramètre

• suivie enfin des : de début du code

• puis suit le code de la fonction qui est indenté par rapport aux :

• le code se termine par return() si la fonction renvoie quelque chose

On obtient la structure type suivante :def maFonction( *params) : – tab→instruction # commentaire – tab→instruction – tab→return valeur# fin de la fonction

Conclusion : • OK, avec çà vous êtes paré : on va pouvoir attaquer la programmation des broches E/S... Tatata... !

Pour aller plus loin : • Sinon, sur ce site, je vous ai mis quelques tutos pour apprendre progressivement les choses :

◦ un rapide comparatif ici du C et du Python : http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.PYQTabcDecouvrirLangagePython

◦ ici, pleins de tutos pour une prise en main à votre rythme : Développer avec le langage Python et Qt : les différentes rubriques du site www.mon-club-

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 14 / 15

elec.fr

• Et puis, pour approfondir le langage Python, il y a l'incontournable tuto du site du Zéro : http://www.siteduzero.com/informatique/tutoriels/apprenez-a-programmer-en-python

• Mais si vous suivez les exemples qui suivent, vous verrez que c'est pas sorcier...

Le pcDuino : S'installer pour programmer le pcDuino en Python ! - Par X. HINAULT – Juin 2013 – www.mon-club-elec.fr – p. 15 / 15