Duesentrieb
05.04.2014, 21:17
Hallo,
ich möchte die Ports erweitern und habe mir deshalb eine kleine Schaltung mit einem I2C Port gebastelt und kann nun 32 Ports als I/O nutzen.
Einziges Problem was ich habe ich das Tasterprellen.
Im Prinzip müsste ich eine Zeit einprogrammieren die der Taster gedrückt sein muss um einen Ein/Ausschaltimpuls zu geben.
Ich komme da aber nicht weiter. Vielleicht kennt hier jemand das Problem und hat eine ganz einfach Lösung.
Als I2C Treiber nutze ich einen PCF8574
Hier mein Programmausschnitt der so weit auch läuft:
#Port A_ein_aus
vari_a = 0
for n in Adresse:
vari_a = vari_a + 1
Status = bus.read_byte_data(0x3a,n)
if Status < n:
if inputPorta[vari_a]> Status:
n_out1 = n_out1 - n
bus.write_byte(0x38,n_out1)
inputPorta[vari_a] = 0
istzeitPorta[vari_a] = 0
else:
n_out1 = n_out1 + n
#print "geschaltet out1: ", n_out1, " - ", vari_a
bus.write_byte(0x38,n_out1)
inputPorta[vari_a] = 1
istzeitPorta[vari_a] = time.time()
ich möchte die Ports erweitern und habe mir deshalb eine kleine Schaltung mit einem I2C Port gebastelt und kann nun 32 Ports als I/O nutzen.
Einziges Problem was ich habe ich das Tasterprellen.
Im Prinzip müsste ich eine Zeit einprogrammieren die der Taster gedrückt sein muss um einen Ein/Ausschaltimpuls zu geben.
Ich komme da aber nicht weiter. Vielleicht kennt hier jemand das Problem und hat eine ganz einfach Lösung.
Als I2C Treiber nutze ich einen PCF8574
Hier mein Programmausschnitt der so weit auch läuft:
#Port A_ein_aus
vari_a = 0
for n in Adresse:
vari_a = vari_a + 1
Status = bus.read_byte_data(0x3a,n)
if Status < n:
if inputPorta[vari_a]> Status:
n_out1 = n_out1 - n
bus.write_byte(0x38,n_out1)
inputPorta[vari_a] = 0
istzeitPorta[vari_a] = 0
else:
n_out1 = n_out1 + n
#print "geschaltet out1: ", n_out1, " - ", vari_a
bus.write_byte(0x38,n_out1)
inputPorta[vari_a] = 1
istzeitPorta[vari_a] = time.time()