Good to Know Database

Raspbian Jessie: Ausgänge des PCF8574 ansteuern


Der PCF8574 ist ein 8 Bit I/O Expander welcher auch am I²C-Bus des Raspberry Pi's eingesetzt werden kann. Dadurch kann man den Raspberry Pi um weitere 8 digitale Eingänge beziehungsweise Ausgänge erweitern. Über die Pins A0 - A2 können Sie dem PCF8574 Baustein mit einer individuellen I²C-Adresse von 0x20 bis 0x27 konfigurieren. Das bedeutet Sie können bis zu 8 Bausteine direkt am I²C-Bus des Raspberry Pi's betreiben.

In dieser Anleitung wird anhand eines einfachen Lauflichts gezeigt wie Sie die 8 digitalen Ports des PCF8574 in einem Python Skript als Ausgänge verwenden können.

I²C-Bus des Raspberry Pi's aktivieren

Bevor Sie den I²C-Bus des Raspberry Pi's unter Raspbian verwenden können, müssen Sie diesen aktivieren. Wie dies durchgeführt wird können Sie in der Anleitung Raspbian Wheezy: I²C-Unterstützung im Device Tree aktivieren nachlesen.

PCF8574 Adresse am I²C-Bus herausfinden

Damit Sie den PCF8574 ansprechen können, benötigen Sie dessen I²C Slave Adresse. Diese können Sie wie bereits in der Anleitung Raspbian Wheezy: Teilnehmer am I²C-Bus identifizieren beschrieben mit dem Befehl i2cdetect herausfinden. Wie Sie der folgenden Ausgabe entnehmen können, besitzt in diesem Fall der PCF8574 die Adresse 0x20.

pi@raspberrypi ~ $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Benötigte Python Module installieren

Als zusätzliches Python Modul wird das Paket python-smbus benötigt. Dieses enthält die Funktionalitäten für den Zugriff auf den System Management Bus (SMBus) und kann wie unter Raspbian Jessie: Python Modul für den SMBus-Zugriff installieren beschrieben installiert werden.

Python Skript erstellen

Für das folgende Python Skript erstellen Sie mit einem Editor die Datei pcf8574_8-bit_output.py.

pi@raspberrypi ~ $ vi pcf8574_8-bit_output.py

Fügen Sie in diese Datei den folgenden Python Code ein und speichern die Datei ab.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#
# Creation:    07.06.2015
# Last Update: 18.02.2017
#
# Copyright (c) 2015-2017 by Georg Kainzbauer <http://www.gtkdb.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#

# import required modules
import smbus
import time

# define I2C bus
# 0: Raspberry Pi Model B Rev 1.0
# 1: Raspberry Pi Model B Rev 2.0, Model A, Model B+, Model A+, Raspberry Pi 2 Model B and  Raspberry Pi 3 Model B
I2C_BUS = 1

# define I2C address of PCF8574 8-Bit I/O expander
# depends on the hardware pins A0 - A2
I2C_ADDR = 0x20

# main function
def main():
  try:
    # init I2C bus
    i2c = smbus.SMBus(I2C_BUS)

    # set all output pins to 0
    i2c.write_byte(I2C_ADDR, 0x00)

    # initialize output variable
    output = 0x01

    for i in range (0, 8):
      # wait 1000ms
      time.sleep(1.0)

      # send output data to PCF8574
      i2c.write_byte(I2C_ADDR, output)

      # shift the output variable
      output = output << 1

  except KeyboardInterrupt:
    print("Execution stopped by user")

if __name__ == '__main__':
  main()

Nachdem Sie Das Python Skript erstellt haben, sollten Sie die Rechte der Datei anpassen.

pi@raspberrypi ~ $ chmod +x pcf8574_8-bit_output.py

Jetzt können Sie das Python Skript wie folgt ausführen.

pi@raspberrypi ~ $ sudo ./pcf8574_8-bit_output.py


Dieser Eintrag wurde am 19.02.2017 erstellt.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_36_2914.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2017 by Georg Kainzbauer