Hey,
du kannst eigentlich das Modul smbus in Python verwenden.
Die Handhabung ist sehr, sehr einfach:
https://pypi.python.org/pypi/smbus-cffi/0.1
Hallo,
ich ich bin auf der Suche nach einem kleinen Skript in dem ich das Ansprechen eines Ports des PCF8574 über Python nachvollziehen kann.
ich habe gefühlt das halbe Internet durchsucht aber nicht dergleichen gefunden. Die Beispiele die ich gefunden habe beziehen sich alle auf C.
Wäre toll wenn mir hier jemand weiterhelfen könnte
Daniel
Hey,
du kannst eigentlich das Modul smbus in Python verwenden.
Die Handhabung ist sehr, sehr einfach:
https://pypi.python.org/pypi/smbus-cffi/0.1
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hallo Kampi,
danke für deine Unterstützung.
Ich habe jetzt mal versucht mich zurecht zu finden. Im Prinzip müsste es in der Tat ganz easy sein einen Port anzusprechen.
Mit dem angehängten kleinen Programm sollte jetzt normaler weise an den Ausgänge etwas passieren:
Leider erhalte ich aber immer einen IO-Fehler den ich nicht nachvollziehen kann:Code:import smbus import time bus = smbus.SMBus(0) for a in range(0,256): bus.write_byte(0x39,a) time.sleep(0.1)
I2C detect.GIF Hits: 13 Größe: 2,9 KB ID: 27784" class="thumbnail" style="float:CONFIG" />
I2C python.GIF Hits: 12 Größe: 25,7 KB ID: 27785" class="thumbnail" style="float:CONFIG" />
Was für einen Denkfehler mache ich?
********************************
Habe den Fehler gefunden!
bei der Revision 2 der B Veriante des Rapberry Pi mus der Code so lauten:
Code:import smbus import time bus = smbus.SMBus(1) for a in range(0,256): bus.write_byte(0x39,a) time.sleep(0.1)
Geändert von Duesentrieb (15.03.2014 um 15:33 Uhr)
Genau
Wobei du auch den Bus 0 hast. Der Fehler kam daher, weil am Bus 0 kein Device mit der Adresse angeschlossen ist.
Hi,
jetzt habe ich aber gleich noch eine Frage die du mir sicher ganz schnell beantworten kannst
Mit der Angabe einer Dezimalzahl werde ich nicht sehr weit kommen wenn ich die Ports einzel ansprechen möchte.
Gibt es eine einfacher Möglichkeit, einen Port zu aktivieren/deaktivieren ohne die anderen zu verändern?
Hey,
ja, du musst die Ports einlesen und dann den Wert verändern.
Beispiel:
Bei deinem PCF sind die Pins 0, 1 und 2 gesetzt. Jetzt willst du Pin 3 mit setzen, also ließt du den Wert ein und bekommst dann als Ergebnis 0x07 (0000 0111).
Zu diesem Ergebnis addierst du jetzt 2^3, also 8. Dabei steht die 3 für den Pin den du schalten willst. Das Ergebnis der Rechnung ist 0x0F (0000 1111) und das sendest du wieder an den PCF zurück.
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hallo Kampi,
das ist ja ein ganz schöner Rechenaufwand.
Ich mache mir jetzt gerade Gedanken um die Eingabe.
Muss das wirklich so aufwendig sein...
Ich möchte insgesamt 16 Taster einlesen und 16 Relais ansteuern.Code:import smbus from time import sleep bus = smbus.SMBus(1) Adresse = [1, 2, 4, 8, 16, 32, 64, 128] def main(): try: while True: for n in Adresse: impuls1 = bus.read_byte_data(0x3a, n) if impuls1 < 1: if n == 1: if Taster1 == 1: Taster1 = 0 else: Taster1 = 1 elif n == 2: if Taster2 == 1: Taster2 = 0 else: Taster2 = 1 elif n == 4: if Taster3 == 1: Taster3 = 0 else: Taster3 = 1
Auch weis ich im Moment nochnicht wie ich einen dauerhaften Kontakt behandeln muss.
Hast du noch ein oder zwei Tips für mich?
Hey,
wie ist den was beschaltet? In deiner if-Abfrage stehen Taster drin, aber was sind das für welche?
Generell verstehe ich auch den Sinn deiner for-Schleife nicht....
Probier es mal so:
Code:import smbus bus = smbus.SMBus(1) Status = bus.read_byte(0x39) if(Status == 1): print "Pin 1 High" else: print "Pin 1 Low" if(Status == 2): . . .
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hallo,
und wieder vielen Dank! Ich saß gestern den ganzen Tag drann und habe rumgespielt und ausprobiert. Irgend wann sieht man aber den Wald vor Bäumen nicht mehr und dann kommt so etwas raus.
Na dann mal weiter, jetzt wo ich wieder auf dem rechten Weg bin
Ja das passiert schon mal
Fang erst einmal klein an und probier das Prinzip aus....wenn du verstanden hast wie es geht wende das Prinzip auf deine Lösung an (wobei der Codeschnipsel den ich dir geschickt habe nicht wirklich getestet wurde...also nicht wundern, falls er nicht 100%ig funktioniert )
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Lesezeichen