ich veerwende diesen Code für Arduino C/C++:
Code:
#include <Wire.h>
#define ADDR_PCF8574 0x30
void setup() {
Wire.begin();
writei2cbyte(ADDR_PCF8574, 0xff);
//...
}
void writei2cbyte(int addr, byte data) {
Wire.beginTransmission(addr);
Wire.write(data);
Wire.endTransmission();
delay(5);
}
uint8_t readi2cbyte(uint8_t addr, uint8_t reg) {
uint8_t bdata;
Wire.beginTransmission(addr);
Wire.write(reg); // target data register number
Wire.endTransmission();
Wire.requestFrom(addr, reg); // Request 1 bytes from PCF8574
while(Wire.available() < 1); // Wait for byte to become available
bdata = Wire.read();
return(bdata);
}
//...
uint8_t bitmask = readi2cbyte(ADDR_PCF8574, 1); // read all btn states (bitmask) at reg 1
if(bitRead(bitmask,1) {...}
else
if(bitRead(bitmask,2) {...}
//...
Lesezeichen