Hallo Zusammen
Gibt es eine Möglichkeit gleichzeitig
die Pins P0 bis P3 als Eingänge und
die Pins P4 bis P7 als Ausgänge zu schalten.
Lassen sich die Zustände der einzelnen Ports auch unabhängig voneinander schalten beziehungsweise abfragen?
In Netz habe ich nur Beispiele für jeweils Ein- oder Ausganskonfiguration gefunden also kein Gemischtbetrieb.
erst Versuche habe ich mit dem Sketchen gemacht:
PCF8574 Pins als Eingänge geschaltet:
/****************************************************************
*
* PCF8574 I²C-Bus-Expander als Eingabeport
*
****************************************************************/
#include <Wire.h>
#define I2C_ADDR 0x23 // I2C-Addresse
void setup() {
Serial.begin(9600);
// Für Leonardo
while (!Serial)
;
Wire.begin(I2C_ADDR);
Serial.println("Testprogramm PCF8574 I2C-Bus-Expander");
Serial.println("-------------------------------------");
Serial.println();
}
void loop() {
Wire.beginTransmission(I2C_ADDR);
Wire.write(I2C_ADDR | 0x01); // Alle Ports als Eingang
Wire.requestFrom(I2C_ADDR, 1); // Ein Byte (= 8 Bits) anfordern
while(Wire.available() == 0) // Warten, bis Daten verfügbar
;
Serial.print("Eingelesen: ");
Serial.println(Wire.read());
Wire.endTransmission(true);
delay(50);
}
PCF8574 Pins als Ausgänge geschaltet:
/****************************************************************
*
* PCF8574 I²C-Bus-Expander als Ausgabeport
*
****************************************************************/
#include <Wire.h>
#define I2C_ADDR 0x40 >> 1 // I2C-Addresse
void setup() {
Serial.begin(9600);
// Für Leonardo
while (!Serial)
;
Wire.begin(I2C_ADDR);
Serial.println("Testprogramm PCF8574 I2C-Bus-Expander");
Serial.println("-------------------------------------");
Serial.println();
}
void loop() {
Serial.println("Pins HIGH schalten");
Wire.beginTransmission(I2C_ADDR);
Wire.write(I2C_ADDR & 0xFE); // Alle Ports als Ausgang
Wire.write(0xFF); // Alle Pins HIGH
Wire.endTransmission(true);
delay(3000);
Serial.println("Pins LOW schalten");
Wire.beginTransmission(I2C_ADDR);
Wire.write(I2C_ADDR & 0xFE); // Alle Ports als Ausgang
Wire.write(0x00); // Alle Pins LOW
Wire.endTransmission(true);
delay(3000);
}
Vielen Dank schonmal im Vorraus Rudi