Verbinden Sie den MCP3002 ADC mit dem Raspberry Pi 2 mit "Verbinden Sie den A / D-Wandler MCP3002 mit dem Raspberry Pi", damit der analoge Sensorwert über SPI gelesen werden kann. tat. Ich habe py-spidev verwendet, um die SPI-Kommunikation von Python aus durchzuführen, aber Python-Wrapper von WiringPi v2 Sie können den SPI auch mit steuern, daher verwende ich hier WiringPi2 Python, um den analogen Sensor über SPI zu lesen.
Implementieren Sie ein Programm in Python, das den Wert des Drucksensors vom MCP3002 liest und die LED blinkt, wenn ein Wert beobachtet wird, der den THRESHOLD-Wert überschreitet.
Wenn Sie 2 Bytes von 0x68.0x00 gemäß dem Datenblatt von MCP3002 senden, werden 2 Bytes des mit CH0 verbundenen Sensorwerts (gültig sind die unteren 10 Bits) zurückgegeben. Wenn 0x78 anstelle von 0x68 verwendet wird, kann der an CH1 angeschlossene Sensorwert erhalten werden.
read_adc_wp2.py
#!/usr/bin/env python3
import wiringpi2 as wp
import time
# SPI channel (0 or 1)
SPI_CH = 0
# SPI speed (hz)
SPI_SPEED = 1000000
# GPIO number
LED_PIN = 25
# threshold
THRESHOLD = 200
# setup
wp.wiringPiSPISetup (SPI_CH, SPI_SPEED)
wp.wiringPiSetupGpio()
wp.pinMode(LED_PIN, wp.GPIO.OUTPUT)
while True:
buffer = 0x6800
buffer = buffer.to_bytes(2,byteorder='big')
wp.wiringPiSPIDataRW(SPI_CH, buffer)
value = (buffer[0]*256+buffer[1]) & 0x3ff
print (value)
if value > THRESHOLD:
wp.digitalWrite(LED_PIN, wp.GPIO.HIGH)
time.sleep(0.2)
wp.digitalWrite(LED_PIN, wp.GPIO.LOW)
time.sleep(0.2)
time.sleep(1)
WiringPi2 hat eine Erweiterung von MCP3002, sodass Sie damit den Wert des analogen Sensors lesen können, ohne die SPI-Kommunikation zu kennen (PIN_BASE ist CH0, PIN_BASE + 1 ist CH1).
read_mcp3002.py
#!/usr/bin/env python3
###
### read MCP3002 ADC analog value via RasPi SPI
###
import wiringpi2 as wp
import time
# SPI channle (0 or 1)
SPI_CH = 0
# pin base (above 64)
PIN_BASE=70
# GPIO number
LED_PIN = 25
# threshold
THRESHOLD = 200
# setup
wp.mcp3002Setup (PIN_BASE, SPI_CH)
wp.wiringPiSetupGpio()
wp.pinMode(LED_PIN, wp.GPIO.OUTPUT)
# if a sensor value is over THRESHOLD,
# flash led.
while True:
value = wp.analogRead(PIN_BASE)
print (value)
if value > THRESHOLD:
wp.digitalWrite(LED_PIN, wp.GPIO.HIGH)
time.sleep(0.2)
wp.digitalWrite(LED_PIN, wp.GPIO.LOW)
time.sleep(0.2)
time.sleep(1)
References
Recommended Posts