[Tuto] Extension de port Arduino avec un MCP23009

Posté sur: mai 3, 2013

Catégories: Arduino

Auteur: Fabien

Tags: arduino , fritzing , mcp23009 , tuto

[ps_product_list id_product=1147,180 nb=2] 

Dans ce tuto, nous allons voir comment ajouter 8 entrées / sorties supplémentaires au Arduino en utilisant un MCP23009. Vous pouvez consulter la datasheet de ce composants ici (MCP23009 - datasheet). Le câblage se conforme à la documentation du composant:

  • La pin #3 du MCP23009 vers la pin Analog 5 du Arduino (i2c clock)
  • La pin #4 du MCP23009 vers la pin Analog 4 du Arduino (i2c data)
  • La pin #5 du MCP23009 (Adresse) vers le GND du Arduino
  • La pin #1 du MCP23009 (Power) vers le 5V du Arduino
  • La pin #6 du MCP23009 (Reset) vers le 5V du Arduino
  • La pin #18 du MCP23009 (Common ground) vers le GND du Arduino

Ensuite on essaye de voir si notre câblage fonctionne en utilisant une LED sur une sortie du MC23009. Pour cela on ajoute le câblage suivant:

  • La pin #8 du MCP23009 (Sortie 1, GP0) vers un ensemble LED et resistance

Dans notre exemple nous utiliserons un Arduino Nano. Ce qui nous donne le schéma suivant:

Montage MCP23009

Et en montage sur Breadboard:

Montage Breadboard

Une fois assemblé:

MCP23009 photo

Pour le code, nous allons réutiliser la librairie du MCP23008, téléchargeable ici (https://github.com/adafruit/Adafruit-MCP23008-library). On utilise donc le code suivant:

#include nn// Letmeknow.fr - 03/05/2012n// Based on: MCP23008 button example from Ladyada.comn// Intelligent LEGO train station bench.nn// Code modified for used with an MCP23009nn// Connect pin #3 of the expander to Analog 5 (i2c clock)n// Connect pin #4 of the expander to Analog 4 (i2c data)n// Connect pins #5 of the expander to ground (address selection)n// Connect pin #1 and 6 of the expander to 5V (power and reset disable)n// Connect pin #18 of the expander to ground (common ground)nn// Output #0 is on pin 8 so connect an LED or whatever from that to groundnnAdafruit_MCP23008 mcp;nnvoid setup() { n mcp.begin(); // use default address 0nn mcp.pinMode(0, OUTPUT);n}nn// flip the pin #0 up and downnnvoid loop() {n delay(100);nn mcp.digitalWrite(0, HIGH);nn delay(100);nn mcp.digitalWrite(0, LOW);n}

Le même principe peut être utilisé pour réaliser une carte GPIO extender pour le Raspberry Pi. Retrouvez le fichier du Projet fritzing ici: http://letmeknow.fr/img/cms/blog/Documents/MCP23009.fzz

[ps_product_list id_product=1147,180 nb=2]

laissez un commentaire

Se connecter