Ich arbeite im Moment mit dem Beispielcode:
Code: Alles auswählen
from mcp3208 import MCP3208
import time
adc = MCP3208()
while True:
for i in range(8):
print('ADC[{}]: {:.2f}'.format(i, adc.read(i)))
time.sleep(0.5)
Mit dem folgenden Code funktioniert es jedoch nicht -> Werte sind alle immer 0
Code: Alles auswählen
from MCP3208 import MCP3208
from spidev import SpiDev
import time
class MCP3208:
def __init__(self, bus = 0, device = 0): # Hier wird der SPI Bus aktiviert
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): # Hier werden die Channels abgefragt
adc = self.spi.xfer2([1, (8 + channel) << 4, 0])
data = ((adc[1] & 3) << 8) + adc[2]
return data
def close(self):
self.spi.close()
adc = MCP3208()
value0 = adc.read( channel = 0 ) # Channel 0
value1 = adc.read( channel = 1 ) # Channel 1
value2 = adc.read( channel = 2 ) # Channel 2
value3 = adc.read( channel = 3 ) # Channel 3
value4 = adc.read( channel = 4 ) # Channel 4
print("Anliegende Spannung: %.2f" % (value0 / 4096.0 * 3.3) ) # Ausgabe der Spannung
print("Anliegende Spannung: %.2f" % (value1 / 4096.0 * 3.3) ) # Ausgabe der Spannung
print("Anliegende Spannung: %.2f" % (value2 / 4096.0 * 3.3) ) # Ausgabe der Spannung
print("Anliegende Spannung: %.2f" % (value3 / 4096.0 * 3.3) ) # Ausgabe der Spannung
print("Anliegende Spannung: %.2f" % (value4 / 4096.0 * 3.3) ) # Ausgabe der Spannung
Mit diesen Variablen möchte ich dann weitere Rechnungen durchführen, da mir ja ein Wert von 0-4096 ausgegeben wird und ich ja aber den Stromwert wissen möchte. Diese Umrechnung habe ich mir schon aufgeschrieben, nur schaffe ich es nicht die Channel-werte als Variable
zu definieren.