Hallo,
ich habe ein kleines Problem mit einem I2C LCD 2004 Modul basierend auf einem PCF8574 Port-Expander.
Das kleine Testprogramm läuft eigentlich ohne Probleme. Nur wenn ich den Code in einer "while True" Schleife laufen lasse, bricht es nach 10, 50, 300 oder mehr Loops, mit einer Fehlermeldung ab. Der Fehler wird normal nur dann erzeugt, wenn man die falsche I2C-Adresse angibt.
Traceback (most recent call last):
File "aquarium.py", line 54, in <module>
lcd.setPosition(3, 0)
File "/home/pi/myproject/i2clibraries/i2c_lcd.py", line 79, in setPosition
self.command(self.CMD_DDRAM_Set + address)
File "/home/pi/myproject/i2clibraries/i2c_lcd.py", line 156, in command
self._write(data)
File "/home/pi/myproject/i2clibraries/i2c_lcd.py", line 113, in _write
self._enable(i2c_data)
File "/home/pi/myproject/i2clibraries/i2c_lcd.py", line 150, in _enable
self.bus.write_byte(data)
File "/home/pi/myproject/i2clibraries/i2c.py", line 14, in write_byte
writing_bytes(self.addr, *bytes))
File "/usr/local/lib/python3.2/dist-packages/quick2wire_api-0.0.0.3-py3.2.egg/quick2wire/i2c.py", line 74, in transaction
ioctl(self.fd, I2C_RDWR, ioctl_arg)
IOError: [Errno 5] Input/output error
Alles anzeigen
Hier noch das Testprogramm:
#!/usr/bin/env python3
# programm zur Ansteuerung des LCD-Displays von ARDUINO C2004a
from i2clibraries import i2c_lcd
from time import sleep
# Configuration parameters
# I2C Address, Port, Enable pin, RW pin, RS pin, Data 4 pin, Data 5 pin, Data 6 pin, Data 7 pin, Backlight pin (optional)
lcd = i2c_lcd.i2c_lcd(0x27,1, 2, 1, 0, 4, 5, 6, 7, 3)
# If you want to disable the cursor, uncomment the following line
lcd.command(lcd.CMD_Display_Control | lcd.OPT_Enable_Display)
i=0 # Zählt die Loops in der While-Schleife
while True:
i=i+1
print ("Show the loop")
lcd.setPosition(1, 1)
lcd.writeString("Loop : " + str(i))
sleep(0.005)
lcd.setPosition(2, 1)
lcd.writeString("Zeit :" + str(i))
sleep(0.005)
lcd.setPosition(3, 1)
lcd.writeString("Datum : " + str(i))
sleep(0.005)
lcd.setPosition(4, 1)
lcd.writeString("Temp C: " + str(i))
sleep(0.005)
lcd.backLightOn()
sleep (5)
print ("loop: ", i)
Alles anzeigen
Alle anderen I2C-Devices (TMP102 und ein Relais-Modul) laufen ohne eine Fehlermeldung zu erzeugen.
Ich habe schon folgendes ohne Erfolg getestet:
- die Verkabelung geprüft
- ein zweites Display angehängt
- die Bautrate von 350000 auf 250000 geändert
- die "Sleep-Zeit" erhöht
Im meinem Programm zur Aquariensteuerung fange ich zur Zeit den Fehler mit [font="Courier New"]Try[/font] und [font="Courier New"]except[/font] ab - sollte aber nicht zu einem Dauerzustand werden
Hat von Euch jemand eine Idee wo ich den Fehler noch suchen könnte?
Vielen Dank im Voraus und einen schönen Sonntag,
Helle62