Go Down

Topic: PCF8574P - Verständliches Beispiel gesucht (Read 2556 times) previous topic - next topic

HTML-Fan

Jan 05, 2019, 11:19 am Last Edit: Jan 05, 2019, 11:20 am by HTML-Fan
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
Code: [Select]
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.
Code: [Select]
#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:
Code: [Select]
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.

agmue

Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

SpaghettiCode

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é

HTML-Fan

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

HotSystems

#4
Jan 05, 2019, 12:25 pm Last Edit: Jan 05, 2019, 12:30 pm by HotSystems
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.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Serenifly

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

HTML-Fan

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.

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.

HotSystems

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".
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

agmue

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.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

HTML-Fan

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

HotSystems

Ja, ich meine, es war der oder einer mit einer ähnlichen Bezeichnung.
Ja.....welcher denn ?
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

agmue

Es gibt auch noch MCP23008 mit acht anstelle sechzehn IOs.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

HTML-Fan

#13
Jan 05, 2019, 08:06 pm Last Edit: Jan 05, 2019, 08:08 pm by HTML-Fan
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.

HotSystems

#14
Jan 05, 2019, 08:11 pm Last Edit: Jan 06, 2019, 05:30 pm by HotSystems
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.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Go Up