======== PCF 8574 ======== === Module PCF 8574 === {{:start:arduino:esp32:capture_du_2022-03-23_16-49-17.jpg?direct&400 |}} 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/[[https://www.hobbytronics.co.uk/pcf8574an-i2c-port-expander|PCF8574A]] ensemble sur le même bus I2C, prenant en charge jusqu'à 128 I/Os. {{ :start:arduino:esp32:capture_du_2022-03-24_10-38-57.jpg?direct&400 |}} Voici les principales caractéristiques du module présenté ici : --8 lignes de données bidirectionnelles --La fonction de boucle permet l'extension jusqu'à 8 modules / 64 lignes de données --Interface I 2 C avec adresses réglables par cavalier --Capacité de sortie d'interruption --Compatibilité 3.3V et 5V. === Adresses I2C === 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. {{ :start:arduino:esp32:capture_du_2022-03-23_16-59-26.jpg?direct&400 |}} **ATTENTION : le réperage A2 et A0 peut etre inversé sur la serigraphie** {{ :start:arduino:esp32:capture_du_2022-03-23_17-03-02.jpg?direct&400 |}} ==== Bibliotheque PCF8574 pour ESP32 ==== Utiliser la librairie PCF8574 pour esp32 {{ :start:arduino:esp32:capture_du_2022-03-23_17-03-02b.jpg?direct&400 |}} ==== Programmes exemple ==== /* Blink led on PIN0 by Mischianti Renzo 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 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); } ==== Un schema ==== {{ :start:arduino:esp32:pcf8574_002_schema.jpeg?direct&600 |}} **ATTENTION : A0 , A1 , A2 , peuvent etre inversé !!! **