#include "Wire.h"
#define ADDR 0x20
uint8_t writeBits = 0x00;
uint8_t readBits = 0x00;
uint8_t writeByte = 0x00;
uint8_t readByte = 0x00;
bool ascending = true; // Controla si el conteo es ascendente o descendente
void init_pcf8574() {
Wire.begin(21, 22);
Wire.beginTransmission(ADDR);
uint8_t registers = writeBits;
Wire.write(~registers);
Serial.println("writed");
Serial.println(registers);
Wire.endTransmission();
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
writeBits = 0b11111111;
init_pcf8574();
delay(1000);
writeByte = 0;
}
void loop() {
Wire.beginTransmission(ADDR);
// Verificar el límite y cambiar la dirección
if (ascending) {
writeByte++;
if (writeByte == 0xFF) {
ascending = false; // Cambiar a descendente al alcanzar el máximo
}
} else {
writeByte--;
if (writeByte == 0x00) {
ascending = true; // Cambiar a ascendente al alcanzar el mínimo
}
}
Wire.write(writeByte);
Wire.endTransmission();
delay(100);
}