Raspberry Piでアナログ電圧を測定したい
のでRaspberry Piクックブックという本の「レシピ13.5電圧を測定する」というページを参考に下の画像のように実装しました
(私は、半固定抵抗は10kΩ,**Raspberry Pi3 ModelB+**を用いています)
予想では半固定抵抗のつまみを回すと表示される値が変わるつもりだったのですが、
実際には上記画像の3値しか表示されませんでした。半固定抵抗のつまみを最低にしたときの値が上記の画像で
つまみを最大にしたときはReading=0がほとんどになります。(たまにReading=255が表示されます)。
また、半固定抵抗からMCP3008のCh0に接続されているコードを抜いてもたまにReading=254やReading=255が表示されます。
Python2.7.13とPython3.5.3で動かしても結果は同じでした。
そこでコードに問題があると考えました。
python
1import spidev, time 2 3spi = spidev.SpiDev() 4spi.open(0,0) 5 6def analog_read(channel): 7 r = spi.xfer2([1, (8 + channel) << 4, 0]) 8 adc_out = ((r[1]&3) << 8) + r[2] 9 return adc_out 10 11while True: 12 reading = analog_read(0) 13 voltage = reading * 3.3 / 1024 14 print("Reading=%d\tVoltage=%f" % (reading, voltage)) 15 time.sleep(1) 16
このコードはGithubリンクからコピペしたものです。
このコードのどこに問題があるのでしょうか。あと、analog_readの関数で何を行っているのかが分からないのでそちらも教えていただきたいです。
また、このような通信を理解する助けとなる本があれば教えていただければ幸いです
補足:
電子機器や接続の問題も考えましたが、機器は全て新品で配線も何度も確認したので考えづらいです。
上記画像と私のRaspberry Pi3 ModelB+はGPIOピン配置が異なりますが、そこは合わせて配置しています。
回答2件
あなたの回答
tips
プレビュー