ich finde den Fehler beim Auslesen des A/D-Wandlers einfach nicht, ich habe das Skript von Sirius etwas angepasst und noch ein anderes Skript ausprobiert. Bei beiden Skripten habe ich das Problem das ich keine Werte angezeigt bekomme sondern nur eine leere Printzeile...
Zu erst die Version von Sirius:
Code: Alles auswählen
import spidev
def read_sensor(spi, channels):
result = []
spi.open(0,0)
for channel in channels:
rcv = spi.xfer2(((24 + channel) << 14).to_bytes(3, 'big'))
result.append(int.from_bytes(rcv[1:2], 'big') & 0xfff)
spi.close()
return result
def main():
spi = spidev.SpiDev()
# t = temperatur, d = drossel, p = druck, m = massenstrom
# Kanal 0 = d
# Kanal 1 = t1
# Kanal 2 = t2
# Kanal 3 = p
# Kanal 4 = m
d, t1, t2, p, m = read_sensor(spi, [0, 1, 2, 3, 4])
print(d, t1, t2, p, m)
if __name__ == '__main__':
main()
Code: Alles auswählen
from spidev import SpiDev
class MCP3208:
def __init__(self, bus = 0, device = 0):
self.bus, self.device = bus, device
self.spi = SpiDev()
self.open()
def open(self):
self.spi.open(self.bus, self.device)
def read(self, channel = 0):
adc = self.spi.xfer2(((24 + channel) << 14).to_bytes(3, 'big'))
data = int.from_bytes(adc[0:2],'big') & 0xfff
return data
self.close()
def close(self):
self.spi.close()
adc = MCP3208()
while True:
p = adc.read(channel = 0)
print (p)