Ligne 1 : |
Ligne 1 : |
| {{Pi-WiringPi-NAV}} | | {{Pi-WiringPi-NAV}} |
| | | |
− | == Module extension GPIO à 16 broches == | + | == Carte d'extension GPIO à 16 broches == |
| | | |
| {{bloc-etroit|text=Vous pouvez ignorer cette section si vous ne disposez pas encore de module Quick2Wire. }} | | {{bloc-etroit|text=Vous pouvez ignorer cette section si vous ne disposez pas encore de module Quick2Wire. }} |
| | | |
− | [[Fichier:Pi-WiringPi-Exemple-Quick2Wire-21.jpg|480px]]<br /><small>Source: [http://wirinPi.com wiringPi.com]<br /> | + | [[Fichier:Pi-WiringPi-Exemple-Quick2Wire-21.jpg|640px]]<br /><small>Source: [http://wirinPi.com wiringPi.com]<br /> |
| La carte d'extension Quick2Wire à 16 broches digitale. Le port Port A, bit 0 connecté sur une LED à l'aide d'une résistance de 220Ω.</small> | | La carte d'extension Quick2Wire à 16 broches digitale. Le port Port A, bit 0 connecté sur une LED à l'aide d'une résistance de 220Ω.</small> |
| | | |
− | The GPIO expansion board uses the MCP23017 GPIO expansion chip. This provides 16 additional IO pins which you can use in your own programs in exactly the same way you might use the Pi’s on-board GPIO pins.
| + | La carte d'extension GPIO utilise un circuit intégré MCP23017. Ce fournit 16 broches d'entrée/sortie additionnelles que vous pouvez utiliser dans vos propres programmes de la même façon que si vous utiliser une broche du GPIO de votre Raspberry-Pi. |
| | | |
− | === Note === | + | == Pas de résistance de protection == |
− | Unlike the 8 IO pins on the Quick2Wire main board, these IO pins do not have any sort of series resistors or over voltage protection, so take care to only connect them to 3.3v devices.
| + | A l'opposé de la carte d'extension 8 entrée/sortie de Quick2Wire, les IO (entrées/sorties) de la carte utilisé dans cet exemple '''ne disposent pas de résistance de protection''' ni de protection contre les surtensions. |
| + | |
| + | {{ambox-stop|text=Vous devez faire attention à n'utiliser que des périphériques 3.3v.}} |
| + | |
| + | <font color="green">Si vous désirez utiliser des périphériques en logique 5v, vous pouvez ajouter un [http://mchobby.be/PrestaShop/product.php?id_product=194 convertisseur de niveau logique comme celui-ci] ou [http://mchobby.be/PrestaShop/product.php?id_product=131 celui-là].</font> |
| | | |
| === Raccordements === | | === Raccordements === |
− | To do some tests, we’ll start with a single LED connected to Port A, bit 0. The circuit above uses a 220Ω resistor then the LED then a connection to the GND/0v pin on the main board.
| + | Pour faire quelques tests, nous allons commencer par raccorder une LED connectée que le Port A, bit 0. |
| + | |
| + | Le circuit ci-dessus utilise une LED connectée sur le MCP23017, une résistance 220Ω pour limiter le courant... et finalement l'autre patte de la LED (la plus courte) est branchée sur le GND/0v de la carte principale. |
| | | |
| == Les commandes == | | == Les commandes == |
| + | |
| + | Les commandes suivantes allume et eteint la LED. |
| | | |
| <nowiki>gpio -x mcp23017:100:0x20 mode 100 out | | <nowiki>gpio -x mcp23017:100:0x20 mode 100 out |
Ligne 22 : |
Ligne 30 : |
| gpio -x mcp23017:100:0x20 write 100 0</nowiki> | | gpio -x mcp23017:100:0x20 write 100 0</nowiki> |
| | | |
− | should turn the LED on then off again. If not, check that its wired up correctly – that the LED is the right way round and that the MCP23017 appears as address 0×20 in the output of the '''gpio i2cd''' command. (If it’s something other than 0×20 then substitute that for the 0×20 in the command above).
| + | Vérifiez le cablage si cela ne fonctionne pas correctement, que la LED est raccordée dans le bon sens, que le MCP23017 apparait sous l'adresse 0×20 dans le résultat de la commande '''gpio i2cd'''. (Si le résultat est différent de 0x20 alors substituez 0x20 par cette cette autre valeur dans les commandes ci-dessus). |
| | | |
− | === Que fait la commande? === | + | === Que font les commandes? === |
− | What those gpio commands are doing?
| + | Que font les différentes commandes '''gpio'''? |
| | | |
− | The '''-x''' flag tells '''gpio''' to use an expansion module – the mcp23017 in this instance. The parameters (separated by colons) for the mcp23017 module are the new pin base number (100 in this case), and the I2C address of the chip (0×20). At that point, you can issue most standard '''gpio''' commands.
| + | Le flag '''-x''' informe la commande '''gpio''' d'utiliser un module d'extension... le mcp23017 dans notre cas. |
| + | |
| + | Les paramètres (séparés par les ":") pour le module mcp23017 sont: |
| + | # Le nouveau numéro de base pour le brochage (''base number'') qui est 100 dans notre cas |
| + | # l'adresse du circuit intégré sur le le bus I2C. 0×20 dans cet exemple. |
| + | |
| + | A partir de ce point, il est possible d'utiliser la plupart des commandes standard '''gpio''' de façon totalement transparente. |
| | | |
| === Script de test === | | === Script de test === |
− | We can use a variant of the button push script that we used in the testing on the main board too:
| + | Nous pouvons utiliser une variante du script utilisant le bouton de la carte principale pour tester le module MCP23017. |
| | | |
| <nowiki>gpio mode 0 in | | <nowiki>gpio mode 0 in |
| while true; do gpio -x mcp23017:100:0x20 write 100 `gpio read 0`; done</nowiki> | | while true; do gpio -x mcp23017:100:0x20 write 100 `gpio read 0`; done</nowiki> |
| + | |
| + | Le LED du module doit s'allumer lorsque l'on presse le bouton de la carte principale. Rappelons que le bouton est raccordé sur la broche 0 du GPIO du Raspberry Pi si le cavalier est bien en place (voir [[Pi-WiringPi-Exemple-Quick2Wire-Install|installation de la carte principale]] pour plus d'information) |
| | | |
| == Programme Blink == | | == Programme Blink == |
− | In the ''q2w'' directory in the wiringPi '''examples''' (exemple) directory, you’ll find a program called blink-io.c – this is the blink program adapted to use the 16-bit GPIO expander board. This program will blink the on-board LED at the same time as the one connected to the IO expander board.
| + | Le sous répertoire '''q2w/examples/''' (exemple) dans le répertoire de wiringPi contient le programme blink-io.c – c'est une version du programme blink.c adapté pour utiliser la carte GPIO expander (à 16 entrées/sorties) de QuickToWire. Ce programme fait clignoter la LED de la carte principale en même temps que la LED connectée sur la carte GPIO. |
| | | |
− | Study it to compare with the standard blink.c program. Compile and run with:
| + | Comparer ce programme avec blink.c pour comprendre le fonctionnement. |
| + | |
| + | Utiliser les commandes suivantes pour le compiler et l'exécuter: |
| | | |
| <nowiki>gcc -Wall -oblink-io blink-io.c -lwiringPi | | <nowiki>gcc -Wall -oblink-io blink-io.c -lwiringPi |
Ligne 44 : |
Ligne 62 : |
| | | |
| == Test Avancé == | | == Test Avancé == |
− | For more advanced testing, I have a small board with a block of 10 LEDs on and a little push-button switch:
| + | Pour un test avancé, nous utilsons une petite carte avec 10 LED et un petit bouton poussoir. |
| | | |
− | [[Fichier:Pi-WiringPi-Exemple-Quick2Wire-22.jpg|480px]]<br /><small>Source: [http://wirinPi.com wiringPi.com]</small> | + | [[Fichier:Pi-WiringPi-Exemple-Quick2Wire-22.jpg|640px]]<br /><small>Source: [http://wirinPi.com wiringPi.com]</small> |
| | | |
− | Here is a variant of the program I used when testing wiringPi v2′s ability to use the mcp23017 GPIO expansion chip:
| + | Voici une variante du programme utilisé dans wiringPi v2 pour tester sa capacité à manipuler le mcp23017 GPIO expander: |
| | | |
| <nowiki>/* | | <nowiki>/* |
| * binary.c: | | * binary.c: |
− | * Using the Quick 2 wire 16-bit GPIO expansion board | + | * Utilisation de la carte d'extension GPIO 16 bit de Quick 2 wire |
| * | | * |
| * Copyright (c) 2012-2013 Gordon Henderson. <projects@drogon.net> | | * Copyright (c) 2012-2013 Gordon Henderson. <projects@drogon.net> |
| *********************************************************************** | | *********************************************************************** |
| + | * (fr) Traduction Francaise par Meurisse D. pour MCHobby.be. Crédit de traduction MCHobby.be |
| + | * Tutoriel WiringPi traduit disponible sur http://mchobby.be/wiki/index.php?title=Pi-WiringPi |
| + | * |
| + | * (en) French translation by Meurisse D. for MCHobby.be. Translation credit to MCHobby.be |
| + | * Translated WiringPi's tutorial available at http://mchobby.be/wiki/index.php?title=Pi-WiringPi |
| */ | | */ |
| | | |
Ligne 68 : |
Ligne 91 : |
| int i, bit ; | | int i, bit ; |
| | | |
− | // Enable the on-goard GPIO | + | // Activer le GPIO sur de la carte |
| | | |
| wiringPiSetup () ; | | wiringPiSetup () ; |
| | | |
− | // Add in the mcp23017 on the q2w board | + | // Ajouter le mcp23017 sur la carte q2w |
| | | |
| mcp23017Setup (Q2W_BASE, 0x20) ; | | mcp23017Setup (Q2W_BASE, 0x20) ; |
Ligne 78 : |
Ligne 101 : |
| printf ("Raspberry Pi - Quick2Wire MCP23017 Test\n") ; | | printf ("Raspberry Pi - Quick2Wire MCP23017 Test\n") ; |
| | | |
− | // On-board button Input: | + | // Le bouton de la carte principale définit comme entrée ("input" en anglais). |
| + | // Ce bouton est raccordé sur la broche 0 du GPIO du Raspberry Pi |
| | | |
| pinMode (0, INPUT) ; | | pinMode (0, INPUT) ; |
| | | |
− | // First 10 pins on q2w board as outputs: | + | // Déclarer les 10 première de la carte q2w comme sortie ("output" en anglais): |
| | | |
| for (i = 0 ; i < 10 ; ++i) | | for (i = 0 ; i < 10 ; ++i) |
| pinMode (Q2W_BASE + i, OUTPUT) ; | | pinMode (Q2W_BASE + i, OUTPUT) ; |
| | | |
− | // Last pin as an input with the internal pull-up enabled | + | // La dernière broches de la carte q2c comme entrée et activer la |
| + | // résistance Pull-Up interne |
| | | |
| pinMode (Q2W_BASE + 15, INPUT) ; | | pinMode (Q2W_BASE + 15, INPUT) ; |
Ligne 99 : |
Ligne 124 : |
| digitalWrite (Q2W_BASE + bit, i & (1 << bit)) ; | | digitalWrite (Q2W_BASE + bit, i & (1 << bit)) ; |
| | | |
− | while (digitalRead (0) == HIGH) // While pushed | + | while (digitalRead (0) == HIGH) // tant que bouton est enfoncer. |
| delay (1) ; | | delay (1) ; |
| | | |
− | if (digitalRead (Q2W_BASE + 15) == HIGH) // Not Pushed | + | if (digitalRead (Q2W_BASE + 15) == HIGH) // tant que bouton n'est pas enfoncé |
| delay (100) ; | | delay (100) ; |
| } | | } |
Ligne 109 : |
Ligne 134 : |
| }</nowiki> | | }</nowiki> |
| | | |
− | This program is called binary.c in the ''q2w'' directory in the wiringPi ''examples'' (exemples) directory. Compile and run with:
| + | Ce programme se nomme binary.c et est disponible dans le répertoire ''q2w/examples'' des sources de wiringPi. |
| + | |
| + | Utilisez les commandes suivantes pour le compiler et l'exécuter: |
| | | |
| <nowiki>gcc -Wall -o binary binary.c -lwiringPi | | <nowiki>gcc -Wall -o binary binary.c -lwiringPi |
| sudo ./binary</nowiki> | | sudo ./binary</nowiki> |
| | | |
− | Push the main button to stop the counter, and push the button on the LED board to make it go faster. The LED board is simply 10 LEDs and series resistors and a single push-button connected to the 0v/GND line.
| + | Poussez le bouton de la carte principle pour arrêter le conteur et poussez le bouton de la carte à LED pour augmenter la vitessele programme. |
| + | |
| + | La carte à LED est simplement composé de 10 LEDs et 10 résistances en série + un simple bouton poussoir raccordé sur la masse/0v/GND/ground. |
| | | |
− | Note that this program uses both buttons – the one on the main Quick2Wire board and the one on the little test board. The one on the main Q2W board returns 0 (or LOW) when not pushed and 1 (or HIGH) when pushed, but the one on the expansion board works the opposite way, and returns 1 when not pushed and 0 when pushed.
| + | Notez que ce programme utilise deux boutons – celui de la carte principal de Quick2Wire et un bouton branché sur la petite carte de test. Celui sur la carte principale Q2W retourne 0 (ou LOW) quand il n'est pas pressé et 1 (ou HIGH) quand il est pressé, tandis que le bouton sur la carte d'extension fonctionne à l'opposé et 1 lorsqu'il n'est pas pressé et 0 lorsqu'il est pressé. |
| | | |
| == Conclusion == | | == Conclusion == |
| | | |
− | Using the Quick2Wire MCP23017 GPIO expander with wiringPi is as simple as telling wiringPi about the gpio expander, assigning it a new pin number base (for its 16 pins), then using digitalRead(), digitalWrite(), pinMode() as before.
| + | Utiliser le module d'extension MCP23017 de Quick2Wire avec wiringPi est aussi simple que d'utiliser directement le GPIO du Raspberry. Assignez un nouveau numéro de base (valeur de Q2W_BASE) pour l'identification des broches. |
| + | |
| + | Pour les les 16 I/O du GPIO cela revient à numéroter les sorties entre Q2W_BASE+0 et Q2W_BASE+15 (donc de 100 à 100+15). |
| + | |
| + | Ensuite, il ne reste plus qu'a utiliser les fonction digitalRead(), digitalWrite(), pinMode() comme avant. |
| | | |
| {{Pi-WiringPi-TRAILER}} | | {{Pi-WiringPi-TRAILER}} |