relay
名詞は/リーれイ/
動詞は/リーれイ/または/リれイ/
トランジスタ技術 2020年 5月号, pp.128-130
テキストはリレーとトランジスタとでモータードライバーを組み立てているが、ここではモータードライバーIC「BD6211F」(のブレークアウトボード)を使って楽をする。したがってOUT
する信号の組み合わせもテキストとは違う。これでテキストは終わり。
使用部品:
- タミヤ 楽しい工作シリーズ No.172 ユニバーサルプレートL 210×160mm (70172)
- タミヤ 楽しい工作シリーズ No.144 ボールキャスター 2セット入 (70144) (高さは37 mmにした)
- タミヤ 楽しい工作シリーズ No.111 スポーツタイヤ 56mm径 (70111)
- 2 × タミヤ テクニクラフトシリーズ No.4 ウォームギヤーボックス HE (72004) (ギヤ比は336:1にした)
- 2 × BD6211F搭載モータードライバモジュール - スイッチサイエンス(Vccがロジック電源、VREFがモーター電源。ここでは共通にした)
- micro:bit用マイクロスイッチ(コネクタータイプ) - スイッチサイエンス
#include "CPU1738_external.h" /* ニモニック(のようなもの)一覧: ※ ジャンプ命令は1クロック、それ以外は2クロック。HALTは状態を保持して停止。 LD_A(Data) : A ← [Data] LD_B(Data) : B ← [Data] LD_AB : A ← B LD_BA : B ← A ADD_AB : A ← A + B SUB_AB : A ← A - B ADD_A(Data) : A ← A + [Data] SUB_A(Data) : A ← A - [Data] OUT_A : OUT ← A OUT_B : OUT ← B OUT(Data) : OUT ← [Data] IN_A : A ← IN JUMP(Address) : PC ← [Address] JNC(Address) : PC ← [Address] if NOT Carry JNZ(Address) : PC ← [Address] if NOT Zero HALT : HALT */ int main(void){ // 両輪を前転して(前進して)、 _[0] = OUT(0b1010); // 何かにぶつかってマイクロスイッチが押されるまで(0が入力されるまで)その状態を続けて、 _[1] = IN_A; _[2] = SUB_A(0); _[3] = JNZ(1); // 何かにぶつかったら(スイッチが押されたら)両輪を後転して(後進して)、 _[4] = OUT(0b0101); // 少しの間、その状態を続けて、 _[5] = LD_A(7); _[6] = SUB_A(1); _[7] = JNZ(6); // 両輪にブレーキをかけて、 _[8] = OUT(0b1111); // OUT(0b0000)にすればブレーキではなく空転。ただしwormギヤなのでどちらでもほぼ関係ない。 // 少しの間、その状態を続けて、 _[9] = LD_A(3); _[10] = SUB_A(1); _[11] = JNZ(10); // 右輪前転、左輪後転して(左回転して)、 _[12] = OUT(0b0110); // 少しの間、その状態を続けて、 _[13] = LD_A(9); _[14] = SUB_A(1); _[15] = JNZ(14); // 0番地に戻って同じことを繰り返す。 // CPU1738用の制御回路を有効化する。 // 第1引数: PD7から出力するクロック周波数Hz。範囲は8~32767Hz。 // 第2引数: それを何分周してPD6から出力するか。範囲は1~65535分周。 // ※第2引数を指定しない場合はPD6から1Hzが出力される。 enable_CPU1738_external(20); return 0; }