Modifications

Sauter à la navigation Sauter à la recherche
aucun résumé de modification
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}}
29 918

modifications

Menu de navigation