前回はIchigoDakeに直接、モータドライバとフォトリフレクタの回路を繋いで組み上げましたが、だいぶ強度に難があります。プログラムを修正するのも一仕事で、配線を間違って動かないというトラブルも…。
そこで、素直にDakeJacketとMapleSugarの組み合わせに移行して組み上げたのが今回の写真の1台です。負けを認めるのにそこそこ時間がかかってるので「素直に」とは言い難いかもしれませんが(笑)
プログラムも微調整しています(配線の都合でLとRが逆になっていたり)。
1 @ARUN
10 LED1:WAIT30:LED0
20 OUT1,0:OUT2,0:PWM3,0
30 PWM4,0:OUT5,0:OUT6,0
40 R=ANA(0):L=ANA(2)
50 IF L<500 OUT2,1 ELSE OUT2,0
60 IF R<500 OUT5,1 ELSE OUT5,0
70 WAIT10
80 GOTO40
ここまでの制作の記録がバラバラだったので、一覧ページを作りました。次はRaspiに戻って何か面白い仕掛けを考えてみます。
電池やセンサーを固定するために利用するパーツはTinkerCADで作成しました。
配線とセットで解説しないと意味がないのですが、今回は以下のように動かせるようになってます。OUT端子2つのON/OFFのコンビネーションで動作が決まるため、このような書き方をしていますが、一度指定した状態は持続するため、上記のプログラム例のように一旦全て0(OFF)にリセットしてから最低限の部分だけ指定することも可能です。
OUT1,0:OUT2,1 # 右車輪前転
OUT1,1:OUT2,0 # 右車輪後転
OUT5,1:OUT6,0 # 左車輪前転
OUT5,0:OUT6,1 # 左車輪後転
OUTの代わりにPWMコマンドを使うことで、速度を制御することも可能です(前進のみ)。
PWM2,500: # 右車輪ゆっくり前転
PWM5,500 # 左車輪ゆっくり前転
2進数でOUTの6から1までを並べて、一斉にON/OFFすることも可能です。この方法だと以下のようにちょっとすっきりした書き方になります。
OUT18 # 前進 010010
OUT33 # 後退 100001
OUT2 # 左旋回 000010
OUT16 # 右旋回 010000
おまけ:
BIN$という命令で、2進数表記を確認することができます。
?BIN$(33,6) ` 100001