Hola. Hace mucho que no me tomaba un minuto para dejarles material que pudiera “simplificarles” su tiempo y que les pueda ser de utilidad.
Tiempo atrás; dejé material acerca de este “genial” componente; pero esto que les quería dejar hoy. Es mucho más (universal) para comenzar a comprender como se podría usar; en cualquier caso o situación.
El objetivo es Presionar 4 (cuatro) teclas y encender 4 Leds por medio del I2C de Arduino.
Este programa te permite de un modo muy básico usarlo con su librería.
#include <PCF8574.h>
PCF8574 pcf8574(0x20);
uint8_t PinEntrada=0;
void setup(){
Serial.begin(9600);
pcf8574.begin();
pcf8574.pinMode(P0,INPUT);
pcf8574.pinMode(P1,INPUT);
pcf8574.pinMode(P2,INPUT);
pcf8574.pinMode(P3,INPUT);
pcf8574.pinMode(P7,OUTPUT); pcf8574.digitalWrite(P7,LOW);
pcf8574.pinMode(P6,OUTPUT); pcf8574.digitalWrite(P6,LOW);
pcf8574.pinMode(P5,OUTPUT); pcf8574.digitalWrite(P5,LOW);
pcf8574.pinMode(P4,OUTPUT); pcf8574.digitalWrite(P4,LOW);
Serial.println("Comenzando");
}
void loop(){
// Leo los Pines 0, 1, 2, 3 y Prendo los Ledes 4, 5, 6 y 7
for (int k=0; k<4; k++){
PinEntrada=pcf8574.digitalRead(k);
if (PinEntrada!=0){
String kk=(String) k;
Serial.print("Puerto "+kk+" >");
Serial.println(PinEntrada);
pcf8574.digitalWrite((7-k),1);
delay(250);
pcf8574.digitalWrite((7-k),0);}
}
}
Este programa ya busca exigir (por medio de la clasificación de Entradas y Salidas) la misma tarea que la del anterior. Permitiendo ver la “versatilidad” a la hora de realizar nuestro Sketch.
#include <PCF8574.h>
PCF8574 Entrada(0x20);
PCF8574 Salidas(0x20);
uint8_t PinEntrada=0;
void setup(){
Serial.begin(9600);
Entrada.begin();
Salidas.begin();
Entrada.pinMode(P0,INPUT);
Entrada.pinMode(P1,INPUT);
Entrada.pinMode(P2,INPUT);
Entrada.pinMode(P3,INPUT);
Salidas.pinMode(P7,OUTPUT); Salidas.digitalWrite(P7,LOW);
Salidas.pinMode(P6,OUTPUT); Salidas.digitalWrite(P6,LOW);
Salidas.pinMode(P5,OUTPUT); Salidas.digitalWrite(P5,LOW);
Salidas.pinMode(P4,OUTPUT); Salidas.digitalWrite(P4,LOW);
Serial.println("Comenzando");
}
void loop(){
// Leo los Pines 0, 1, 2, 3 y Prendo los Ledes 4, 5, 6 y 7
for (int k=0; k<4; k++){
PinEntrada=Entrada.digitalRead(k);
if (PinEntrada!=0){
String kk=(String) k;
Serial.print("Puerto "+kk+" >");
Serial.println(PinEntrada);
Salidas.digitalWrite((7-k),1);
delay(250);
Salidas.digitalWrite((7-k),0);}
}
}
Librería necesaria para aplicar estos Sketch:
https://www.arduino.cc/reference/en/libraries/pcf8574/Cabe aclarar que también se puede usar
sin la Librería pcf8574; simplemente necesitas trabajar con los canales de la librería
Wire.h, es fácil; pero realmente innecesario romperte los cuernos con las señales binarias; “B10011100” pero si te gusta; también puede lograr lo mismo.
Espero que le sirva como lo ha sido en mi caso personal. Un cordial saludo.