PCF8574P - Verständliches Beispiel gesucht

Hallo!
Ich habe wie immer ein Problem.
Ich finde einfach, wie der Titel schon spoilert, kein Beispiel, was mein Port-Expander PCF8574P steuern kann. In einem Arduino-Buch habe ich ein Beispiel gefunden, wo die Steuerung nur aus

void portExpander(byte addr, byte data){
  Wire.beginTransmission(addr);
  Wire.write(data);
  Wire.endTransmission();
}

besteht. Ich war ganz froh, ein Beispiel, was für mich verständlich und ohne Library außer Wire ist, gefunden zu haben. Ich war es. Als ich ein bisschen rumgetüftelt, wegen meiner Datenblattophobie über den I2C-Scanner die Adresse herausgefunden und folgenden Sketch auf meinen Nano hochgeladen habe, lief garnichts.

#include <Wire.h>
void setup() {
  Serial.begin(9600);
  Wire.begin();
}

void loop() {
  while(Serial.read() != -1);
  while(!Serial.available());
  String data = "";
  while(Serial.available()){
    data += char(Serial.read());
    delay(2);
  }
  Serial.print(data.toInt());
  Serial.print(" Error:");
  Serial.println(portExpander(0x20, data.toInt()));
}
byte portExpander(byte addr, byte data){
  Wire.beginTransmission(addr);
  Wire.write(data);
  return Wire.endTransmission();
}

Auszug aus dem seriellen Monitor:

0 Error:0
255 Error:0
1 Error:0
127 Error:0

Der IC ist richtig verbunden, sonst hätte der Scanner ja garnicht die Adresse erkannt, die Pins A0, A1 und A2 sind alle mit dem Minuspol verbunden. An den Pin P4 (9) habe ich einen aktiven Summer angeschlossen, den Anode am Portexpander, die Kathode zum GND vom Arduino. Der klappt, der Summer, den würde man hören.
Warum summt mein Summer nicht? Bei 255 müssten doch alle Pins anspringen, oder bei 0.
Ich habe im internet gesucht, aber keine einzelnen beispiele, sondern nur Libs gefunden.

Schaue mal hier: Anleitung: PCF8574 als I2C-Input am Arduino

Hi,

was den PCF8574P selbst betrifft: Darauf achten, daß der nicht als Source dienen kann. Du musst damit immer den GND für Deinen Verbraucher schalten. Beispiel LED: Anode über strombegrenzenden Widerstand an Vcc und die Kathode an den Pin des PCF8574P.

Gruß André

Ah, jetzt klappt's. Danke! Kann man den Expander auch als Input benutzen? Ich meine, da was gelesen zu haben.

HTML-Fan: Ah, jetzt klappt's. Danke! Kann man den Expander auch als Input benutzen? Ich meine, da was gelesen zu haben.

Ja, auch als Input geht. Du kannst beispielsweise 4 Inputs und 4 Outputs verwenden. Wie, das kannst du ja in agmues Link nachlesen.

Das IC ist sehr simpel. Für Output schreibt man ein einzelnes Bytes. Für Input liest man ein einzelnes Byte. Mehr gibt es nicht

HotSystems: Wie, das kannst du ja in agmues Link nachlesen.

Oh, den Link habe ich ja vollständig überlesen! Sorry. Mann, ich muss unbedingt wieder einstellen, dass ich für jede Nachricht eine Mail kriege.

Okay, man muss einfach nur lesen statt schreiben. Ich bin irgendwie davon ausgegangen, dass man noch sowas wie pinMode benutzen muss. In einem anderen Buch habe ich nämlich mal was von einem anderen Baustein gelesen.

HTML-Fan: Okay, man muss einfach nur lesen statt schreiben. Ich bin irgendwie davon ausgegangen, dass man noch sowas wie pinMode benutzen muss. In einem anderen Buch habe ich nämlich mal was von einem anderen Baustein gelesen.

Du solltest die Bausteine nicht vermischen und immer nur den ansprechen, den du vor dir hast. Wenn du eine Library dafür nutzt, geht natürlich einiges anders. Da gibt es dann evtl. auch "Pinmode".

HTML-Fan: In einem anderen Buch habe ich nämlich mal was von einem anderen Baustein gelesen.

Könnte der MCP23017 sein. Der kann auch einen Interrupt auslösen, wenn sich ein Eingang ändert. Gibt es für I2C und SPI.

Ja, ich meine, es war der oder einer mit einer ähnlichen Bezeichnung.

HTML-Fan: Ja, ich meine, es war der oder einer mit einer ähnlichen Bezeichnung.

Ja.....welcher denn ?

Es gibt auch noch MCP23008 mit acht anstelle sechzehn IOs.

HotSystems:
Ja…welcher denn ?

Weiß ich nicht, das Buch war geliehen, ich hatte damals nicht geglaubt, mit den Expandern mal was anfangen zu können und habe mir dem entsprechent nicht die Bezeichnung aufgeschrieben. Außerdem sind die, die ich habe, günstiger und man kann damit normale LCDs zu I2C-LCDs umbasteln - für 25 Cent. Ich bin mit meinen ICs für’s Erste auf jeden Fall zufrieden.

HTML-Fan: Weiß ich nicht, das Buch war geliehen, ich hatte damals nicht geglaubt, mit den Expandern mal was anfangen zu können und habe mir dem entsprechent nicht die Bezeichnung aufgeschrieben. Außerdem sind die, die ich habe, günstiger und man kann damit normale LCDs zu I2C-LCDs umbasteln - für 25 Cent. Ich bin mit meinen ICs für's Erste auf jeden Fall zufrieden.

Na dann ist doch alles gut und wir müssen nicht weiter rätseln. Ich setze den PCF8574 gerne und mehrfach ein. Da machst du alles richtig.

HotSystems: Da machst du alles richtig.

Und wenn man's mal nicht richtig macht, ist das auch nicht weiter schlimm, die Dinger kosten ja nix.

Hi

Für die Anderen gibt's zur Not Google als Wegbegleiter zum Datenblatt. Sehe darin nun kein größeres Problem.

Eigentlich im Gegenteil - bevor ich groß auf der Platte nach dem PDF suche (~/Dokumente), spucken mir Google und Konsorten das PDF binnen Sekunden auf den Monitor.

MfG

HTML-Fan: Und wenn man's mal nicht richtig macht, ist das auch nicht weiter schlimm, die Dinger kosten ja nix.

Mal nicht so verschwenderich. Es geht nur darum, das es funktioniert.

Für LCDs nimmt man die als fertige Backpacks zum direkten Verlöten. Die haben aber nicht alle Anschlüsse direkt herausgeführt. Als I/O Modul haben sie alle 8 Anschlüsse rausgeführt und sind so auch ideal um 4x4 Keypads anzubinden. Gibt sogar ne Lib dafür. Nur so als Info für die, die das noch nicht wissen.

Diese fertigen Backpacks kosten aber schon 60 Cent - der 25-Cent-IC + ein Stück Lochrasterplatine erscheinen mir da günstiger.