距離センサー GP2Y0A21 を試す
距離センサー GP2Y0A21 を試す
赤外線を使用した測距モジュール
赤外線LEDとPSD(position sensitive detector)を使用して、非接触で距離を検出することができます。
・測距範囲:10~80cm
・出力:アナログ電圧出力
・寸法:29.5×13×13.5mm
・用途:ロボット・アミューズメント等
・電源:4.5~5.5V
※付属ケーブルの単品販売もございます→ C-05684
※検出距離が違う測距モジュールもあります。
GP2Y0A02YK(20cm~150cm)<I-03158>
GP2Y0A710K(1m~5.5m) <I-03157>
とにかく注意すべきは、最初からついてきたケーブルの、赤 が GND で、黒 が Vcc であること。
私は、赤と黒を切断して、繋ぎ直しました。
配線
アナログ電圧主力なので、ADコンバーターに刺します。8ビットADコンバーターです。
3(4番目)に刺しました。
コーディング
#!/usr/bin/env python import time from datetime import datetime as dt import sys import spidev spi = spidev.SpiDev() spi.open(0,0) def readAdc(channel): adc = spi.xfer2([6+((channel&4)>>2),(channel&3)<<6,0]) data = ((adc[1]&15) << 8) + adc[2] return data def convertVolts(data): volts = (data * 3.3) / float(4095) volts = round(volts,4) return volts def convertDistance(volts): dist = 60 / volts return dist if __name__ == '__main__': try: while True: tstr = dt.now().strftime('%Y/%m/%d %H:%M:%S') data = readAdc(3) volts = convertVolts(data) dist = convertDistance(volts) print("adc : {:8}".format(data)) print("volts: {:8.2f}".format(volts)) print("dist : {:8}".format(dist)) time.sleep(1) except KeyboardInterrupt: spi.close() sys.exit(0)
距離の計算が、よくわからない。
というか、そもそも、秋月からリンクが貼られているデータシートと、シャープのデータシートと、
同梱されていた印刷物の資料の、グラフが異なる。
同梱されていた参考資料では、 15cm で、最高の 2.8v に成るかのような表記だ。
ものすごくざっくりだと、距離 cm = 60 / volts なのかな・・・。