Ligne 55 : |
Ligne 55 : |
| Sur les Arduino, nous faisons du pooling dans le boucle principale. Les entrées sont lues, puis le soft attend 10ms et relis l'entrée. Si l'état est identique dans les deux cas, l'on considère cet état comme le nouvel état de l'entrée. | | Sur les Arduino, nous faisons du pooling dans le boucle principale. Les entrées sont lues, puis le soft attend 10ms et relis l'entrée. Si l'état est identique dans les deux cas, l'on considère cet état comme le nouvel état de l'entrée. |
| | | |
− | En reprenant le montage précedent, nous allons créer un bouton à deux états qui contrôle la LED(2) (presser une fois pour allumer, une autre fois pour éteindre). | + | En reprenant le montage précédent, nous allons créer un bouton à deux états qui contrôle la LED(2) (presser une fois pour allumer, une autre fois pour éteindre). |
| | | |
| [[Fichier:MicroPython-Hack-deboucing.jpg|480px]] | | [[Fichier:MicroPython-Hack-deboucing.jpg|480px]] |
| | | |
| + | Le programme suivant faut la peine d'être étudié attentivement, son fonctionnement pourra se montrer utile dans bien des situations. |
| | | |
| + | <nowiki># main.py -- put your code here! |
| | | |
| + | import pyb |
| + | pin_x1 = pyb.Pin('X1', pyb.Pin.IN, pyb.Pin.PULL_DOWN) |
| + | current_state = 0 # dernier état connu de la broche X1 |
| + | bascule = 0 # Variable qui change d etat a chaque fois que l'on pousse le bouton |
| + | |
| + | while True: |
| + | # lecture des entrees |
| + | val1 = pin_x1.value() |
| + | |
| + | # déparasitage logiciel |
| + | pyb.delay(10) # Attendre 10 millisecondes |
| + | |
| + | # relecture des entrées |
| + | val2 = pin_x1.value() |
| + | |
| + | # Si val1=Val2 --> Etat Stable |
| + | if val1 == val2: |
| + | # Si valeur lue différente de l'état connu |
| + | if val1 != current_state: |
| + | # On memorise l'etat du bouton comme etat connu |
| + | current_state = val1 |
| + | # Bien entendu, le programme ne doit agir que lorsque le bouton |
| + | # est enfoncé (par lorsqu'il est relaché) |
| + | if val1 == 1: |
| + | # On inverse l'état de la "bascule" |
| + | bascule = 0 if bascule == 1 else 1 |
| + | print( 'bascule after %i' % bascule ) |
| + | # Apliquer l'etat de la bascule sur la LED(2) |
| + | if bascule == 1: |
| + | pyb.LED(2).on() |
| + | else: |
| + | pyb.LED(2).off() |
| + | |
| + | # exécuter le reste du programme </nowiki> |
| | | |
| {{MicroPython-Hack-deparasitage-TRAILER}} | | {{MicroPython-Hack-deparasitage-TRAILER}} |