Für ein aktuelles Projekt benötige ich an meinem Raspberry PI ein paar analoge Eingänge, die der PI bekanntlich von Hause aus nicht hat.
Kleine A/D-Wandlerboards, die optimalerweise mit wenig Strippen auskommen gibt es überall für kleines Geld und zentrales „Gehirn“ darauf ist oft und wie bei mir der ADS1115. Dieser Wird einfach per I2C mit nur zwei Käbelchen verdrahtet.
sudo apt-get update
sudo apt-get install git build-essential python-dev
git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git
cd Adafruit_Python_ADS1x15
sudo python setup.py install
cd ~/Adafruit_Python_ADS1x15/examples
Nun kann man die Datei simpletest.py ausführen:
sudo python simpletest.py
So sollte zumindest aussehen. Die 4 Spalten zeigen die 16 gerasterten analogen Werte der 4 Eingänge.
Nun der Grund für diesen Beitrag: Bei mir klappte es nicht auf Anhieb. Bei mir spuckte das Testscript folgenden Fehler aus:
Traceback (most recent call last):
File "simpletest.py", line 42, in
values[i] = adc.read_adc(i, gain=GAIN)
File "/home/pi/.local/lib/python2.7/site-packages/Adafruit_ADS1x15/ADS1x15.py", line 192, in read_adc
return self._read(channel + 0x04, gain, data_rate, ADS1x15_CONFIG_MODE_SINGLE)
File "/home/pi/.local/lib/python2.7/site-packages/Adafruit_ADS1x15/ADS1x15.py", line 133, in _read
result = self._device.readList(ADS1x15_POINTER_CONVERSION, 2)
File "/home/pi/.local/lib/python2.7/site-packages/Adafruit_GPIO/I2C.py", line 134, in readList
results = self._bus.read_i2c_block_data(self._address, register, length)
File "/home/pi/.local/lib/python2.7/site-packages/Adafruit_PureIO/smbus.py", line 216, in read_i2c_block_data
cmdstring[i] = val
TypeError: one character string expected
Nach langem Gesuche habe ich in einem Chinesischen Blog die Lösung gefunden.
Editiert Zeile 216 von smbus.py wie folgt:
sudo nano /usr/local/lib/python2.7/dist-packages/Adafruit_PureIO/smbus.py
---cmdstring[i] = val
++cmdstring[i] = str(val)
Danach funktionierte es bei auch bei mir.