#やりたいこと
Raspberry Pi Zero WHでSPI接続のMCP3008を使って、可変抵抗の値(0-1023)を取得したいです。
Vrefは、3.3Vに繋いでいます。
下記の2つの方法を試しましたが、思ったような結果になりませんでした。
その1の方法で、かつ0-1023のデータが出力されたらな、、、と思っています。
#やってみたこと その1
pigpioを使って、MCP3208(12bit)から取得しようとしてるページを発見して、これを利用したところ、可変抵抗の値は変化しました。0-4095の値が出力されていました。
python3
1import time 2import pigpio 3 4slct = 0 # +1 +1 # SPI接続機器の番号 chip select 5baud = 50000 # 通信速度 6flag = 0 # +256 # bin(256) = 0b100000000 は Aux SPI の利用フラグ 7adch = 0 # MCP3208のCH0の番号 8 9pi = pigpio.pi() 10hndl = pi.spi_open(slct, baud, flag) # デバイスオープン 11 12try: 13 while True: 14 cmnd = ( 0b00011000 + adch ) << 2 15 c, raw = pi.spi_xfer(hndl,[cmnd,0,0]) # 最初の要素が命令の入力 16 # 17 # [0][1][1][D2][D1][D0][0][0] 18 # | | | | | 19 # | | 読み出しチャネルの指定 20 # | 1: シングルエンド 21 # [スタートビット] 22 # 23 data = ((raw[1] & 0b11111111) << 4) + \ 24 ((raw[2] & 0b11110000) >> 4) 25 print(c,raw,bin(data),data) 26 time.sleep(1) 27 28except KeyboardInterrupt: 29 pi.spi_close(hndl) 30 pi.stop()
しかし、1024段階の値が欲しいのです。
pigpio ライブラリの spi_xfer() 関数を用いて Raspberry Pi 3B から SPI 接続のA/Dコンバータ MCP3208 を利用する
#やってみたこと その2
このページのgpiozeroを使ったPythonファイルを実行したところ、
python3
1#!/usr/bin/env python 2from gpiozero import MCP3008 3Vref = 3.29476 4 5pot = MCP3008(channel=0) 6print(str(pot.value * Vref) + "V")
「0.001609555446995512V」と表示され、可変抵抗を回しても変化しません。
5ドル!ラズパイ・ゼロ(Raspberry pi Zero)でIoT (9) A-Dコンバータの利用6 MCP3002/MCP3008
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/12 15:40
2020/01/12 18:05