sumple program for angel linesensor. This program can prevent "out of bounds" while robot runs slow.
基板サイズ φ130mm 固定部はr5mmの円弧 厚さ1mm
使用パーツ
Nucleo stm32f303k8 1個
xh 3pin 1個
フォトトランジスタ(NJL7502L) 36個
超高輝度3mmウォームホワイトLED 36個
LED用抵抗(300Ω 1/4w) 18個
プルダウン用抵抗(1kΩ1/6w) 18個
可変抵抗100kΩ(3362P) 18個
シュミットトリガ(SN74HC14N) 3個
ピンヘッダ 15p
ICソケット 14p
組立て
XHのピン側が前(0°方向)です。 可変抵抗のシルクがあるほうが地面側です。 LEDとフォトトランジスタはシルクの向きが逆ですが頭が地面側にくるように取り付けます。 LEDとフォトトランジスタをホールにさして、上空側から見たとき足の長いほうが左側にくるように取り付けてください。(ロボット正面から見ると右側に長い方が来ます) LED用抵抗は、間隔が広い抵抗シルクがあるところに取り付けてください。 プルダウン用抵抗は,間隔が短い抵抗シルクがあるところに取り付けてください。 Nucleoは上空から見たとき左側にmicrousb端子(ロボット正面から見ると右側)がくるように取り付けてください。
シュミットトリガやnucleoがモーター等に干渉しないように気をつけてください。干渉しそうな場合は反対の面からつけてください。
使い方 入力電圧は5Vです。 アナログ値(0:ボール無, 0.33-3.3V:ボール有)で出力されます。 TJ3で読む場合(0%:ボール無, 6%-66%:ボール有)
メインマイコン側で360度に変換します。
mbedの場合(0-1) 400*(line.read() -0.1)
cstyleの場合(0-100) 6*(CN1 - 6)
ロボット正面を0°,時計回りに360°として、 変換した値の角度の方向に動きます。
mbedの場合
if(line.read() == 0){反応無し}
else{進行方向 = 400*(line.read()-0.1);}
Cstyleの場合はテーブル化したり場合分けして動かすと良いでしょう。
if(CN1 == 0){反応無し}
else if(6*(CN1 - 6) >= 350){motor(r100,r100,100,100);}
else if(6*(CN1 - 6) >= 330){motor(r100,r80,100,80);}
..etc