Ligne 1 : |
Ligne 1 : |
| {{Pi-WiringPi-NAV}} | | {{Pi-WiringPi-NAV}} |
| | | |
− | == Intro == | + | == Carte d'extension GPIO à 16 broches == |
| | | |
− | {{bloc-etroit|text=xxx. }} | + | {{bloc-etroit|text=Vous pouvez ignorer cette section si vous ne disposez pas encore de module Quick2Wire. }} |
| | | |
− | <nowiki></nowiki> | + | [[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> |
| | | |
− | <nowiki></nowiki>
| + | 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. |
| | | |
− | <nowiki></nowiki>
| + | == Pas de résistance de protection == |
| + | 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. |
| | | |
− | <nowiki></nowiki>
| + | {{ambox-stop|text=Vous devez faire attention à n'utiliser que des périphériques 3.3v.}} |
| | | |
− | <nowiki></nowiki>
| + | <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> |
| | | |
− | <nowiki></nowiki>
| + | === Raccordements === |
| + | Pour faire quelques tests, nous allons commencer par raccorder une LED connectée que le Port A, bit 0. |
| | | |
− | <nowiki></nowiki>
| + | 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 == |
| | | |
− | [[Fichier:Pi-WiringPi-Exemple-Quick2Wire-01.jpg|480px]]<br /><small>Source: [http://wirinPi.com wiringPi.com]</small>
| + | Les commandes suivantes allume et eteint la LED. |
| | | |
| + | <nowiki>gpio -x mcp23017:100:0x20 mode 100 out |
| + | gpio -x mcp23017:100:0x20 write 100 1 |
| + | gpio -x mcp23017:100:0x20 write 100 0</nowiki> |
| + | |
| + | 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 font les commandes? === |
| + | Que font les différentes commandes '''gpio'''? |
| + | |
| + | 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 === |
| + | Nous pouvons utiliser une variante du script utilisant le bouton de la carte principale pour tester le module MCP23017. |
| + | |
| + | <nowiki>gpio mode 0 in |
| + | 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 == |
| + | 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. |
| + | |
| + | 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 |
| + | sudo ./blink-io</nowiki> |
| + | |
| + | == Test Avancé == |
| + | Pour un test avancé, nous utilsons une petite carte avec 10 LED et un petit bouton poussoir. |
| + | |
| + | [[Fichier:Pi-WiringPi-Exemple-Quick2Wire-22.jpg|640px]]<br /><small>Source: [http://wirinPi.com wiringPi.com]</small> |
| + | |
| + | Voici une variante du programme utilisé dans wiringPi v2 pour tester sa capacité à manipuler le mcp23017 GPIO expander: |
| + | |
| + | <nowiki>/* |
| + | * binary.c: |
| + | * Utilisation de la carte d'extension GPIO 16 bit de Quick 2 wire |
| + | * |
| + | * 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 |
| + | */ |
| + | |
| + | #include <stdio.h> |
| + | #include <wiringPi.h> |
| + | #include <mcp23017.h> |
| + | |
| + | #define Q2W_BASE 100 |
| + | |
| + | int main (void) |
| + | { |
| + | int i, bit ; |
| + | |
| + | // Activer le GPIO sur de la carte |
| + | |
| + | wiringPiSetup () ; |
| + | |
| + | // Ajouter le mcp23017 sur la carte q2w |
| + | |
| + | mcp23017Setup (Q2W_BASE, 0x20) ; |
| + | |
| + | printf ("Raspberry Pi - Quick2Wire MCP23017 Test\n") ; |
| + | |
| + | // 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) ; |
| + | |
| + | // Déclarer les 10 première de la carte q2w comme sortie ("output" en anglais): |
| + | |
| + | for (i = 0 ; i < 10 ; ++i) |
| + | pinMode (Q2W_BASE + i, OUTPUT) ; |
| + | |
| + | // La dernière broches de la carte q2c comme entrée et activer la |
| + | // résistance Pull-Up interne |
| + | |
| + | pinMode (Q2W_BASE + 15, INPUT) ; |
| + | pullUpDnControl (Q2W_BASE + 15, PUD_UP) ; |
| + | |
| + | for (;;) |
| + | { |
| + | for (i = 0 ; i < 1024 ; ++i) |
| + | { |
| + | for (bit = 0 ; bit < 10 ; ++bit) |
| + | digitalWrite (Q2W_BASE + bit, i & (1 << bit)) ; |
| + | |
| + | while (digitalRead (0) == HIGH) // tant que bouton est enfoncer. |
| + | delay (1) ; |
| + | |
| + | if (digitalRead (Q2W_BASE + 15) == HIGH) // tant que bouton n'est pas enfoncé |
| + | delay (100) ; |
| + | } |
| + | } |
| + | return 0 ; |
| + | }</nowiki> |
| + | |
| + | 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 |
| + | sudo ./binary</nowiki> |
| + | |
| + | 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. |
| + | |
| + | 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 == |
| + | |
| + | 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}} |