今回もJLCPCBという基板製造会社に頼みました。JLCPCB様は100mm*100mm以内の基板を5枚でたった2$で発注することができます。新規登録すると56$のクーポンも貰えるそうです。
JLCPCB様のリンク↓
➀ドリブラー用のギア
学校の3Dプリンターでやると形は良いのですが、全然といっていいほど耐久性がなくてやればやるだけ摩擦で擦り減ってしまうのでどうしようもないので金属3Dプリンターを頼みました。それの一部です。あと設計上、もう一つギアがいるのですがそれはまた次の機会に頼みたいと思います。
➁上板
まあそこまで変わらないので解説は割愛します。
➂下板
今回前のやつだと少し耐久性が怖くなったので二台目は耐久性を強くしてみました。どこを変えたかというと外側を2mmぐらいの壁を作って耐久性をあげました。あとラインセンサーの光が漏れないようにラインセンサーのところにガイドを付けました。
あと、キッカーのために前のカバーに穴をあけてキックをできるようにしました。あと見にくいですが前のカバーにねじ穴を取り付けてホールセンサーを取り付けれるようにしました。こんな感じにしたことにより強度がすごく上がって前のやつよりすごく曲がりにくくなりました。うしろはバッテリーカバーの閉じるために開けています。
④カメラの筒
カメラとミラーとの間にある透明の筒のやつです。驚くことに結構透明ですごかったです。(語彙力なくてすみません)しかしオープンをやっている人だと少し線形な感じがあるので正確にボールの位置がわからないといけないとおもうのであまりお勧めはしません。ライトウェイトでゴールをみるだけぐらいなら全然問題ないほどです。
今まで頼んだ基板の動作
今回はメイン基板です。ちなみに3回ぐらい作りなおしてます。何回もしてしまい申し訳ないです。1回目は実験で作ってみようっていう感じで作りました。そして、2回目は丸型にしてボールセンサーも一緒にしようと思って発注したのですが、IOエキスパンダーをチップにしたのを忘れてチップ用にしていない回路で作ってしまい動きませんでした。そして、3回目でやっと動きました。ロボットがボールを追いかけてなどのプログラムは載せれませんが、液晶の部分のプログラムを載せようと思います。一部ですが...
CRB = 1023 - analogRead(A1);
RB = 1023 - analogRead(A2);
BRB = 1023 - analogRead(A3);
BB = 1023 - analogRead(A4);
BLB = 1023 - analogRead(A5);
LB = 1023 - analogRead(A6);
CLB = 1023 - analogRead(A7);
x = (cos(45 * M_PI / 180) * CRB + RB + cos(315 * M_PI / 180) * BRB + cos(225 * M_PI / 180) * BLB - LB + cos(135 * M_PI / 180) * CLB);
y = (sin(45 * M_PI / 180) * CRB + sin(315 * M_PI / 180) * BRB + sin(225 * M_PI / 180) * BLB + sin(135 * M_PI / 180) * CLB + CB - BB);
if (fabs(x) < 20 && fabs(y) < 20) {
ballangle = 360;
} else {
ballangle = (atan2(x, y)) * 180 / M_PI;
}
display.clearDisplay();
//出力する文字の大きさ
display.setCursor(0, 0);
display.setTextSize(2);
display.println("ballangle");
display.println(ballangle);
display.setCursor(0, 50);
display.drawCircle(Center_X, Center_Y, 30, WHITE);
display.drawCircle(Center_X, Center_Y, 31, WHITE);
X = Center_X + 28 * sin(ballangle * PI / 180);
Y = Center_Y - 28 * cos(ballangle * PI / 180);
display.drawLine(Center_X, Center_Y, X, Y, WHITE);
display.display();