Ich verwende die Pigpio-Bibliothek (Python 3) und gebe ein Datenbyte über den I2C-Bus aus (siehe Beispiel). Nun kann ich einen Ausgabewert dezimal oder als Hexwert ausgeben.
Das ist ok. Wenn ich aber den Wert in einer Schleife incrementiere und dafür eine Variable verwende, kann ich diese Variable nicht in der Ausgabezeile schreiben.
Gibt es eine Möglichkeit, dies besser zu lösen.
Danke
Frank-86
#!/usr/bin/python3
# coding = utf-8
# PCF8574 Output
# 29.09.2019
import time, sys
import pigpio
pi = pigpio.pi()
# Initialisierung
h = pi.i2c_open(1, 0x20) # open device at address 0x20 on bus 1
time.sleep(1)
for i in range (0,10):
#pi.i2c_write_byte(1, 0xfe) # Datenbyte für Ausgabe
pi.i2c_write_byte(1, i) # Datenbyte für Ausgabe
time.sleep(1)
pi.i2c_close(h) # close device
try:
while True:
time.sleep(5)
except KeyboardInterrupt:
pi.stop()
sys.exit()
Sorry, wusste leider nicht, wie ich das kleine Programm einhängen kann.
Ausgabe PCF8574 mit Pigpio (Wert in Schleife incrementieren)
Ich verstehe nicht, was Du für ein Problem hast. Wo willst Du was wie ausgeben? An dem Code kann ich das nicht erkennen.
Die Fehlerbehandung ist falsch und sollte wohl so aussehen:
Die Fehlerbehandung ist falsch und sollte wohl so aussehen:
Code: Alles auswählen
#!/usr/bin/python3
# PCF8574 Output
# 29.09.2019
import time
import pigpio
def main():
# Initialisierung
pi = pigpio.pi()
try:
h = pi.i2c_open(1, 0x20) # open device at address 0x20 on bus 1
time.sleep(1)
for i in range(10):
#pi.i2c_write_byte(1, 0xfe) # Datenbyte für Ausgabe
pi.i2c_write_byte(1, i) # Datenbyte für Ausgabe
time.sleep(1)
pi.i2c_close(h) # close device
while True:
time.sleep(5)
except KeyboardInterrupt:
pass
finally:
pi.stop()
if __name__ == '__main__':
main()
Hallo Sirius3, danke für die schnelle Rückmeldung. Ich möchte in der Zeile " pi.i2c_write_byte(1, i) # Datenbyte für Ausgabe" immer einen um eins erhöhten Wert (bis 10) über den Portexpander ausgeben. Dabei gibt es einen Fehler, wenn ich die Variable "i" verwende. Das Klappt nur , wenn ein Dezimal- oder Hexwert anstelle von "i" steht. Siehe auskommentierte Zeile. An den Ausgängen des PCF8574 sind LEDs angeschlossen, die dann entsprechend eingeschaltet werden sollen. Wie schon gesagt, der PCF8574 wird am I2C-Bus betrieben und dazu wird die Bibliothek pigpio (Python) verwendet.
Ich hoffe, dass ich mich jetzt besser ausgedrückt habe. Deinen Vorschlag habe ich noch nicht getestet.
Die Fehlerbehandlung habe ich aus einem Buch übernommen.
Danke
Ich hoffe, dass ich mich jetzt besser ausgedrückt habe. Deinen Vorschlag habe ich noch nicht getestet.
Die Fehlerbehandlung habe ich aus einem Buch übernommen.
Danke
Beim ersten Start wurde die Variable "i" moniert. Nach einem Reset wurde das Programm neu gestartet und funktioniert so, wie erwartet. Vielleicht macht der Dämon, mit "sudo pigpiod" gestartet Schwierigkeiten. Ich verwende einen Raspi 3b+, der über xrpd (Netzwerkkabel, Win 10 pro) bedient wird.
Danke für die Hilfe, werde noch ein paar Tests machen.
Danke für die Hilfe, werde noch ein paar Tests machen.