sumple program for angel linesensor. This program can prevent "out of bounds" while robot runs slow.
You are viewing an older revision! See the latest version
Homepage
基板サイズ φ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