Modifications

Sauter à la navigation Sauter à la recherche
1 985 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: Valeur de A1 + Valeur de A2 = 2 + 4 = 6.
+
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: Valeur de A0 + Valeur de A1 + Valeur de A2 = 1 + 2 + 4 = 7  
+
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 ==
 
== Exemple pratique ==
Ligne 42 : Ligne 42 :  
L'exemple de code didactique suivant montre comment activer les LEDs sur les 3 MCP23017 branché ci-dessus.
 
L'exemple de code didactique suivant montre comment activer les LEDs sur les 3 MCP23017 branché ci-dessus.
   −
  <nowiki>
+
  <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);
 +
}
 +
 
 +
 
 +
// 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>
 
</nowiki>
    
{{MCP23017-TRAILER}}
 
{{MCP23017-TRAILER}}
29 917

modifications

Menu de navigation