In a previous post, we show how to use Linker ADC shield on Raspberry Pi to read ADC value. In this post, we show how to get dual channels from the Linker ADC shield.
We connect two Linker potentiometer modules to the Linker ADC shield as below:
In detail, they are connected in the following way:
- LinkerPotentiometer① – VCC –> Base Shield For RPi VCC
- LinkerPotentiometer① – GND –> Base Shield For RPi GND
- LinkerPotentiometer① – OUT –> Base Shield For RPi (JP1-A0)
-
LinkerPotentiometer② – VCC –> Base Shield For RPi VCC
-
LinkerPotentiometer② – GND –> Base Shield For RPi GND
-
LinkerPotentiometer② – OUT –> Base Shield For RPi (JP1-A1)
The python script is shown below:
import spidev
import time
# A0 = 0, A1 = 1, A2 = 2, A3 =3
adc0 = 0
adc1 = 1
spi = spidev.SpiDev()
spi.open(0,0)
def readadc(adcnum):
# read SPI data from MCP3004 chip, 4 possible adc's (0 thru 3)
if adcnum > 3 or adcnum < 0:
return -1
r = spi.xfer2([1,8+adcnum <<4,0])
adcout = ((r[1] &3) <<8)+r[2]
return adcout
while True:
value0 = readadc(adc0)
volts0 = (value0 * 3.3) / 1024
print("ADC%ld = %5.3f V" % (adc0,volts0) )
value1 = readadc(adc1)
volts1 = (value1 * 3.3) / 1024
print("ADC%ld = %5.3f V"% (adc1,volts1) )
print("-------------------------")
time.sleep(0.5)
The results are shown below:

Leave a Reply
You must be logged in to post a comment.