Modifications

Sauter à la navigation Sauter à la recherche
1 960 octets ajoutés ,  28 octobre 2012 à 13:43
Ligne 116 : Ligne 116 :     
xxx
 
xxx
 +
 +
== Script Python - déparasitage logiciel ==
 +
Voici le script Python incluant le déparasitage logiciel du bouton.<br />
 +
En plus de faire le déparasitage, il stocke également l'état du bouton dans la variable '''BUTTON1_STATE''' en faisant en sorte qu'il soit le vrai reflet de l'état du bouton.<br />
 +
Lorsque le bouton est enfoncé, BUTTON1_STATE est True, lorsque le bouton est relâché BUTTON1_STATE est False.
 +
 +
  <nowiki>#!/usr/bin/env python
 +
# -*- coding: latin-1 -*-
 +
 +
import RPi.GPIO as GPIO, time
 +
 +
GPIO.setmode(GPIO.BCM)
 +
GREEN_LED = 18
 +
RED_LED = 23
 +
 +
BUTTON1 = 24
 +
# Dernier état connu du bouton
 +
# Par defaut: le bouton n'est pas considéré comme activé
 +
BUTTON1_STATE = False
 +
 +
GPIO.setup(GREEN_LED, GPIO.OUT)
 +
GPIO.setup(RED_LED, GPIO.OUT)
 +
GPIO.setup(BUTTON1, GPIO.IN)
 +
 +
while True:
 +
        # -- Lecture avec déparasitage logiciel
 +
        # Si le bouton est pressé, la broche GPIO est raccordée
 +
        #  à la masse. Le GPIO est donc à LOW (bas).
 +
        #  Bouton pressé -> Input = LOW = False       
 +
        gpioRead1 = GPIO.input( BUTTON1 )
 +
        state1    = not(gpioRead1)
 +
        # SI changer d'etat ALORS refaire lecture de déparasitage
 +
        if( state1 != BUTTON1_STATE ):
 +
                # - attendre 10ms
 +
                time.sleep( 10 / 1000 )
 +
                # faire une 2ieme lecture
 +
                gpioRead2 = GPIO.input( BUTTON1 )
 +
                state2 = not(gpioRead2)
 +
                # SI les deux lectures concordent
 +
                # ALORS memoriser le nouvel etat du bouton
 +
                if( state1 == state2 ):
 +
                        BUTTON1_STATE = state2
 +
 +
 +
        # -- Programme principal --
 +
        # SI le bouton est pressé
 +
        # ALORS allumer la LED verte 
 +
        if( BUTTON1_STATE == True ):
 +
                GPIO.output(GREEN_LED, False)
 +
                GPIO.output(RED_LED, True)
 +
        else:
 +
                GPIO.output(GREEN_LED, True)
 +
                GPIO.output(RED_LED, False)
 +
</nowiki>
29 836

modifications

Menu de navigation