Différences entre versions de « FEATHER-CHARGER-FICHIER-MICROPYTHON-RUNCODE »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
(2 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
{{FEATHER-CHARGER-FICHIER-MICROPYTHON-NAV}}
 
{{FEATHER-CHARGER-FICHIER-MICROPYTHON-NAV}}
  
{{traduction}}
+
== Introduction ==
 +
{{ambox|text=Avant d'utiliser ampy avec un ESP8266, vous devez avoir désactivé la sortie de débogage (si nécessaire). Voyez la page [[FEATHER-CHARGER-FICHIER-MICROPYTHON-DEBUG|Désactiver la sortie
 +
DEBUG de l'ESP8266]]}}
  
{{ambox|text=Avant d'utiliser ampy avec un ESP8266, vous devez avoir désactivé la sortie de débogage (si nécessaire). Voyez la page [[FEATHER-CHARGER-FICHIER-MICROPYTHON-DEBUG|désact]]}}
+
En utilisant {{fname|ampy}}, vous pouvez prendre du code python écrit sur votre odrinateur et l'exécuter sur sur un carte MicroPython connectée en USB-Série. Cela permet d'explorer MicroPython en utilisant un flux de traitement assez simple. Vous pouvez écrire vitre code sur votre ordinateur, dans votre éditeur de texte favoris, puis utiliser ampy pour l'exécuter sur la carte!
  
Using {{fname|ampy}} you can take Python code written on your computer and run it on a connected MicroPython board.  This gives you a simple workflow for exploring MicroPython.  Write code on your computer in your favorite text editor, then use ampy's '''run''' command to run it on a board!
+
== Exécuter (run) ==
 +
Utilisez la commande '''{{fname|run}}''' (exécuter) et spécifiez simplement le chemin du fichier Python présent sur votre ordinateur, attendez la fin de son exécution, voyez les sorties (''instruction print')'') affichés par le programme.
  
To use the '''run''' command just specify a path to a Python file on your computer.  Ampy will send the file to the board, wait for it to finish running, and print any output from the program.
+
Créez le fichier d'exemple '''test.py''' sur votre ordinateur et copiez/collez y le code Pyhton suivant:
 
 
For example create a file '''test.py''' on your computer and save inside it the following Python code:
 
  
 
  <syntaxhighlight lang="python">
 
  <syntaxhighlight lang="python">
Ligne 17 : Ligne 18 :
 
  </syntaxhighlight>
 
  </syntaxhighlight>
  
In a terminal in the same directory as test.py run the following ampy command to execute the script on a connected MicroPython board:
+
Ouvrez un terminal et placez vous dans le même répertoire que votre fichier test.py. Exécutez ensuite la commande ampy suivante pour exécuter le script sur votre carte MicroPython connectée en USB-Séerie:
  
  <nowiki>ampy --port /serial/port run test.py</nowiki>
+
  <nowiki>ampy --port /port/serie run test.py</nowiki>
  
Where '''/serial/port''' is the path or name of the serial port connected to the MicroPython board.
+
'''/port/serie''' est le chemin (ou nom) du port série correspondant à votre carte MicroPython connectée sur le port USB de votre ordinateur. Sur une machine Lunix (ex: Linux Mint, dérivé d'Ubuntu) cela se présente sous la forme /dev/ttyUSB0
  
   {{ambox|text=If you don't want to constantly specify the --port option you can set the AMPY_PORT environment variable in your terminal session and ampy will use it as the board's serial port.}}
+
   {{ambox|text=Si vous ne voulez pas préciser continuellement l'option --port dans la ligne de commande alors vous pouvez initialiser la variable d'envrionnement AMPY_PORT dans votre session terminal. Ampy utilisera automatiquement la valeur de la variable d'environnement si aucun port n'est précisé.}}
  
You should see the output of the code after it was run on the board:
+
Après exécution de la commande, vous devriez voir les sortie du scripts sur votre moniteur:
  
 
{{ADFImage|FEATHER-CHARGER-FICHIER-MICROPYTHON-RUNCODE-00.png}}
 
{{ADFImage|FEATHER-CHARGER-FICHIER-MICROPYTHON-RUNCODE-00.png}}
  
'''If you receive an error that ampy failed to receive the expected response be sure you disabled debug output as mentioned at the top of the page!'''  Also double check the board is connected to your computer and you are specifying the correct serial port for the board. Be sure the file test.py is in the same directory as you're running the ampy command too.
+
'''Si vous recevez une erreur stipulant que ampy n'a pas reçu la réponse attendue (''failed to receive the expected response'') c'est probablement parce que la sortie des message de débogage n'a pas été désactivé sur carte. Voyez le lien mentionné en haut de page!'''  Vérifiez également que votre carte est bien connéectée sur votre ordinateur et que vous avez spécifié correctement le port série de la carte. Finalement, assurez vous également que le fichier test.py se trouve bien dans le répertoire où vous vous trouvez (celui où vous allez exécuter ampy).
  
'''Be aware the run command is not a shell or tool that allows you to send input from your computer to the board!''' If you need to send input you'll want to connect to the board and [[FEATHER-CHARGER-MICROPYTHON-SERIAL-REPL|use its serial REPL]].
+
'''Attention: la commande {{fname|run}} n'est pas un shell ou un outil qui permet d'envoyer des entrées (données) depuis l'ordinateur vers la carte!''' Si vous avez besoin d'envoyer des entrées/données vers la carte alors vous aurez besoin de connecter la carte et [[FEATHER-CHARGER-MICROPYTHON-SERIAL-REPL|d'utiliser le REPL Série]].
  
By default the run command will wait for the script to finish running on the board before printing its output. In some cases you don't want this behavior--for example if your script has a main or infinite loop that never returns you don't want ampy to sit around waiting forever for it to finish.  In this case add the '''--no-output''' option to the run command. This flag tells ampy not to wait for any output and instead just start running the script and return.
+
Par défaut la commande {{fname|run}} attendra la fin d'exécution du script sur la carte avant d'afficher la sortie. Parfois, il arrive que vous n'ayez pas besoin de cette fonctionnalité --par exemple, lorsque votre script principal est une boucle infinie qui ne se termine jamais, auquel cas ampy attend indéfiniment la fin du script! Dans ce cas, ajoutez l'option '''--no-output''' à la commande {{fname|run}}. Ce flag/drapeau informe ampy qu'il ne doit pas attendre de sortie de la part du script et n'attend donc pas la fin d'exécution de celui-ci. Ampy exécute le script et rend la main immédiatement au terminal.
  
For example modify the '''test.py''' script so that it counts numbers forever in an infinite loop:
+
Par exemple: modifiez le script '''test.py''' de façon à ce qu'il fasse un comptage à l'intérieur d'une boucle infinie:
  
 
  <syntaxhighlight lang="python">
 
  <syntaxhighlight lang="python">
Ligne 44 : Ligne 45 :
 
     print(i)
 
     print(i)
 
     i += 1
 
     i += 1
     time.sleep(1.0)  # Delay for 1 second.
+
     time.sleep(1.0)  # attendre une seconde.
 
  </syntaxhighlight>
 
  </syntaxhighlight>
  
Then run it with the '''--no-output''' option and notice it immediately returns:
+
Exécutez ensuite le script sur votre carte avec l'option '''--no-output'''. Comme vous pourrez le constater, ampy rend immédiatement la main au système d'exploitation:
  
 
  <nowiki>ampy --port /serial/port run --no-output test.py</nowiki>
 
  <nowiki>ampy --port /serial/port run --no-output test.py</nowiki>
  
However open the board's serial REPL and watch it count numbers every second!
+
Vous pouvez néanmoins ouvrir une session REPL Série et voir le compte augmenter chaque seconde!
  
 
{{ADFImage|FEATHER-CHARGER-FICHIER-MICROPYTHON-RUNCODE-01.png}}
 
{{ADFImage|FEATHER-CHARGER-FICHIER-MICROPYTHON-RUNCODE-01.png}}
  
Remember the program is still running, ampy just didn't wait for it to stop!
+
Gardez à l'esprit que le programme est toujours en cours d'exécution, ampy n'attend simplement pas qu'il se termine!
 +
 
 +
== Comparaison avec Arduino ==
  
The '''--no-output''' option is great for writing scripts that are like an Arduino sketch. In Arduino you have an explicit '''setup''' and '''loop''' function which you fill in with code that runs once (in '''setup''') and code that runs forever (in '''loop'''). MicroPython doesn't have exactly the same concept, but you can create it yourself in your own Python scripts! 
+
L'option '''--no-output''' est particulièrement approprié lorsque vous exécutez des scripts qui ressemblent au fonctionnement des croquis/sketch Arduino. Dans le monde Arduino, vous avez les fonctions '''setup''' et '''loop''' explicites qu'il faut remplir avec du code qui est exécuté une fois pour (dans '''setup''') et duc code exécuté en boucle (dans '''loop''').  
  
In fact look at the '''test.py''' above and notice all the code before the '''while True''' loop is like the '''setup''' function from an Arduino sketch, it's executed just once at the start of the program. Then the code inside the '''while True''' loop is like the '''loop''' function from Arduino, this code runs repeatedly as fast as possible. To make it a little more clear here's the '''test.py''' with comments that show where the setup code goes and where the loop code goes:
+
MicroPython ne dispose pas de ce concept mais vous pouvez facilement le re-créer dans vos propres scripts Python! 
 +
 
 +
Si vous jetez un coup d'oeil au script '''test.py''' ci-dessus, vous noterez que:
 +
* tout le code '''situé avant''' l'instruction {{fname|while True}} fonctionne comme la fonction {{fname|setup()}} d'Arduino (exécuté une seule fois au démarrage du programme/script).
 +
* tout le code '''situé à l'intérieur''' de l'instruction {{fname|while True}}  fonctionne comme la fonction {{fname|loop()}} d'Arduino (le contenu est exécuté encore et encore et encore... à l'infini)
 +
 
 +
Pour rendre cela un peu plus clair, voici le fichier '''test.py''' avec des commentaire qui indique où se trouve la code correspondant à {{fname|setup()}} et le code correspondant à {{fname|loop()}}:
  
 
  <syntaxhighlight lang="python">
 
  <syntaxhighlight lang="python">
 
###########################################################################
 
###########################################################################
# Setup code goes below, this is called once at the start of the program: #
+
# Code setup() début ci-dessous, il est appelé au démarrage du programme  #
 
###########################################################################
 
###########################################################################
 
import time
 
import time
Ligne 71 : Ligne 80 :
 
while True:
 
while True:
 
     ###################################################################
 
     ###################################################################
     # Loop code goes inside the loop here, this is called repeatedly: #
+
     # Code loop() inclus dans la boucle infinie.                      #
 +
    # Cette section de code est appelé répétitivement                #
 
     ###################################################################
 
     ###################################################################
 
     print(i)
 
     print(i)
Ligne 78 : Ligne 88 :
 
  </syntaxhighlight>
 
  </syntaxhighlight>
  
If you're coming to MicroPython with a background in Arduino, consider writing your MicroPython scripts in a similar style as the above. Put your setup code first and then a main loop that runs foreverJust be sure you add the '''--no-output''' option when running with ampy so it knows not to wait for the script to finish!
+
Si vous découvrez MicroPython alors que vous possédez déjà un savoir faire Arduino alors vous trouverez cette approche pratique pour garder la même façon de travailler qu'avec vos Arduino.
 +
 
 +
Placez votre code d'initialisation (setup) en premier puis écrivez votre code répétitif dans une boucle infinie {{fname|while True}}.   
 +
 
 +
Ajoutez simplement l'option '''--no-output''' à l'instruction ampy pour que ampy n'attende pas la fin de l'exécution de votre script!
  
 
{{FEATHER-CHARGER-FICHIER-MICROPYTHON-TRAILER}}
 
{{FEATHER-CHARGER-FICHIER-MICROPYTHON-TRAILER}}

Version actuelle datée du 13 novembre 2016 à 11:43


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.

Introduction

En utilisant ampy, vous pouvez prendre du code python écrit sur votre odrinateur et l'exécuter sur sur un carte MicroPython connectée en USB-Série. Cela permet d'explorer MicroPython en utilisant un flux de traitement assez simple. Vous pouvez écrire vitre code sur votre ordinateur, dans votre éditeur de texte favoris, puis utiliser ampy pour l'exécuter sur la carte!

Exécuter (run)

Utilisez la commande run (exécuter) et spécifiez simplement le chemin du fichier Python présent sur votre ordinateur, attendez la fin de son exécution, voyez les sorties (instruction print')) affichés par le programme.

Créez le fichier d'exemple test.py sur votre ordinateur et copiez/collez y le code Pyhton suivant:

print('Hello world! I can count to 10:')
for i in range(1,11):
    print(i)

Ouvrez un terminal et placez vous dans le même répertoire que votre fichier test.py. Exécutez ensuite la commande ampy suivante pour exécuter le script sur votre carte MicroPython connectée en USB-Séerie:

ampy --port /port/serie run test.py

/port/serie est le chemin (ou nom) du port série correspondant à votre carte MicroPython connectée sur le port USB de votre ordinateur. Sur une machine Lunix (ex: Linux Mint, dérivé d'Ubuntu) cela se présente sous la forme /dev/ttyUSB0

Après exécution de la commande, vous devriez voir les sortie du scripts sur votre moniteur:

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

Si vous recevez une erreur stipulant que ampy n'a pas reçu la réponse attendue (failed to receive the expected response) c'est probablement parce que la sortie des message de débogage n'a pas été désactivé sur carte. Voyez le lien mentionné en haut de page! Vérifiez également que votre carte est bien connéectée sur votre ordinateur et que vous avez spécifié correctement le port série de la carte. Finalement, assurez vous également que le fichier test.py se trouve bien dans le répertoire où vous vous trouvez (celui où vous allez exécuter ampy).

Attention: la commande run n'est pas un shell ou un outil qui permet d'envoyer des entrées (données) depuis l'ordinateur vers la carte! Si vous avez besoin d'envoyer des entrées/données vers la carte alors vous aurez besoin de connecter la carte et d'utiliser le REPL Série.

Par défaut la commande run attendra la fin d'exécution du script sur la carte avant d'afficher la sortie. Parfois, il arrive que vous n'ayez pas besoin de cette fonctionnalité --par exemple, lorsque votre script principal est une boucle infinie qui ne se termine jamais, auquel cas ampy attend indéfiniment la fin du script! Dans ce cas, ajoutez l'option --no-output à la commande run. Ce flag/drapeau informe ampy qu'il ne doit pas attendre de sortie de la part du script et n'attend donc pas la fin d'exécution de celui-ci. Ampy exécute le script et rend la main immédiatement au terminal.

Par exemple: modifiez le script test.py de façon à ce qu'il fasse un comptage à l'intérieur d'une boucle infinie:

import time
print('Hello world! I can count:')
i = 1
while True:
    print(i)
    i += 1
    time.sleep(1.0)  # attendre une seconde.

Exécutez ensuite le script sur votre carte avec l'option --no-output. Comme vous pourrez le constater, ampy rend immédiatement la main au système d'exploitation:

ampy --port /serial/port run --no-output test.py

Vous pouvez néanmoins ouvrir une session REPL Série et voir le compte augmenter chaque seconde!

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

Gardez à l'esprit que le programme est toujours en cours d'exécution, ampy n'attend simplement pas qu'il se termine!

Comparaison avec Arduino

L'option --no-output est particulièrement approprié lorsque vous exécutez des scripts qui ressemblent au fonctionnement des croquis/sketch Arduino. Dans le monde Arduino, vous avez les fonctions setup et loop explicites qu'il faut remplir avec du code qui est exécuté une fois pour (dans setup) et duc code exécuté en boucle (dans loop).

MicroPython ne dispose pas de ce concept mais vous pouvez facilement le re-créer dans vos propres scripts Python!

Si vous jetez un coup d'oeil au script test.py ci-dessus, vous noterez que:

  • tout le code situé avant l'instruction while True fonctionne comme la fonction setup() d'Arduino (exécuté une seule fois au démarrage du programme/script).
  • tout le code situé à l'intérieur de l'instruction while True fonctionne comme la fonction loop() d'Arduino (le contenu est exécuté encore et encore et encore... à l'infini)

Pour rendre cela un peu plus clair, voici le fichier test.py avec des commentaire qui indique où se trouve la code correspondant à setup() et le code correspondant à loop():

###########################################################################
# Code setup() début ci-dessous, il est appelé au démarrage du programme  #
###########################################################################
import time
print('Hello world! I can count:')
i = 1

while True:
    ###################################################################
    # Code loop() inclus dans la boucle infinie.                      #
    # Cette section de code est appelé répétitivement                 #
    ###################################################################
    print(i)
    i += 1
    time.sleep(1.0)  # Delay for 1 second.

Si vous découvrez MicroPython alors que vous possédez déjà un savoir faire Arduino alors vous trouverez cette approche pratique pour garder la même façon de travailler qu'avec vos Arduino.

Placez votre code d'initialisation (setup) en premier puis écrivez votre code répétitif dans une boucle infinie while True.

Ajoutez simplement l'option --no-output à l'instruction ampy pour que ampy n'attende pas la fin de l'exécution de votre script!


Source: MicroPython Basics: Load Files & Run Code
Créé par Tony DiCola pour AdaFruit Industries.

Traduit par Meurisse D. pour MCHobby

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.

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com