Modifications

Sauter à la navigation Sauter à la recherche
3 155 octets ajoutés ,  7 mars 2025 à 20:16
Ligne 1 : Ligne 1 :  
{{Micropython-neotrellis-NAV}}
 
{{Micropython-neotrellis-NAV}}
   −
== Exemple simple ==
+
== Exemple key_pressed ==
   −
L'exemple ci-dessus propose de lier l'action du bouton #5 (2ieme ligne, 1iere colonne) pour activer/désactiver une broche du microcontrôleur.
+
L'exemple [key_pressed.py](https://github.com/mchobby/micropython-neotrellis/blob/main/examples/key_pressed.py) ci-dessus propose de lier l'action du bouton #5 (2ieme ligne, 1iere colonne) pour activer/désactiver une broche du microcontrôleur.
 +
 
 +
Pour rappel, sur la carte NeoTrellis les boutons sont numéroté de 1 à 16 mais le code Python utilise un index de 0 à 15. Le bouton numéro #5 se trouve donc à l'index numéro 4.
    
Le broche commandée sera GP25 qui est raccordée sur la LED utilisateur du Pico (à côté de la fiche micro-USB). En modifiant la broche de sortie (ex: GP16) il possible de commander un module relais (ou autre périphériques).
 
Le broche commandée sera GP25 qui est raccordée sur la LED utilisateur du Pico (à côté de la fiche micro-USB). En modifiant la broche de sortie (ex: GP16) il possible de commander un module relais (ou autre périphériques).
Ligne 42 : Ligne 44 :  
Initialiser la broche en sortie (GP25=LED utilisateur), donc niveau bas.
 
Initialiser la broche en sortie (GP25=LED utilisateur), donc niveau bas.
   −
Indiquer que la broches est au niveau bas en passant la LED du bouton 5 en ROUGE (en Python, le bouton 5 se trouve à l'index 4 puisque la numérotation démarre à zéro).
+
Indiquer que la broches est au niveau bas en passant la LED du bouton #5 en ROUGE (donc à l'index 4 puisque la numérotation démarre à zéro).
    
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
Ligne 49 : Ligne 51 :  
</syntaxhighlight>
 
</syntaxhighlight>
   −
Définition d'une fonction de rappel {{fname|toggle_relais()}} qui sera appelée lorsque le bouton 5 sera pressé.
+
Définition d'une fonction de rappel {{fname|toggle_relais()}} qui sera appelée lorsque le bouton #5 sera pressé.
    
Les fonctions de rappel sont également dites "''callback''" en anglais.
 
Les fonctions de rappel sont également dites "''callback''" en anglais.
Ligne 68 : Ligne 70 :  
</syntaxhighlight>
 
</syntaxhighlight>
   −
Il faut maintenant associer le bouton 5 (index no 4) à la fonction de rappel.
+
Il faut maintenant associer le bouton #5 (index n° 4) à la fonction de rappel.
    
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
Ligne 89 : Ligne 91 :  
     trellis.sync()
 
     trellis.sync()
 
     # Intervalle minimum de 17ms entre deux requêtes sur NeoTrellis.
 
     # Intervalle minimum de 17ms entre deux requêtes sur NeoTrellis.
 +
    time.sleep(0.02)
 +
</syntaxhighlight>
 +
 +
== Exemple simpletest ==
 +
Le second exemple [simpletest.py](https://github.com/mchobby/micropython-neotrellis/blob/main/examples/simpletest.py) est une adaptation direct de l'exemple fournit par Adafruit Industrie (pour circuitpython).
 +
 +
Cet exemple allume le bouton NeoTrellis pendant que l'utilisateur le maintient enfoncé.
 +
 +
Cela commence par la création de l'instance du bus I2C et du NeoTrellis.
 +
 +
Le script se poursuit par la définition de couleurs
 +
<syntaxhighlight lang="python">
 +
import time
 +
from machine import I2C, Pin
 +
from neotrellis import NeoTrellis
 +
 +
i2c = I2C( 1, sda=Pin.board.GP6, scl=Pin.board.GP7 )
 +
trellis = NeoTrellis(i2c)
 +
trellis.brightness = 0.5 # Luminosité entre 0 et 1.0
 +
 +
# définition de quelques couleurs
 +
OFF = (0, 0, 0)        # Noir = éteind
 +
RED = (255, 0, 0)      # Rouge
 +
YELLOW = (255, 150, 0) # Jaune
 +
GREEN = (0, 255, 0)    # Vert
 +
CYAN = (0, 255, 255)  # Cyan
 +
BLUE = (0, 0, 255)    # Bleu
 +
PURPLE = (180, 0, 255) # Pourpre
 +
</syntaxhighlight>
 +
 +
Définition de la fonction de rappel appelée lorsqu'un bouton est pressé.
 +
 +
La fonction est la même pour tous les boutons du NeoTrellis, il faudra donc exploiter les propriétés de l'objet {{fname|event}} passé en paramètre de la fonction de rappel.
 +
* '''event.edge''' : indique l'évènement qui a déclenché le fonction de rappel ( NeoTrellis.EDGE_FALLING ou NeoTrellis.EDGE_RISING).
 +
* '''event.number''' : indique l'index du bouton ayant déclenché l'événement.
 +
 +
<syntaxhighlight lang="python">
 +
def blink(event):
 +
    # Allumer la LED lorsque le bouton est enfoncé
 +
    # (donc sur flan montant).
 +
    if event.edge == NeoTrellis.EDGE_RISING:
 +
        trellis.pixels[event.number] = CYAN
 +
    # Eteindre la LED lorsque le bouton est relâché
 +
    # (donc sur un flan descendant)
 +
    elif event.edge == NeoTrellis.EDGE_FALLING:
 +
        trellis.pixels[event.number] = OFF
 +
</syntaxhighlight>
 +
 +
Le code ci-dessous active la détection des flan montant et descendant sur chacune des 16 boutons.
 +
 +
Il effectue également l'affection de la fonction de rappel {{fname|blink()}} sur chacun des boutons.
 +
 +
Les boutons sont éclairés en pourpre juste après chaque affectation.
 +
 +
<syntaxhighlight lang="python">
 +
for i in range(16): # de 0 à 15
 +
    trellis.activate_key(i, NeoTrellis.EDGE_RISING)
 +
    trellis.activate_key(i, NeoTrellis.EDGE_FALLING)
 +
    trellis.callbacks[i] = blink
 +
    trellis.pixels[i] = PURPLE
 +
    time.sleep(0.05)
 +
</syntaxhighlight>
 +
 +
Eteindre tous les LEDs
 +
 +
<syntaxhighlight lang="python">
 +
for i in range(16):
 +
    trellis.pixels[i] = OFF
 +
    time.sleep(0.05)
 +
</syntaxhighlight>
 +
 +
Comme dans l'exemple précédent, le corps principal du script fait un appel régulier à {{fname|trellis.sync()}} pour rapatrier les évènements depuis la carte NeoTrellis et appeler les fonctions de rappel.
 +
 +
<syntaxhighlight lang="python">
 +
while True:
 +
    trellis.sync()
 
     time.sleep(0.02)
 
     time.sleep(0.02)
 
</syntaxhighlight>
 
</syntaxhighlight>
    
{{Micropython-neotrellis-TRAILER}}
 
{{Micropython-neotrellis-TRAILER}}
32 920

modifications

Menu de navigation