文章标题
2017-07-02 00:04
316 查看
树莓派控制水位传感器,最重要的是需要数模转化器。以下是需要器材
1:树莓派
2:水位传感器(某网站有很多种,这里使用的是水位溢出模块)
3:数模转化器
4:面包板
5:公对母、公对公若干
接线图如下,具体根据自己的Pi来实际接线
根据自己的额需要增加树莓派的功能,连接引脚时,注意每个传感器的正负极。
实验代码如下:
根据自己需要,自行修改。
1:树莓派
2:水位传感器(某网站有很多种,这里使用的是水位溢出模块)
3:数模转化器
4:面包板
5:公对母、公对公若干
接线图如下,具体根据自己的Pi来实际接线
根据自己的额需要增加树莓派的功能,连接引脚时,注意每个传感器的正负极。
实验代码如下:
import RPi.GPIO as GPIO import time SPICLK = 11 SPIMISO = 9 SPIMOSI = 10 SPICS = 8 photo_ch = 0 #port init def init(): GPIO.setwarnings(False) GPIO.cleanup() #clean up at the end of your script GPIO.setmode(GPIO.BCM) #to specify whilch pin numbering system GPIO.setup(SPIMOSI, GPIO.OUT) GPIO.setup(SPIMISO, GPIO.IN) GPIO.setup(SPICLK, GPIO.OUT) GPIO.setup(SPICS, GPIO.OUT) def readadc(adcnum, clockpin, mosipin, misopin, cspin): if ((adcnum > 7) or (adcnum < 0)): return -1 GPIO.output(cspin, True) GPIO.output(clockpin, False) GPIO.output(cspin, False) commandout = adcnum commandout |= 0x18 # start bit + single-ended bit commandout <<= 3 # we only need to send 5 bits here for i in range(5): if (commandout & 0x80): GPIO.output(mosipin, True) else: GPIO.output(mosipin, False) commandout <<= 1 GPIO.output(clockpin, True) GPIO.output(clockpin, False) adcout = 0 for i in range(12): GPIO.output(clockpin, True) GPIO.output(clockpin, False) adcout <<= 1 if (GPIO.input(misopin)): adcout |= 0x1 GPIO.output(cspin, True) adcout >>= 1 # first bit is 'null' so drop it return adcout def main(): init() time.sleep(2) print"will start detec water level\n" while True: adc_value=readadc(photo_ch, SPICLK, SPIMOSI, SPIMISO, SPICS) if adc_value == 0: print"no water\n" elif adc_value>0 and adc_value<30 : print"it is raindrop\n" elif adc_value>=30 and adc_value<200 : print"it is water flow" print"water level:"+str("%.1f"%(adc_value/200.*100))+"%\n" #print "adc_value= " +str(adc_value)+"\n" time.sleep(1) if __name__ == '__main__': try: main() except KeyboardInterrupt: pass GPIO.cleanup()
根据自己需要,自行修改。