Listing 1
$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3f
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
$ i2cset -y 1 0x3f 0x99
$ i2cget -y 1 0x20
0x00
Falls dabei bereits sonderbare Fehler auftreten, ist vermutlich der I2C-Treiber nicht geladen. Das holen Sie mit gpio load i2c manuell nach, dann sollte alles wie gewünscht klappen.
Testprogramm
Das Testprogramm (Listing 2) fällt sehr einfach aus: Zuerst baut es die Verbindung zum Bus auf, danach erzeugt es die Geräte (Devices) für den In- und Output. Anschließend liest es einfach den Wert vom Mäuseklavier ein und gibt ihn auf der 7-Segment-Anzeige wieder aus – das war’s.
Um das Programm zu bauen und zu starten, verwenden Sie das Tool J4pi (Listing 3). Sie starten das Programm testhalber über den Unix-Befehl Watch:
$ watch pi4j -r PCF8574
Das wirkt zwar etwas umständlich, lässt sich aber nicht vermeiden, da das Beispielprogramm auf eine Schleife verzichtet.
Listing 2
import com.pi4j.io.i2c.I2CBus;
import com.pi4j.io.i2c.I2CDevice;
import com.pi4j.io.i2c.I2CFactory;
public class PCF8574 {
private static final int i2cBus = 1;
private static final int addressIn = 0x20;
private static final int addressOut = 0x3f;
public static void main(String[] args) {
try {
I2CBus bus=I2CFactory.getInstance(I2CBus.BUS_1);
I2CDevice devIn = bus.getDevice(addressIn);
I2CDevice devOut = bus.getDevice(addressOut);
devOut.write((byte)devIn.read());
}
catch(Exception e) {
System.out.println(e.toString());
}
}
}
Listing 3
$ pi4j -c PCF8574.java + javac -classpath '.:classes:*:classes:/opt/pi4j/lib/*' -d . PCF8574.java $ pi4j -r PCF8574 + sudo java -classpath '.:classes:*:classes:/opt/pi4j/lib/*' PCF8574
Fazit
Der PCF8574 darf in keiner RasPi-Bastelkiste fehlen: Er bietet eine einfache Möglichkeit, die Anzahl der I/Os des Raspberry Pi zu erhöhen. Bis zu 128 zusätzliche Pins lassen sich mit seiner Hilfe einrichten – ein wichtiger Baustein für anspruchsvolle Projekte also. Falls Sie ihn nicht über Java ansteuern wollen, bedienen Sie ihn einfach mit Konsolen-Tools. Im DIL-Gehäuse kostet der PCF8574 knapp 2 Euro, die SMD-Version bekommen Sie schon für etwa die Hälfte.
Infos
- Datenblatt PCF8574: http://www.nxp.com/documents/data_sheet/PCF8574.pdf
- Datenblatt CD4543: http://www.ti.com/lit/ds/symlink/cd4543b.pdf
- Reichelt-Online-Shop: http://www.reichelt.de





