======== 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é !!! **