라즈베리파이는 아두이노와는 다르게 아날로그 센서값을 자체적으로 읽어오지 못함.
따라서 MCP3008과 같은 제품을 이용하여, 아날로그 값을 디지털 값으로 바꾼 후 (Convert) 라즈베리파이에 넣어주어야함
SPI 통신방식 적용
아래 코드는 값이 0으로 나옴 ..
# readadc.py
import spidev, time
spi = spidev.SpiDev()
spi.open(0,0)
def analog_read(channel):
r = spi.xfer2([1, (8 + channel) << 4, 0])
adc_out = ((r[1] & 3) << 8) + r[2]
return adc_out
while True:
reading = analog_read(0)
voltage = reading * 3.3 / 1024
print("읽은 값은 %d\t전압은 %f V" % (reading, voltage))
time.sleep(1)
# readadc.py
import spidev, time
def analog_read(channel):
r = spi.xfer2([1, (8 + channel) << 4, 0])
adc_out = ((r[1] & 3) << 8) + r[2]
return adc_out
if __name__ == "__main__":
spi = spidev.SpiDev()
spi.open(0, 0)
spi.max_speed_hz = 1000000
try:
while True:
reading = analog_read(0)
voltage = reading * 3.3 / 1024
print("읽은 값은 %s(%d) 전압은 %.3fV" % (hex(reading), reading, voltage))
time.sleep(1)
except KeyboardInterrupt:
print("spi close")
spi.close()
https://pinocc.tistory.com/175
https://dojang.io/mod/page/view.php?id=2448
'임베디드 > RaspberryPi' 카테고리의 다른 글
16x2lcd raspberrypi (0) | 2020.10.29 |
---|---|
라즈베리파이4, 3 핀맵 , 데이터시트 (0) | 2020.10.23 |
p267 6-5 콜백방식 (0) | 2020.10.22 |
p265 6-4 폴링방식 (0) | 2020.10.22 |
p268 6-6 풀업 풀다운 인터럽트 (0) | 2020.10.22 |