1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Pi PicoでPicoMite(MMBasic)を使う〜ディジタル入出力

Posted at

MMBasicでのディジタル入出力を人を検出したらLEDを点灯させ、検出できなかったらLEDを消灯する回路で確認した。

使用部品

入力として焦電型赤外線(人感)センサーモジュール SB412A、出力として赤色LED、LEDの電流制限抵抗として150Ωを使用した。

配線

次の図のように配線した。
実体配線図の人感センサーの外観が実物と異なるのはfritzingにSB412Aの部品がなかったため、類似の部品を代用している。中央のピンが出力で人を検出するとハイ、それ以外はローレベルの出力になる。このピンをRaspberry Pi PicoのGP1に接続している。

LEDのアノードは電流制限抵抗としてを通してGP0に接続している。

PICO-DIN-DOUT_ブレッドボード.png

プログラム

プログラムは下記のとおりで、2秒間隔で人感センサーの状態を確認し、LEDの点灯を制御するものとした。

Dim din%           ' Define variable
SetPin GP0,DOUT    ' Set GP0 as a digital output pin 
SetPin GP1,DIN     ' Set GP1 as a digital input pin
Do
  din% = Pin(GP1)  ' Get GP1 pin value
  If din% = 1 Then ' Is GP1 a 1? (Did the sensor detect a human?)
    Pin(GP0) = 1   ' Turn on LED
  Else
    Pin(GP0) = 0   ' Turn off LED
  End If
  Pause 2000       ' Wait 2 Sec
Loop

MMBasicではSETPINコマンドで指定したピンの動作をピン番号に続けて指定する。ディジタル入力の場合はDINを、ディジタル出力の場合はDOUTを指定する。
DINを指定した入力ピンの状態はPIN関数で読み取り、DOUTを指定した出力ピンの場合はPINコマンドで値を設定する。

MMBasicの条件分岐の構文は下記のとおり。

IF 条件式 THEN
	条件式が成立したときの処理
ELSE
	条件式が不成立したときの処理
END IF

SETPINコマンド

SETPINコマンドについてPicoMiteユーザマニュアルの説明を以下に示します。

構文:SETPIN pin, cfg [, option]

SETPINコマンドは外部I/Oピンを設定します。pinは設定するI/Oピン、cfgはピンに設定するモード、optionはオプションのパラメータです。cfgはキーワードで、以下のいずれかになります。

cfg ピンの動作
OFF 未設定または非アクティブ
AIN アナログ入力(入力電圧を測定します)
ARAW 0~1023の値を返す高速アナログ入力
DIN ディジタル入力
optionを省略した場合、入力はハイインピーダンスになります。
optionがキーワードPULLUPまたはPULLDOWNの場合、約50µAの定電流を使用して入力ピンを3.3Vにプルアップまたはプルダウンします。RP2350チップのバグのため、8.2K以下の抵抗を使用してプルダウンを実装することをお勧めします。
FIN 周波数入力
optionは、ゲート時間(入力サイクルをカウントする時間の長さ)を指定するために使用できます。10msから100000msまでの任意の数値を指定できます。PIN()関数は、使用されるゲート時間に関係なく、常にHz単位で正しくスケーリングされた周波数を返します。
optionを省略した場合、ゲート時間は1秒になります。
ピンはGP6、GP7、GP8、またはGP9のいずれかになります(OPTION COUNTで変更できます)。
PIN 周期入力
optionは、周期測定を平均化する入力サイクル数を指定するために使用できます。1から10000までの任意の数値を指定できます。PIN()関数は、平均化に使用されるサイクル数に関係なく、常に1サイクルの平均周期をms単位で正しくスケーリングされた値で返します。optionを省略した場合、1サイクルの周期のみが使用されます。ピンはGP6、GP7、GP8、またはGP9のいずれかです(OPTION COUNTで変更できます)。
CIN カウント入力
optionを使用して、カウントを開始するエッジを指定できます。プルアップまたはプルダウンが有効になっている場合、
2はプルアップありの立ち下がりエッジ、
3はプルアップなしで立ち下がりエッジと立ち上がりエッジの両方でカウントを開始するエッジ、
5はプルアップありの両エッジでカウントを開始するエッジを指定します。
optionを省略した場合、立ち上がりエッジでカウントを開始します。
RP2350チップのバグのため、プルダウンは推奨されません。
ピンはGP6、GP7、GP8、またはGP9のいずれかです(OPTION COUNTで変更できます)。
DOUT デジタル出力
optionはこのモードでは使用されません。

関数PIN()およびPORT()を使用して、1つまたは複数の出力ピンの値を返すこともできます。

PIN関数

PIN関数についてPicoMiteユーザマニュアルの説明を以下に示します。
構文:PIN(pin)

外部I/Oピンの値を返します。0はデジタルLow、1はデジタルHighを意味し、アナログ入力の場合は測定された電圧が浮動小数点数で返されます。

周波数入力は周波数をHz単位で返します。周期入力は周期をミリ秒で返し、カウント入力はリセット以降のカウントを返します(カウントは立ち上がりエッジで行われます)。カウント入力は、ピンをカウント入力にリセットすることでゼロにリセットできます(既にそのように設定されている場合でも)。

ピンが出力として設定されている場合、この関数は出力設定値(つまり、HighまたはLow)を返します。これは、特にピンがオープンコレクタ出力として設定されている場合は、実際の出力電圧と異なる場合があります。

参考サイトなど

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?