Hallo,
ich möchte am Arduino zwei PCF8574 mit den Adressen 0x20 und 0x21 anschließen. An Pin 1 ist bei beiden PCF8574 jeweils nur eine LED angeschlossen. Sie sollen im Abstand einzeln mit einer Sekunde Pause auf HIGH und LOW angesteuert werden.
Alle Versuche, den zwei PCF8574 die Adressen zuzuweisen, funktioniert nicht.
Dies unten aufgeführten Codes sind im Adafruit „PCF8574.h“ nicht implementiert.
Es kommt die Meldung "class PCF8574' has no member named 'pinMode'"
Kann jemand helfen?
PCF8574 expander1(0x20); // PCF8574 an Adresse 0x20
PCF8574 expander2(0x21); // PCF8574 an Adresse 0x21
expander1.pinMode(1, OUTPUT); // PCF8574 Modul 1
expander2.pinMode(1, OUTPUT); // PCF8574 Modul 1
// Set pin 1 on PCF8574 expander1 to HIGH (turn on LED)
expander1.digitalWrite(1, HIGH); // PCF8574 Modul 1
expander2.digitalWrite(1, HIGH); // PCF8574 Modul 2
@1udo1 I have moved your post to the German section of the forum. In most forum sections, all questions should be in English. Please take care in future.
Ich check mal, das Datenblatt. Bin mir aber nicht sicher, ob ich die nötige Information dort finden werde. Man muss ja den richtigen Abschnitt finden, der etwas über die Adressierung aussagt. Da bin ich nicht so fit....
für das erste Modul habe ich alle "A" offen gelassen, entspricht 0x20 und das zweite Modul ist A0 auf "HIGH". Aber das hat der Compiler nicht angemeckert. Es ist der falsche Code für die Adressierung.
Wat schon mal nicht richtig ist. Es sei denn Du hast nen Sheeld. Wenn nicht gehören für 0X20 alle an GND. Mach mal für alle ungereimtheiten ein Foto vom Aufbau.
Habe alle Adressen mit Pullupwiderständen beschaltet. Die Schaltung mit den 2 PCF8574 läuft wie gewünscht. Musste erst irgendwo lesen, dass die Adresse 0x21, die ich eingestellt hatte, nicht funktioniert, weil A0 noch eine andere Funktion hat und zwingend auf GND gehalten werden muss. Mit Adresse 0x22 hat die schaltung funktioniert....
A0...A2 haben keine andere Funktion, wie eine Adresse einzustellen. Vermutlich kalte Lötstelle o.ä. Beim nächsten Mal nimmst du einen I2C Adress-Scanner, um zu prüfen, ob alle gewünschten Adressen verfügbar bzw. vorhanden sind.
Habe ich irgendwo gelesen, dass A0 auch für Initialisierung oder so etwas herangezogen wird. hab es nicht weiter verfolgt. Gab Sinn, weil der PCF8574 mit 0x21 nicht angesprochen wurde. Aber mit allen anderen adressen. verstehe ich auch nicht, scheint aber was dran zu sein. ist nicht mehr so wichtig für mich, weil beide PCF8574 mit 0x20 und 0x22 funktionieren. projekt läuft erfolgreich...
Habe datasheet nochmal genauer angesehen. Es ist das Read/Write Bit innerhalb der Slaveadresse, das mit "Null" beschrieben ist, je nach Lesen oder schreiben. Blicke jetzt durch... das projekt funzt, wie es soll... "A0" ist eben nicht Bit 0 in dem Byte. das wusste ich vorher nicht. Aber jetzt ist der Durchblick gekommen. danke für deine Antworten....