Aus Raspberry Pi Geek 03/2016

Mehr I/O-Ports bereitstellen mit dem PCF8574 (Seite 2)

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. 

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben