Modifications

Sauter à la navigation Sauter à la recherche
3 310 octets ajoutés ,  16 mars 2019 à 21:44
Ligne 83 : Ligne 83 :     
== Utiliser ==
 
== Utiliser ==
 +
Dans l'exemple suivant, les LEDs branchées sur les sorties 0 et 1 du MCP23017 clignoterons en alternance.
    
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
xxx
+
from time import sleep
 +
from machine import I2C, Pin
 +
from mcp230xx import MCP23017
 +
 
 +
# Création bus I2C et MCP23017
 +
i2c = I2C( sda=Pin(4), scl=Pin(5), freq=20000 )
 +
mcp = MCP23017( i2c=i2c )
 +
 
 +
# Configurer les broches 0 et 1 en sortie
 +
mcp.setup( 0, Pin.OUT )
 +
mcp.setup( 1, Pin.OUT )
 +
 
 +
for i in range( 10 ):
 +
    # Activer sortie 0
 +
    mcp.output( 0, True )
 +
    sleep( 0.5 )
 +
    mcp.output( 1, True )
 +
    sleep( 0.5 )
 +
    # Désactiver sortie 1
 +
    mcp.output( 0, False )
 +
    sleep( 0.5 )
 +
    mcp.output( 1, False )
 +
    sleep( 0.5 )
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
L'exemple suivant affiche le message "Press!" lorsque le bouton branché sur l'entrée 3 est pressé.
 +
 +
Comme la résistance Pull-Up sur l'entrée 3 est activée :
 +
* L'entrée 3 est au niveau BAS lorsque le bouton est pressé!
 +
* L'entrée 3 est au niveau HAUT lorsque l'on ne touche pas le bouton.
 +
 +
Pour lire l'état de l'entrée 3, il faut utiliser {{fname|mcp.input(3)}} .
 +
 +
<syntaxhighlight lang="python">
 +
from time import sleep,time
 +
from machine import I2C, Pin
 +
from mcp230xx import MCP23017
 +
 +
# Création bus I2C et MCP23017
 +
i2c = I2C( sda=Pin(4), scl=Pin(5), freq=20000 )
 +
mcp = MCP23017( i2c=i2c )
 +
 +
mcp.setup( 3, Pin.IN ) # broche 3 en entrée
 +
mcp.pullup( 3, True )  # Activer la résistance pull-up sur entrée 3
 +
 +
Print( "Appuyer sur bouton" )
 +
start = time()
 +
while (time()-start) < 20: # pendant 20 sec max
 +
    # mcp.input(3) retourne état de la broche
 +
    print( '%s : etat = %s' % (time(), '...' if mcp.input(3) else 'Press!') )
 +
    sleep( 0.5 )
 +
</syntaxhighlight>
 +
 +
Il est également possible de modifier l'état de plusieurs broches en une seule opération en utilisant un dictionnaire {{fname|  { 0 : True, 1 : False } }}
 +
 +
<syntaxhighlight lang="python">
 +
from machine import I2C, Pin
 +
from mcp230xx import MCP23017
 +
 +
# Création bus I2C et MCP23017
 +
i2c = I2C( sda=Pin(4), scl=Pin(5), freq=20000 )
 +
mcp = MCP23017( i2c=i2c )
 +
 +
# controle de quelques broches en sortie
 +
pins = [10, 11, 12, 13, 14, 15]
 +
valeurs = {}
 +
for pin_num in pins:
 +
    mcp.setup( pin_num, Pin.OUT )
 +
    valeurs[pin_num] = True
 +
# activer toutes les broches en une seule opération
 +
mcp.output_pins( valeurs )
 +
</syntaxhighlight>
 +
 +
De même, il est possible de lire l'état de plusieurs broches avec un seul appel
 +
 +
<syntaxhighlight lang="python">
 +
from time import sleep
 +
from machine import I2C, Pin
 +
from mcp230xx import MCP23017
 +
 +
# Création bus I2C et MCP23017
 +
i2c = I2C( sda=Pin(4), scl=Pin(5), freq=20000 )
 +
mcp = MCP23017( i2c=i2c )
 +
 +
# Surveille plusieurs broches d'entrée et affiche les différentes valeurs grâce à {{fname|mcp.input_pins(pins_list)}}
 +
pins = [3,4,5,6]
 +
for pin_num in pins:
 +
    mcp.setup(pin_num, Pin.IN)
 +
    mcp.pullup(pin_num, True)
 +
while True:
 +
    print( mcp.input_pins(pins) )
 +
    sleep( 1 )
 +
</syntaxhighlight>
 +
 +
Durant l'exécution du script, les messages suivants apparaissent dans la console. Chaque broche mentionnée lors de l'appel de {{fname|mcp.input_pins()}} retourne une valeur {{fname|True}} ou {{fname|False}} en fonction de l'état de la broche.
 +
 +
<nowiki>[True, True, True, True]
 +
[True, True, True, True]
 +
[True, True, True, True]
 +
[False, True, True, True]
 +
[False, True, True, True]
 +
[False, True, True, True]
 +
[False, True, True, True]
 +
[True, True, True, True]</nowiki>
    
== Où acheter ==
 
== Où acheter ==
29 918

modifications

Menu de navigation