Ligne 4 : |
Ligne 4 : |
| {{bloc-etroit|text=Nous vous avons montré comment brancher le MCP23017... nous n'allons pas vous laisser là avec le circuit et un "bonne chance". | | {{bloc-etroit|text=Nous vous avons montré comment brancher le MCP23017... nous n'allons pas vous laisser là avec le circuit et un "bonne chance". |
| | | |
− | Nous allons maintenant nous pencher sur la bibliothèque pour le MCP23008 et MCP23017 disponible sur le [https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code dépôt GitHub Python pour Raspberry produit par d'AdaFruit]. Le plus facile, c'est d'utiliser [http://wiki.mchobby.be/index.php?title=Pi-WebIde WebIDE], l'environnement super pratique d'AdaFruit, qui pointe déjà automatiquement sur le dépôt GitHub d'AdaFruit. | + | Nous allons maintenant nous pencher sur la bibliothèque pour le MCP23008 et MCP23017 disponible sur le [https://github.com/adafruit/Adafruit_Python_GPIO dépôt GitHub Python pour Raspberry produit par d'AdaFruit]. Le plus facile, c'est d'utiliser [http://wiki.mchobby.be/index.php?title=Pi-WebIde WebIDE], l'environnement super pratique d'AdaFruit, qui pointe déjà automatiquement sur le dépôt GitHub d'AdaFruit. |
| | | |
| Une fois que vous avez ouvert WebIDE dans votre Navigateur, vous pouvez simplement cliquer sur les répertoires et noms suivants dans la barre de navigation à gauche: | | Une fois que vous avez ouvert WebIDE dans votre Navigateur, vous pouvez simplement cliquer sur les répertoires et noms suivants dans la barre de navigation à gauche: |
Ligne 16 : |
Ligne 16 : |
| {{ADFImage|Rasp-Hack-MCP230XX-Librairie-01.jpg}} | | {{ADFImage|Rasp-Hack-MCP230XX-Librairie-01.jpg}} |
| | | |
− | Si vous ne disposez de WebIDE, vous pouvez [https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code télécharger toute la bibliothèque directement depuis le dépôt GitHub d'AdaFruit] | + | Si vous ne disposez de WebIDE, vous pouvez [https://github.com/adafruit/Adafruit_Python_GPIO télécharger toute la bibliothèque directement depuis le dépôt GitHub d'AdaFruit] |
| | | |
| Le fichier Adafruit_MCP230xx.py contient à la fois: | | Le fichier Adafruit_MCP230xx.py contient à la fois: |
Ligne 44 : |
Ligne 44 : |
| Une fois dans l'éditeur nano, encodez le code suivant: | | Une fois dans l'éditeur nano, encodez le code suivant: |
| | | |
− | <nowiki>#!/usr/bin/python
| + | <syntaxhighlight lang="python"> |
| + | #!/usr/bin/python |
| # -*- encoding: utf8 -*- | | # -*- encoding: utf8 -*- |
| from Adafruit_MCP230xx import * | | from Adafruit_MCP230xx import * |
Ligne 71 : |
Ligne 72 : |
| while (True): | | while (True): |
| mcp.output(0, 1) # Mettre la broche 0 à l'état HAUT/High | | mcp.output(0, 1) # Mettre la broche 0 à l'état HAUT/High |
− | time.sleep(1); | + | time.sleep(1) |
| mcp.output(0, 0) # Mettre la broche 0 à l'état BAS/Low | | mcp.output(0, 0) # Mettre la broche 0 à l'état BAS/Low |
− | time.sleep(1);</nowiki> | + | time.sleep(1) |
| + | </syntaxhighlight> |
| | | |
| Sauvez le code et quitter nano | | Sauvez le code et quitter nano |
| | | |
− | === Exécuter === | + | === Rendre exécutable === |
| Avant d'exécuter le programme de test, il faut rendre le fichier exécutable | | Avant d'exécuter le programme de test, il faut rendre le fichier exécutable |
| | | |
| sudo chmod +x mcp23017_test.py | | sudo chmod +x mcp23017_test.py |
| | | |
− | Vous pouvez finalement exécuter le programme à l'aide de la commande | + | === Exécuter === |
| + | Vous pouvez finalement exécuter le programme à l'aide de la commande suivant. Attention: Il faut utiliser un sudo pour permettre au programme d'accéder au GPIO. |
| | | |
| sudo ./mcp23017_test.py | | sudo ./mcp23017_test.py |
| | | |
− | {{ambox|text=Il faut utiliser un sudo pour permettre au programme d'accéder au GPIO}}
| + | |
| + | == Error accessing 0x20 == |
| + | Lors de nos tests, avons obtenu le message d'erreur suivant: |
| + | <nowiki>Error accessing 0x20:check your I2C address |
| + | Error accessing 0x20:check your I2C address |
| + | Error accessing 0x20:check your I2C address |
| + | Error accessing 0x20:check your I2C address |
| + | Error accessing 0x20:check your I2C address |
| + | Error accessing 0x20:check your I2C address</nowiki> |
| + | |
| + | Ce dernier se produit lorsque la bibliothèque n'est pas capable de détecter correctement la révision de votre Pi... mais c'est un problème très facile à contourner. |
| + | |
| + | Lorsque la bibliothèque ne sait pas détecter la révision du pi, elle utilise le Bus I2C sur la broche numéro 0 (correspondant au Raspberry-Pi 256Mb). Le hic, c'est que la majorité des Raspberry actuels sont des modèles 51Mb Modèle B Révision 2 utilisant le Bus I2C sur la broche numéro 1. |
| + | |
| + | Par conséquent, essayer d'adresser le périphérique I2C à l'adresse 0X20 sur la mauvaise broche du bus I2C ne peut que produire une erreur. |
| + | |
| + | === Fixons le bus à utiliser === |
| + | Pour résoudre le problème, il suffit simplement de fixer la broche du bus I2C. |
| + | |
| + | Editez le fichier Adafruit_I2C.py avec la commande |
| + | |
| + | nano Adafruit_I2C |
| + | |
| + | et modifiez le paramètre '''busnum''' de la ligne suivante |
| + | |
| + | def __init__(self, address, busnum=-1, debug=False): |
| + | |
| + | pour la fixer de la valeur -1 (auto-détection) à '''la valeur 1''' (valeur correspondant au Raspberry 512Mb modèle B rev 2) |
| + | |
| + | def __init__(self, address, busnum=1, debug=False): |
| + | |
| + | Voila, il ne reste qu'à sauver et retester votre programme ''mcp23017_test.py'' |
| | | |
| == Créer une instance de Adafruit_MCP230xx == | | == Créer une instance de Adafruit_MCP230xx == |
Ligne 101 : |
Ligne 135 : |
| # mcp = Adafruit_MCP230XX(busnum = 1, address = 0x20, num_gpios = 8)</nowiki> | | # mcp = Adafruit_MCP230XX(busnum = 1, address = 0x20, num_gpios = 8)</nowiki> |
| | | |
− | == Les adresses du MCP230xx == | + | === Les adresses 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. | | 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. |
| | | |
Ligne 179 : |
Ligne 213 : |
| mcp.output(0, 0)</nowiki> | | mcp.output(0, 0)</nowiki> |
| | | |
− | C'est tout ce qu'il faut faire! Le code d'exemple essaye de basculer la broche GPIO aussi vite que possible... et si vous y branchez un oscilloscope vous devriez voir quelquechose comme ce qui suit:
| + | == Exemple en vidéo == |
| + | Voici la vidéo correspondant au programme de test ''mcp23017_test.py''. |
| + | |
| + | {{#Widget:Iframe |
| + | |url=https://www.youtube.com/embed/TCdfEBJeh_A |
| + | |width=420 |
| + | |height=315 |
| + | |border=0 |
| + | }} |
| + | |
| + | Dans l'exemple suivant, le code d'exemple essaye de basculer la broche GPIO aussi vite que possible... et si vous y branchez un oscilloscope vous devriez voir quelque-chose comme ce qui suit: |
| | | |
| {{#Widget:Iframe | | {{#Widget:Iframe |
− | |url=http://www.youtube.com/embed/zBuMJ-R40N0 | + | |url=https://www.youtube.com/embed/zBuMJ-R40N0 |
| |width=420 | | |width=420 |
| |height=315 | | |height=315 |