Connectez le MCP3002 ADC au Raspberry Pi 2 avec "Connectez le convertisseur A / N MCP3002 au Raspberry Pi" afin que la valeur du capteur analogique puisse être lue via SPI. fait. J'ai utilisé py-spidev pour effectuer une communication SPI à partir de python, mais python wrapper de WiringPi v2 Vous pouvez également contrôler le SPI à l'aide, donc ici, j'utiliserai WiringPi2 python pour lire le capteur analogique via SPI.
Implémentez un programme en python qui lit la valeur du capteur de pression du MCP3002 et fait clignoter la LED lorsqu'une valeur dépassant la valeur THRESHOLD est observée.
Si vous envoyez 2 octets de 0x68,0x00 selon la fiche technique du MCP3002, la valeur du capteur de 2 octets connecté à CH0 (valide est les 10 bits inférieurs) sera renvoyée. Si 0x78 est utilisé au lieu de 0x68, la valeur du capteur connecté à CH1 peut être obtenue.
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 a une extension de MCP3002, vous pouvez donc l'utiliser pour lire la valeur du capteur analogique sans être conscient de la communication SPI (PIN_BASE est CH0, PIN_BASE + 1 est 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