Différences entre versions de « Rasp-Hack-MCP230XX-Librairie »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 63 : Ligne 63 :
  
 
Les broches d'adresses peuvent être soit:
 
Les broches d'adresses peuvent être soit:
* '''Activé''': dont placée à l'état ''HAUT'', dit ''HIGH'' en raccordant la broche sur la tension d'alimentation du MCP23017. Si votre MCP est alimenté en +5V, ce sera +5V.
+
* '''Activé''': dont la broche est placée à l'état ''HAUT'', dit ''HIGH'' en raccordant la broche sur la tension d'alimentation du MCP23017.<br />Si votre MCP est alimenté en +5V, ce sera +5V. S'il est alimenté en 3.3v, ce sera 3.3v.
* '''Désactivé''': dont placée à l'état ''BAS'', dit ''LOW'' en raccordant la broche sur la masse/GND.
+
* '''Désactivé''': dont la broche est placée à l'état ''BAS'', dit ''LOW'' en raccordant la broche sur la masse/GND.
  
 
En fonction de la combinaison de raccordement du MCP23017, vous obtiendrez une nouvelle adresse sur le BUS I2C.
 
En fonction de la combinaison de raccordement du MCP23017, vous obtiendrez une nouvelle adresse sur le BUS I2C.

Version du 29 mars 2014 à 18:21


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Point de départ

Never one to leave you with just a breakout board or an IC and a goodbye, Adafruit provides a library for the MCP23008 and MCP23017 in our dépôt GitHub d'AdaFruit pour Python. The easiest way to use it is with our convenient WebIDE, which will automatically point to the Adafruit github repository.

Once you've opened up the WebIDE in the browser, you simply need to click in the left-hand navigation on the following folders and filenames:

  • Adafruit-Raspberry-Pi-Python-Code
  • Adafruit_MCP230xx
  • Adafruit_MCP230xx.py

This should give you something similar to the following:

This should give you something similar to the following:

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

# Use busnum = 0 for older Raspberry Pi's (256MB)
mcp = Adafruit_MCP230XX(busnum = 0, address = 0x20, num_gpios = 16)
# Use busnum = 1 for new Raspberry Pi's (512MB with mounting holes)
# mcp = Adafruit_MCP230XX(busnum = 1, address = 0x20, num_gpios = 16)

# Set pins 0, 1 and 2 to output (you can set pins 0..15 this way)
mcp.config(0, OUTPUT)
mcp.config(1, OUTPUT)
mcp.config(2, OUTPUT)

# Set pin 3 to input with the pullup resistor enabled
mcp.pullup(3, 1)
# Read pin 3 and display the results
print "%d: %x" % (3, mcp.input(3) >> 3)

# Python speed test on output 0 toggling at max speed
while (True):
  mcp.output(0, 1)  # Pin 0 High
  mcp.output(0, 0)  # Pin 1 Low

This file contains both the base MCP230xx class that makes it easy to use the chip, along with a very simple demo that will toggle a single pin as fast as possible. The example code shows how you can set pins to both input and output:

Créer une instance de Adafruit_MCP230xx

Pour créer une instance de la classe "wrapper" qui permet d'accéder au MCP230xx, vous devez retirer le commentaire d'une des deux se trouvant au début du code ci dessous. Il y deux lignes d'initialisation possible parce qu'il y a deux versions du Raspberry Pi. La première version (avant la révision Modèle B et 512MB SDRAM) utilisait la ligne I2C0, tandis que le dernier modèle B (avec 512MB SDRAM) utilise la ligne I2C1.

C'est la raison de l'existence du premier paramètre busnum.

Le paramètre address permet d'indiquer l'adresse du MCP23017 en notation hexadécimal. En partant du principe que les 3 lignes d'adresses du MCP23017 sont branchées à la masse/GND, l'adresse du MCP23017 est 0x20 (qui est l'adresse de base).

Le paramètre num_gpios indique le nombre de broches d'entrée/sortie (GPIO) disponible sur le module MCP230xx. Puisqu'il s'agit d'un MCP23017, nous avons donc 16 broches.

# Utiliser busnum = 0 pour les Raspberry plus ancien (avant la version 512MB)
#mcp = Adafruit_MCP230XX(busnum = 0, address = 0x20, num_gpios = 16)
  
# Utiliser busnum = 1 pour les nouveaux Raspberry (avec 512MB de RAM)
mcp = Adafruit_MCP230XX(busnum = 1, address = 0x20, num_gpios = 16)

Addresse du MCP230xx

Comme indiqué ci-dessus, l'adresse par défaut d'un MCP23017 est 0X20 si toutes les lignes d'adresses sont raccordées à la masse.

Si vous voulez utiliser une configuration des broches d'adresse différente, vous pouvez ouvrir la fiche technique pour voir comment fonctionne le schéma d'adressage (fiche technique du MCP23017 ou la fiche technique du MCP23008.)

Pour le MCP23017, il s'agit des broches A0, A1, 02 correspondant aux broches numéro 15, 16, 17.

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

Les broches d'adresses peuvent être soit:

  • Activé: dont la broche est placée à l'état HAUT, dit HIGH en raccordant la broche sur la tension d'alimentation du MCP23017.
    Si votre MCP est alimenté en +5V, ce sera +5V. S'il est alimenté en 3.3v, ce sera 3.3v.
  • Désactivé: dont la broche est placée à l'état BAS, dit LOW en raccordant la broche sur la masse/GND.

En fonction de la combinaison de raccordement du MCP23017, vous obtiendrez une nouvelle adresse sur le BUS I2C.

Rasp-Hack-MCP23017-Adresses.jpg

Numéro des broches

The MCP23008 has 8 pins - A0 thru A7. A0 is called 0 in the library, and A7 is called 7 (the rest follow the same pattern)

The MCP23017 has 16 pins - A0 thru A7 + B0 thru B7. A0 is called 0 in the library, and A7 is called 7, then B0 continues from there as is called 8 and finally B7 is pin 15

Activer une broche en entrée

You can enable or disable the internal pullup resistor and set the pins as input with the following lines of code:

# Set pin 3 to input with the pullup resistor enabled
mcp.pullup(3, 1)

# Read pin 3 and display the results
print "%d: %x" % (3, mcp.input(3) >> 3)

The second line reads pin 3, and shifts the value left 3 bits so that it will equal 0 or 1 depending on whether the pin is high or low when it is sampled. This will results in output similar to the following: "3: 0" or "3: 1" (depending on the pin state).

Activer une broche comme sortie

To set a pin as output, you also need two lines of code:

# Set pin 0 to output (you can set pins 0..15 this way)
mcp.config(0, OUTPUT)

# Set pin 0 High
mcp.output(0, 1)  

# Set pin 0 Low
mcp.output(0, 0)

That's all there is to it! The default sample code will toggle the GPIO pin as fast as possible, and if you hooked it up to an oscilloscope you'd end up with something similar to the following:

{{#Widget:Iframe |url=http://www.youtube.com/embed/zBuMJ-R40N0 |width=420 |height=315 |border=0 }} Source: AdaFruit Industries, liens direct: sur YouTube

Interruption et Callback

As it currently stands, the library does not support any sort of interrupt or call back functionality (there is a hardware interrupt pin on the MCP but we don't use it in this code). Only polling is currently supported!


Source: MCP230xx GPIO Expander on the Raspberry Pi créé par Kevin Townsend pour www.adafruit.com

Traduit , corrigé et augmenté par Meurisse D. pour MCHobby.be Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com