測距センサーHC-SR04は、5Vで動作し、Trig をOUT1に、Echo をIN1に挿します。OUT1コマンドで10u秒ONにすると、超音波を発信、跳ね返ってきた超音波を受信した時 IN(1) が0になります。IchigoJam BASIC で、動かしてみます。
10 OUT1:OUT0:A=0 20 A=A+1:IF IN(1) CONT ELSE ?A 30 WAIT 5:GOTO 10
壁までが遠いと8、近いと0や1と表示され、大雑把な距離がわかるセンサーとしては使えます。(VIDEO0で表示を止めるともう分解能を上げられます!)
時間を測る分解能が低すぎて、距離の計測まではできません。そこで、Armマシン語!
IN(1)が0になるまでの時間を計測するマシン語のプログラムを書きます。(IN1のアドレスは#50001000)
R0=0 R1=[@IN1]L @LOOP R2=[R1]L R0=R0+1 R2-0 IF !0 GOTO @LOOP R0=R0>>9 RET @IN1 DATA L #50001000
asm15でアセンブルするか、Armマシン語表からハンドアセンブルして、動かしてみます。
10 POKE#700,0,32,3,73,10,104,64,28,0,42,251,209,64,10,112,71,0,16,0,80 20 OUT1:OUT0:?USR(#700,0) 30 WAIT 5:GOTO 20
距離が数値で表示されました!
超音波センサー HC-SR04 は、1つ200円前後で入手可能なお手軽センサー(HC-SR04 on Amazon)
ロボットの目、IoTの目として、ご活用ください!
links
- はじめてのマシン語 - IchigoJamではじめるArmマシン語その1
- Cortex-M0 Armマシン語表 (asm15表記、抜粋)
- IchigoJamと超音波距離センサでデジタルものさし作った。 | たね子のブログ (RC積分回路使用)
- 超音波距離センサー HC-SR04アダプタ(完成品) - PCN金沢オリジナル 教材/キット | PCN金沢 (IchigoJamのANAで取得可能にするキット)