Différences entre versions de « MicroPython-Hack-8LEDS »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 112 : Ligne 112 :
 
Dans cette version du programme, nous allons:
 
Dans cette version du programme, nous allons:
 
* Nous commençons par créer une liste {{fname|names}} qui contient les noms des broches utilisées sur notre PyBoard.
 
* Nous commençons par créer une liste {{fname|names}} qui contient les noms des broches utilisées sur notre PyBoard.
* Utiliser une boucle {{fname|for}} pour créer une liste {{fname|pins}} contenant des objets {{fname|Pin}} (permettant de manipuler l'état de la broche correspondante).
+
* Nous créons ensuite une liste {{fname|pins}} vide pour l'instant.
 +
* Ensuite, nous utilisons une boucle {{fname|for}} pour créer des objets {{fname|Pin}}, un objet par broche. Ces objets {{fname|Pin}} sont ajoutés à la liste {{fname|pins}}.
 
* Utiliser une autre boucle {{fname|for}} pour manipuler les objets {{Pin}} stocké dans la liste {{pins}}. Il sera plus facile de manipuler les les LEDs dans la boucle {{fname|while True}}  
 
* Utiliser une autre boucle {{fname|for}} pour manipuler les objets {{Pin}} stocké dans la liste {{pins}}. Il sera plus facile de manipuler les les LEDs dans la boucle {{fname|while True}}  
  

Version du 5 octobre 2015 à 08:02


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.

Ce que nous faisons

Jusque là, nous avons fait clignoter une LED, il est maintenant temps d'augmenter les enjeux. Connectons donc huit LEDs. Nous allons aussi avoir l'opportunité de tirer le maximum de notre Pyboard en créant différentes séquences lumineuses. Ce circuit est aussi un bon point de départ pour commencer à faire vos expériences en écrivant vos propres programmes et pour essayer de comprendre comment fonctionne votre PyBoard.

En même temps que contrôler les LEDs, nous allons aussi nous intéresser à quelques méthodes de programmation rudimentaires permettant de garder des programmes petites tailles. La boucle for est utilisée lorsque qu'il est nécessaire d'exécuter un morceau de code plusieurs fois.

Une liste leds sera utilisée pour gérer les variables plus facilement (cette liste représentera une liste de variables).

Matériel nécessaire

ARDX-R1K.png

Résistance de 1 KOhms (brun-noir-rouge)
x8

ARDX-LED-verte.png

LEDs (ou DELs)
x8

 

Schéma

Hack-8LEDs-schema.png


Montage

Fichier:Hack-8LEDs-montage.jpg

Le code

Voici le code permettant de tester votre montage.

Il s'agit d'une version très simplifiée du programme de test

# créer les objets Pin configuré en sortie (OUT_PP)
x1 = pyb.Pin( 'X1', pyb.Pin.OUT_PP ) 
x2 = pyb.Pin( 'X2', pyb.Pin.OUT_PP ) 
x3 = pyb.Pin( 'X3', pyb.Pin.OUT_PP ) 
x4 = pyb.Pin( 'X4', pyb.Pin.OUT_PP ) 
x5 = pyb.Pin( 'X5', pyb.Pin.OUT_PP ) 
x6 = pyb.Pin( 'X6', pyb.Pin.OUT_PP ) 
x7 = pyb.Pin( 'X7', pyb.Pin.OUT_PP ) 
x8 = pyb.Pin( 'X8', pyb.Pin.OUT_PP ) 

# boucle infinie
while True:
  # allumer les LEDs en chenillard
  x1.high()
  pyb.delay(100)
  x1.low()
  pyb.delay(100)
  x2.high()
  pyb.delay(100)
  x2.low()
  pyb.delay(100)
  x3.high()
  pyb.delay(100)
  x3.low()
  pyb.delay(100)
  x4.high()
  pyb.delay(100)
  x4.low()
  pyb.delay(100)
  x5.high()
  pyb.delay(100)
  x5.low()
  pyb.delay(100)
  x6.high()
  pyb.delay(100)
  x6.low()
  pyb.delay(100)
  x7.high()
  pyb.delay(100)
  x7.low()
  pyb.delay(100)
  x8.high()
  pyb.delay(100)
  x8.low()
  pyb.delay(100)

Nous commençons par créer un objet Pin par sortie et nous en gardons la référence dans une variable.

Ainsi, la broche nommée 'X1' pourra être manipulée avec l'objet x1.

Nous verrons par la suite dans la section "faire encore mieux", que nous pouvons grandement améliorer ce code pour en faciliter la maintenance.

Pour l'instant, dans cette première version du programme, nous allons contrôler directement chacune des LEDs.

Faire encore mieux

Utiliser les boucles FOR

Dans cette version du programme, nous allons:

  • Nous commençons par créer une liste names qui contient les noms des broches utilisées sur notre PyBoard.
  • Nous créons ensuite une liste pins vide pour l'instant.
  • Ensuite, nous utilisons une boucle for pour créer des objets Pin, un objet par broche. Ces objets Pin sont ajoutés à la liste pins.
  • Utiliser une autre boucle for pour manipuler les objets Modèle:Pin stocké dans la liste Modèle:Pins. Il sera plus facile de manipuler les les LEDs dans la boucle while True

Ces optimisations vont singulièrement raccourcir le programme.

# declaration des broches
names = ['X1','X2', 'X3', 'X4', 'X5', 'X6', 'X7', 'X8' ]

# créer les objets Pin configuré en sortie (OUT_PP)
pins = []
for name in names:
  pins.append( pyb.Pin( name, pyb.Pin.OUT_PP ) )

while True:
  for pin in pins:
     pin.high()
     pyb.delay(100)
     pin.low()
     pyb.delay(100)

La deuxième boucle for allume et éteint chacune des LEDs à tour de rôle.

Utiliser une Comprehension List

La Comprehension List est une structure/syntaxe super-puissante en Python. Un peu déroutante au début, c'est un allier d'une grande puissance.

Dans cette version du code, la création de la liste pins est assuré par une compréhension list.... en une seule ligne de code.

# declaration des broches
names = ['X1','X2', 'X3', 'X4', 'X5', 'X6', 'X7', 'X8' ]
# créer les objets p en sortie
pins = [ pyb.Pin( name, pyb.Pin.OUT_PP ) for name in names ]
while True:
  for pin in pins:
     pin.high()
     pyb.delay(100)
     pin.low()
     pyb.delay(100)
   



Source: Micro Python Intro écrit par/written by Damien P.George

Traduit par Meurisse D. pour MCHobby.be - Translated by Meurisse D. for MCHobby.be

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 de micropython.org - Translated with the authorisation of micropython.org