稼働中

マイクロビット(c_02)GP2Y0A21YK 用モジュール

GP2Y0A21YK c_gp2y_00.py

GP2Y0A21YKは赤外線距離センサです。※詳細はGP2Y0A21YKのデータシートを参照ください。
GP2Y0A21YKで使う自作の’c_gp2y_00.py’を作成しました。(※記事e_06を元にクラスにしました。)
‘c_gp2y_00.py’は末尾にあります。使い方だけを記載します。

使い方

ファイル転送
micro:bitへ’c_gp2y_00.py’を送った後でimportして使います。micro:bitに直接ファイルをアップロード出来ない場合(Thonny 3.1.12など)は、microfsなどを使ってアップロードします。
※microfsについては、当サイト内のこちらを参照ください。
※c_gp2y_00.pyの末尾に、使用例(c_gp2y_ex.py)の## example以降をコピペで追加しても動作確認できます。

メソッド
‘c_gp2y_00’をimportすると「r_dist」のメソッドが使えるようになります。
GP2Y(pins=pin0,vs=3300)で初期化します。
pins:GP2Y0A21YKのVoと接続するmicro:bitのピンを指定します。デフォルト値はpin0です。
vs:基準電圧です。デフォルト値は3300mVです。

(01)r_dist(k=26.549, m=-1.2091)
測定距離(cm)を返します。近似式 L = k x Vo**m で求めています。
L = 26.549xVo**-1.2091はデータシートから求めた近似式です。デフォルトはこの係数を使っています。
実測で求めた近似式はL = 26.9183*Vo**-1.2351でした。係数を変更する場合は引数を変更します。

使用例

GP2Y(pins=pin0,vs=3300)の測定例です。


from microbit import *
from c_gp2y_00 import GP2Y
# The GP2Y0A21YK is a wide-angle distance measuring sensor.
## example ------------------
a=GP2Y()            # instance
dist=a.r_dist()     # k=26.549, m=-1.2091
print('L= %6.2f(cm)' % dist)

実行結果


>>> %Run c_gp2y_ex.py
L=  12.41(cm)
>>>

モジュール


c_gp2y_00.py
from microbit import *
# The GP2Y0A21YK is a wide-angle distance mea-suring sensor.
# 1/vo 2/GND 3/Vcc  pin0 read_analog
class GP2Y:
    # analog read pin vs microbit 3.3V 
    def __init__(self, pins=pin0,vs=3300):
        self.pins=pins
        self.Vs=vs
        # 一応、NO_PULLに設定しておく
        self.pins.set_pull(self.pins.NO_PULL)
    # L = 26.549xVo**-1.2091  (real data 26.9183*Vo**-1.2351)
    def r_dist(self,k=26.549,m=-1.2091):
        self.v_read=self.pins.read_analog()
        vout=(self.v_read*self.Vs/1024)/1000   #mV
        l_cm=k*vout**m
        return l_cm