Hallo
Könnte es sein, dass python dafür einfach zu langsam ist, oder muss doch noch irgendwo ein Fehler vergraben sein?
Es geht um die Ansteuerung des 7-Segment Displays tm1637.
Ich habe dafür ja eine C++ Implementierung geschrieben. Siehe LED 4 Segment I2C Display
Und jetzt kämpfe ich mit einer davon abgeleiteten python implementierung, die aber leider zu keinem Ergebnis führt.
Da es hier offenbar um doch sehr schnelle Signalwechsel auf den beiden GPIO-Pins geht, befürchte ich, dass das nicht Funktionieren eben daran liegt, dass python einfach zu langsam dafür ist.
Könnte ich da richtig liegen?
Das wäre z.B. die Funktion, die _ein_Byte_ zum Display schiebt.
Da bleibt das Ding dann in der while-Schleife hängen, weil offenbar das ACK nicht kommt.
def writeByte( self, data ):
for i in range(0,7):
self.digitalWrite( self.__Clkpin, defines.LOW)
if(data & 0x01):
self.digitalWrite( self.__Datapin, defines.HIGH)
else:
self.digitalWrite( self.__Datapin, defines.LOW)
data = data >> 1
self.digitalWrite( self.__Clkpin, defines.HIGH)
#endfor
# wait for ACK
self.digitalWrite( self.__Clkpin, defines.LOW)
self.digitalWrite( self.__Datapin, defines.HIGH)
self.digitalWrite( self.__Clkpin, defines.HIGH)
self.pinMode(self.__Datapin,defines.INPUT)
count = 0
while(self.digitalRead(self.__Datapin)):
count += 1
if( count == 200):
self.pinMode(self.__Datapin, defines.OUTPUT)
self.digitalWrite( self.__Datapin, defines.LOW)
count = 0
self.pinMode(self.__Datapin,defines.INPUT)
# endif
# endwhile
self.pinMode(self.__Datapin, defines.OUTPUT)
# end writeByte
Alles anzeigen
Gruß
Franz