Lorsque vous jouez avec des microcontrôleurs, il est parfois nécessaire d'ajouter plus d'E/S numériques que la puce ne prend en charge de manière native.
Le module PCF8574 (PCF8574T) est l'un des moyens les plus populaires d'étendre les E/S car il utilise le bus I2C qui ne nécessite que 2 broches sur le microcontrôleur. Il fournit 8 E/S numériques supplémentaires qui peuvent facilement être connectées en série jusqu'à 64.
Notez que le module dispose d'une interface I 2 C facile à utiliser qui peut être configurée via des cavaliers mobiles pour utiliser l'une des huit adresses I2C .
Les trois broches d'adresse matérielle permettent à huit de chaque appareil d'être sur le même bus I 2 C, il peut donc y avoir jusqu'à 16 de ces extenseurs d'E/S PCF8574/PCF8574A ensemble sur le même bus I2C, prenant en charge jusqu'à 128 I/Os.
Voici les principales caractéristiques du module présenté ici :
Il y a trois sauts de sélection d'adresse (A0-A2) qui déterminent quelle adresse I 2 C utiliser. Tels qu'ils sont livrés, ces cavaliers sont tous réglés sur le côté BAS (GND) comme indiqué sur l'image ci-dessus.
Cela place le module à l'adresse esclave par défaut/de base de 0x20 (hexadécimal 7 bits). Les cavaliers peuvent être déplacés de manière binaire pour changer l'adresse I 2 C (0x20 à 0x27) comme indiqué dans la carte d'adresses esclave ci-dessous.
/* Blink led on PIN0 by Mischianti Renzo <http://www.mischianti.org> https://www.mischianti.org/2019/01/02/pcf8574-i2c-digital-i-o-expander-fast-easy-usage/ Permet de faire clignoter une LED sur la broche 0 */ #include "Arduino.h" #include "PCF8574.h" // Set i2c address PCF8574 pcf8574_1(0x20);// on peut en avoir 8 sur le bus I2C void setup() { Serial.begin(115200); delay(1000); // Set pinMode to OUTPUT pcf8574_1.pinMode(P0, OUTPUT); pcf8574_1.pinMode(P1, INPUT); Serial.print("Init pcf8574..."); if (pcf8574_1.begin()){ Serial.println("OK"); }else{ Serial.println("KO"); } } void loop() { pcf8574_1.digitalWrite(P0, HIGH); delay(1000); pcf8574_1.digitalWrite(P0, LOW); delay(1000); }
/* KeyPressed on PIN1 by Mischianti Renzo <http://www.mischianti.org> https://www.mischianti.org/2019/01/02/pcf8574-i2c-digital-i-o-expander-fast-easy-usage/ Test l'appui sur le Bouton poussoir broche 1 */ #include "Arduino.h" #include "PCF8574.h" // Set i2c address PCF8574 pcf8574_1(0x22); unsigned long timeElapsed; void setup() { Serial.begin(115200); delay(1000); pcf8574_1.pinMode(P0, OUTPUT); pcf8574_1.pinMode(P1, INPUT); Serial.print("Init pcf8574_1..."); if (pcf8574_1.begin()){ Serial.println("OK"); }else{ Serial.println("KO"); } } void loop() { uint8_t val = pcf8574_1.digitalRead(P1); if (val==HIGH) Serial.println("Bouton Appuyer"); delay(50); }