def adc(chan, clock, mosi, miso, cs): if((chan < 0) or (chan > 7)): return -1 GPIO.output(cs, True) # preventivně GPIO.output(clock, False) GPIO.output(cs, False) # aktivujeme slave cmd = chan cmd |= 0x18 # nastavíme start bit + SGL bit cmd <<= 3 for i in range(5): # pošleme start, SGL, channel if(cmd & 0x80): GPIO.output(mosi, True) else: GPIO.output(mosi, False) cmd <<= 1 GPIO.output(clock, True) GPIO.output(clock, False) result = 0 for i in range(12): # načteme mezeru (čas pro čtení hodnoty) + nulový bit + 10 bitů GPIO.output(clock, True) GPIO.output(clock, False) result <<= 1 if(GPIO.input(miso)): result |= 0x1 GPIO.output(cs, True) result >>= return result