Genau
Wobei du auch den Bus 0 hast. Der Fehler kam daher, weil am Bus 0 kein Device mit der Adresse angeschlossen ist.
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
Die Nervensäge schon wieder
Ich habe bisher immer die einzelenen Bits auf Higth oder Low ausgewertet und dazu >> Status = bus.read_byte_data(0x39,n)<< verwendet.
Wie du mir richtiger weise erklärt hast, kann ich das auch einfacher haben.
Alllerdings bekomme ich mit >> Status = bus.read_byte(0x39)<< immer eine 128, also alle Bits auf Hight angezeigt obwohl ich andere Signale anlege.
Woran kann das liegen?
Lesezeichen