from time import sleep
#import RPi.GPIO as GPIO
import RPi as GPIO
# MCP3208縺九iSPI騾壻ソ。縺ァ12繝薙ャ繝医�繝�ず繧ソ繝ォ蛟、繧貞叙蠕励�0縺九i7縺ョ8繝√Ε繝ウ繝阪Ν菴ソ逕ィ蜿ッ
def readadc(adcnum, clockpin, mosipin, misopin, cspin):
import sys
if "RPi.GPIO" in sys.modules:
pass
else:
return GPIO.readadc(adcnum, clockpin, mosipin, misopin, cspin)
if adcnum > 7 or adcnum < 0:
return -1
GPIO.output(cspin, GPIO.HIGH)
GPIO.output(clockpin, GPIO.LOW)
GPIO.output(cspin, GPIO.LOW)
commandout = adcnum
commandout |= 0x18 # 繧ケ繧ソ繝シ繝医ン繝�ヨ�九す繝ウ繧ー繝ォ繧ィ繝ウ繝峨ン繝�ヨ
commandout <<= 3 # LSB縺九i8繝薙ャ繝育岼繧帝∽ソ。縺吶k繧医≧縺ォ縺吶k
for i in range(5):
# LSB縺九i謨ー縺医※8繝薙ャ繝育岼縺九i4繝薙ャ繝育岼縺セ縺ァ繧帝∽ソ。
if commandout & 0x80:
GPIO.output(mosipin, GPIO.HIGH)
else:
GPIO.output(mosipin, GPIO.LOW)
commandout <<= 1
GPIO.output(clockpin, GPIO.HIGH)
GPIO.output(clockpin, GPIO.LOW)
adcout = 0
# 13繝薙ャ繝郁ェュ繧�医レ繝ォ繝薙ャ繝茨シ�12繝薙ャ繝医ョ繝シ繧ソ��
for i in range(13):
GPIO.output(clockpin, GPIO.HIGH)
GPIO.output(clockpin, GPIO.LOW)
adcout <<= 1
if i>0 and GPIO.input(misopin)==GPIO.HIGH:
adcout |= 0x1
GPIO.output(cspin, GPIO.HIGH)
return adcout
GPIO.setmode(GPIO.BCM)
SPICLK = 11
SPIMOSI = 10
SPIMISO = 9
SPICS = 8
GPIO.setup(SPICLK, GPIO.OUT)
GPIO.setup(SPIMOSI, GPIO.OUT)
GPIO.setup(SPIMISO, GPIO.IN)
GPIO.setup(SPICS, GPIO.OUT)
GPIO.setup(13,GPIO.OUT)
try:
while True:
input_val = readadc(0,SPICLK,SPIMOSI,SPIMISO,SPICS) # 0-4095
print("input_val:",input_val,"電圧:",(input_val/4095)*3.3)
V=input_val/4095*3.3
if V>1.65:
GPIO.output(13,GPIO.HIGH)
else:
GPIO.output(13,GPIO.LOW)
sleep(0.2)
except KeyboardInterrupt:
pass
GPIO.cleanup()