| 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}} |