Modifications

Sauter à la navigation Sauter à la recherche
2 585 octets ajoutés ,  21 juillet 2019 à 11:08
Ligne 1 : Ligne 1 :  
{{MCP23017-NAV}}
 
{{MCP23017-NAV}}
  −
{{traduction}}
      
== Introduction ==
 
== Introduction ==
Ligne 8 : Ligne 6 :  
Avec 3 MCP23017 il est possible de commander jusqu'à 48 entrées sorties. Mais pour qu'ils partagent le même même bus I2C, il faut qu'ils aient chacun une adresse I2C différentes.
 
Avec 3 MCP23017 il est possible de commander jusqu'à 48 entrées sorties. Mais pour qu'ils partagent le même même bus I2C, il faut qu'ils aient chacun une adresse I2C différentes.
   −
Un autre cas de figure qui peut se présenter: c'est qu'un autre composant sur le bus I2C utilise déjà l'adresse 0x00 par défaut. Dans ce cas, il faut également changer l'adresse du MCP23017.
+
Un autre cas de figure qui peut se présenter: c'est qu'un autre composant sur le bus I2C utilise déjà l'adresse 0x20 par défaut. Dans ce cas, il faut également changer l'adresse du MCP23017.
    
== Changer l'adresse ==
 
== Changer l'adresse ==
 
L'adresse I2C se configure sur les broches A0, A1, A2.  
 
L'adresse I2C se configure sur les broches A0, A1, A2.  
 +
 +
L'adresse de base du MCP23017 est 0x20 à laquelle s'ajouter la valeur calculée à partir des bits d'adresse.
    
[[Fichier:MCP23017-layout.jpg]]
 
[[Fichier:MCP23017-layout.jpg]]
   −
Lorsque l'on raccorde les 3 broches A0, A1 et A2 sur GND/Masse alors le MCP utilise l'adresse par défaut qui est 0x00.
+
Lorsque l'on raccorde les 3 broches A0, A1 et A2 sur GND/Masse alors le MCP utilise l'adresse par défaut qui est 0x20 + (bit d'adresse=0).
    
Chacune des broches Ax ont une valeur particulière qui intervient dans le calcul d'adresse si la broche est raccordée sur +5V:
 
Chacune des broches Ax ont une valeur particulière qui intervient dans le calcul d'adresse si la broche est raccordée sur +5V:
Ligne 22 : Ligne 22 :  
* A2 = 4
 
* A2 = 4
   −
Si A0 et A2 sont raccordés sur +5v alors l'adresse est: Valeur de A0 + Valeur de A2 = 1 + 4 = 5.
+
Si A0 et A2 sont raccordés sur +5v alors l'adresse est: 0x20 + Valeur de A0 + Valeur de A2 = 0x20 + 1 + 4 = 0x20 + 5.
 +
 
 +
Si A1 et A2 sont raccordés sur +5v alors l'adresse est: 0x20 + Valeur de A1 + Valeur de A2 = 2 + 4 = 0x20 + 6.
 +
 
 +
Si A0, A1 et A2 sont raccordés sur +5v alors l'adresse est: 0x20 + Valeur de A0 + Valeur de A1 + Valeur de A2 = 0x20 + 1 + 2 + 4 = 0x20 + 7
 +
 
 +
== Exemple pratique ==
 +
Sur base des calculs d'adresses précédent, nous allons présenter un exemple de montage pratique correspondants.
 +
 
 +
* IC1 avec Adresse 5 - Led sur GPA0 (broche 21 du 1ier MCP23017)
 +
* IC2 avec Adresse 6 - Led sur GPA1 (broche 22 du 2ieme MCP23017)
 +
* IC3 avec Adresse 7 - Led sur GPA6 (broche 27 du 3ieme MCP23017)
 +
 
 +
Notez les raccordements respectifs des broches A0, A1 et A2 sur IC1, IC2 et IC3.
 +
 
 +
[[Fichier:MCP23017-SeveralMCPs.jpg]]
 +
 
 +
== Code ==
 +
L'exemple de code didactique suivant montre comment activer les LEDs sur les 3 MCP23017 branché ci-dessus.
 +
 
 +
<nowiki>/* Exemple SeveralMCP23017.pde
 +
  Utilise la librairie Adafruit-MCP23017 pour démontrer l'utilisation de plusieurs MCP23017 sur
 +
  un seul bus I2C.
 +
 
 +
  Code écrit par Meurisse D. pour MCHobby.be [www.mchobby.be], Licence CC-BY-SA
 +
 
 +
  TUTORIEL complémentaire EN FRANCAIS par MCHobby.be sur (voir wiki pour licence tutoriel)
 +
      http://mchobby.be/wiki/index.php?title=MCP23017
 +
 
 +
  Acheter un MCP23017
 +
      http://shop.mchobby.be/product.php?id_product=218
 +
*/
 +
 
 +
#include <Wire.h>
 +
#include "Adafruit_MCP23017.h"
 +
 
 +
// Test de base d'ecriture d'état pour trois "MCP23017 I/O expander" partageant un même bus I2C
 +
//
 +
// Raccordements: http://mchobby.be/wiki/index.php?title=MCP23017-Plusieurs
 +
Adafruit_MCP23017 mcp1;
 +
Adafruit_MCP23017 mcp2;
 +
Adafruit_MCP23017 mcp3;
 +
 
 +
void setup() {
 +
  mcp1.begin(5); // Utilise l'adresse 0x20 + 5 pour IC1
 +
  mcp2.begin(6); // Utilise l'adresse 0x20 + 6 pour IC2
 +
  mcp3.begin(7); // Utilise l'adresse 0x20 + 7 pour IC3
 +
 
 +
  // Définir la sortie #0 (GPA 0, broche 21) sur IC1 comme sortie
 +
  mcp1.pinMode(0, OUTPUT);
 +
  // Définir la sortie #1 (GPA 1, broche 22) sur IC2 comme sortie
 +
  mcp2.pinMode(1, OUTPUT);
 +
  // Définir la sortie #6 (GPA 6, broche 27) sur IC3 comme sortie
 +
  mcp3.pinMode(6, OUTPUT);
 +
}
   −
Si A1 et A2 sont raccordés sur +5v alors l'adresse est: Valeur de A1 + Valeur de A2 = 2 + 4 = 6.
     −
Si A0, A1 et A2 sont raccordés sur +5v alors l'adresse est: Valeur de A0 + Valeur de A1 + Valeur de A2 = 1 + 2 + 4 = 
+
// Activer/désactiver la sortie #0 du MCP toutes les 100 millisecondes
    +
void loop() {
 +
  delay(1000); // Attendre 1000ms
 +
  mcp1.digitalWrite(0, HIGH); // Activer sortie sur IC1
 +
  delay(300);
 +
  mcp2.digitalWrite(1, HIGH); // Activer sortie sur IC2
 +
  delay(300);
 +
  mcp3.digitalWrite(6, HIGH); // Activer sortie sur IC3
 +
 
 +
  delay(1000); // Attendre 1s (1000ms)
 +
  mcp1.digitalWrite(0, LOW); // Désactiver sortie sur IC1
 +
  delay(300);
 +
  mcp2.digitalWrite(1, LOW); // Désactiver sortie sur IC2
 +
  delay(300);
 +
  mcp3.digitalWrite(6, LOW); // Désactiver sortie sur IC3
 +
}
 +
</nowiki>
    
{{MCP23017-TRAILER}}
 
{{MCP23017-TRAILER}}
29 917

modifications

Menu de navigation