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}} |