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, funktionieren nicht.
Die unten aufgeführten Codes sind im Adafruit „PCF8574.h“ nicht implementiert.
Es kommt die Meldung "class PCF8574' has no member named 'pinMode'"
Ich verstehe die Aussage nicht.
Kann jemand helfen?
1
PCF8574expander1(0x20);// PCF8574 an Adresse 0x20
2
PCF8574expander2(0x21);// PCF8574 an Adresse 0x21
3
4
expander1.pinMode(1,OUTPUT);// PCF8574 Modul 1
5
expander2.pinMode(1,OUTPUT);// PCF8574 Modul 1
6
7
// Set pin 1 on PCF8574 expander1 to HIGH (turn on LED)
Nur für C Jünger usw.
Freunde des C++ kennen (mehrfach)überladene Funktionen und Methoden zur Genüge.
Prominentes und wohl am häufigsten genutztes Arduino Beispiel: Print::print()
Ja, das ist richtig. Die SDA und SCL, so ist es richtig, sind alle miteinander verbunden. Mit einem einzelnen PCF8574 und dem Nano funktionieren alle Ansteuerungen. Bloß will es nicht gelingen einen zweiten PCF8574 so einzubinden, dass er unabhängig vom ersten PCF8575 per Adresse angesteuert werden kann. Die Headerdatei habe ich mir angesehen. Kann aber nicht ersehen, wo ich sie editieren muss, um die Fehlermeldung zu eliminieren. So viel Kenntnisse habe ich nicht.
// Set pin 1 on PCF8574 expander1 to HIGH (turn on LED)
Die PCF8574 haben Open-Drain Ausgänge mit etwa 50kΩ Pull-Up Widerstand. Sie können daher nur bei LOW Pegel einige Milliampere liefern. Beim HIGH Pegel fließt nur sehr wenig Strom, damit wird die LED nur schwach glimmen.
Fehlermeldungen habe ich nicht gelöscht. Habe verschiedene Codes versucht, nachdem ich diverse Beiträge, ob falsch oder richtig ausprobiert habe. Ich weiss es einfach nicht, wie ich die beiden PCF8574 adressieren muss, um die LEDs an den jeweiligen Ports zu steuern.....
/* PCF8574 does not support different pin modes. Input mode is just a HIGH state (high state is always pull-up). It also does not support pull-down. */
2
3
void pinMode(PCF8574 &expander, int pin, int mode) {
Ich weiss es einfach nicht, wie ich die beiden PCF8574
adressieren muss, um die LEDs an den jeweiligen Ports zu
steuern.....PCF8574 expander1(0x20); // PCF8574 an Adresse 0x20
PCF8574 expander2(0x21); // PCF8574 an Adresse 0x21
Scheint doch so richtig zu sein.
Nur am PCF8574 muss du die Adresse noch einstellen. Physikalisch, nicht im Code.
Habe von +5V über Widerstand und die LED den Pin4, also P0, angeschlossen. Das funzt. Die LEDs leuchten am ersten PCF8564 wie gewünscht.
Die angesteuerten LEDs, auch am zweiten PCF8574, leuchten aber synchron an beiden PCF8574, obwohl ich sie unabhängig ansteuern will. Aber es liegt an der Adressierung, die ich nicht auf die Kette kriege.
Und wegen des falschen Codes kann ich keine andere Adresse, 0x21, einstellen. Standardmässig ist in der Headerdatei ja 0x20 eingetragen.
Die angesteuerten LEDs, auch am zweiten PCF8574, leuchten aber synchron
an beiden PCF8574, obwohl ich sie unabhängig ansteuern will.
Du musst eins der Module hardwaremäßig auf 0x21 konfigurieren, also dessen A0 Eingang auf HIGH legen. Solange du das nicht machst, fühlen sich beide Module unter der Adresse 0x20 angesprochen.
Du musst die Pins mit HIGH oder LOW belegen, nicht "in der Luft" hängen lassen.
Das ergibt sich doch schon aus der Zeichnung auf Seite 1 im Datenblatt.
Weiterhin steht in den "Electrical Characteristics" dass dabei maximal 5 µA fließen, also ein Leckstrom. Wenn der Chip interne Pull-Down Widerstände hätte, würden diese Eingänge mindestens 100x so viel Strom aufnehmen. Weiterhin ist in der Tabelle "Address Reference" der Zustand Z (unbeschaltet) nicht vorgesehen.
Datenblatt hatte ich bisher nicht. Werde aber die Pins mal auf Potential legen.
Bleibt aber immer noch die passende Adressierung. Die wurde ja im Compiler angemeckert. Es gab ja einige Anregungen, was den Code angeht. Werde mal aus den vorausgegangenen Antworten die Vorschläge versuchsweise umsetzen.
Diese Vorgehensweise solltest du dir sofort abgewöhnen.
Bleibt aber immer noch die passende Adressierung.
Die wurde ja im Compiler angemeckert.
Auch da frage ich mich, wie man auf die Idee kommt, die Doku nicht zu lesen.
Es ist doch alles so leicht im Internet verfügbar !!!!!
Als ich mit dem Hobby anfing, musste man Briefe nach Japan schicken und auf Antwort hoffen. Nicht selten bekam man dann schlechte Kopien von Telefaxen, bei denen man froh sein konnte, wenn sie vollständig lesbar waren.
Diese Vorgehensweise solltest du dir sofort abgewöhnen.
Na immerhin hat sich wieder mal ein Schwachkopf gefunden, der einen Link mit 420 Zeichen Lebenslauf anhängt und damit den Textumbruch im Browserfenster versaut.