23. Lektion: Onewire: Unterschied zwischen den VersionenAus Attraktor Wiki
Aktuelle Version vom 8. Januar 2024, 14:00 Uhr
InitialisierungUm einen OneWire-Sensor zu benutzen muss zuerst ein OneWire-Bus erzeugt werden: import onewire ow = onewire.OneWire(Pin(28)) Dann kann der Sensor initialisiert werden. Hier ist der Busname zu übergeben: import ds18x20 ds = ds18x20.DS18X20(ow) Für gleiche Sensoren ist dieses nur einmal erforderlich.
roms = ds.scan() Hier die Adressliste (roms) vom Aufbau aus dem Titelbild. print(roms) [bytearray(b'(y\x19 \x00\x00\x00\xef'), bytearray(b'(\x19U \x00\x00\x00\xe4'), bytearray(b'(n\xdc\x1e\x00\x00\x00\x9c')] Schließlich können die Werte der Sensoren gelesen werden. one_wire_warten = 750 ds.convert_temp() time.sleep_ms(one_wire_warten) Danach ist eine Wartezeit von mindestens 750 ms erforderlich!
daten = [1, 2, 3] for x, rom in enumerate(roms): daten[x] = ds.read_temp(rom) Die Initialisierung von daten mit 3 Werten ist erforderlich damit 3 Werte in der Liste vorhanden sind, die dann mit den Messwerten überschrieben werden.
Das komplette Programmfrom machine import Pin import onewire import time import ds18x20 warten = 250 # Wartezeit für nächste Abrage in ms one_wire_warten = 750 # 750ms Wartezeit braucht der OneWire-Mechanismus daten = [1, 2, 3] # Liste mit 3 Einträgen für 3 Messstellen ow = onewire.OneWire(Pin(28)) ds = ds18x20.DS18X20(ow) roms = ds.scan() while True: ds.convert_temp() time.sleep_ms(one_wire_warten) # OneWire braucht eine Pause for x, rom in enumerate(roms): daten[x] = ds.read_temp(rom) # Hier werden die Temperaturen ausgelesen. # Hier folgt Code zur Auswertung der Messwerte # Z.B. for i, wert in enumerate(daten): print(f'Sensor{i}, {wert}°C') |