Zwei pcf8574 an Arduino

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

Easy for you to say!

You might try google translate and save us all the trouble of doing it ourselves.

a7

@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.

@1udo1 : Welche Lib nutzt du?

Ich installierte die Adafruit 1.1.1, die in der ID vom Arduino vorgegeben ist. #include <PCF8574.h> Eine andere LIB habe ich noch nicht entdeckt...

Ein Crossposter: Zwei PCF8574 am Arduino Code Adressierung - Mikrocontroller.net

Dann gib mal den GENAUEN Typ des PCF8574 an. Also den Wert der hinter der Bezeichnung aufgedruckt ist.

Obwohl fast baugleich gibt es da je nach Typ unterschiedliche Adressenbereiche.

Die richtigen Bereiche findest du im jeweiligen Datenblatt.

Alternativ : Setze irgend eine Adresse und lasse ein i2c-Scanner sie suchen.

Und poste mal den ganzen Code . Wieso lassen alle immer den Include-Bereich weg. ?!!?

Gruß

Pucki

Ich habe den PCF8574 4P A17255.101 KnG23083

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....

Wie hast Du A0, A1, A2 beschaltet? Die bestimmen den niederwertigen Teil der Adresse. Das Niederwertigste Byte ist R/W.

Gruß Tommy

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.

Kann er ja auch nicht!
Denn: Das sieht er nicht.

Wat schon mal nicht richtig ist. :wink: 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....

Ja?
Das hast du dir nicht einfach nur ausgedacht?

Warum?

Hallo,

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...

Danke, das probier ich mal....

Hallo,

wegen deinem vermeintlichen "Initialisierung A0 Pin" nochmal. Kann es sein du verwechselst das mit dem MCP23S17?

Das Datenblatt zählt!
Alles andere ist nur Bla Bla.

Bitte tue das, oder erzähle sowas nicht weiter, denn so führst du andere Unwissende in die Irre. Das willst du doch nicht, oder?

Nein!

1 Like

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....

1 Like