全日本マイコンカーラリー大会2019でも引き続き使用します。
そのために一部プログラムの改良を行いました。
主な変更点はタイム計測の方法です。
今まではmillis()関数を用いてカウントしていましたが、今回はMsTimer2を用いたタイマー割り込みです。
OUT側とIN側でそれぞれタイムをカウントしていましたが、誤差を減らすために1つにまとめました。
下に時間に関する部分のプログラムを記載しています。
OUT側のタイム計測
void timerOUT() {
pattern = button();
switch (OUTTimepattern) {
case 0:
Otimemillis = millis();
Otime2 = Otimemillis - Otime1;
if (Otime2 > 999) {
Otime1 = Otimemillis;
Ocnts += 1;
}
if (Ocnts > 59) {
Ocnts = 0;
Ocntm += 1;
}
//if (pattern == RIGHT && OT > 500)
if (OUTMainpattern == 21) {
secondOTIME = Otime2;
secondOcntS = Ocnts;
secondOcntM = Ocntm;
outTime_c = secondOTIME / 10;
outTime_s = secondOcntS;
outTime_m = secondOcntM;
}
OT++;
OcntOUT = 0;
break;
case 2:
OcntOUT++;
break;
case 4:
OcntOUT++;
Otimemillis = millis();
Otime1 = Otimemillis;
Otime2 = Otimemillis - Otime1;
Ocnts = 0;
Ocntm = 0;
secondOTIME = 0;
secondOcntS = 0;
secondOcntM = 0;
outTime_c = secondOTIME;
outTime_s = secondOcntS;
outTime_m = secondOcntM;
break;
}
}
タイマー割込みで得た数値をOUT側とIN側の両方で使う
タイマー割込みの処理は省略
void Timer2_Int(){
static int cnt10;
InIntervalTime++;
OutIntervalTime++;
cnt++;
icnt++;
ocnt++;
// 10ms周期の処理
cnt10++;
if ( cnt10 >= 10 ) {
Time_c++;
if ( Time_c > 99 ) {
Time_s++;
Time_c = 0;
}
if ( Time_s > 59 ) {
Time_m++;
Time_s = 0;
}
if ( Time_m > 9 ) {
Time_m = 0;
}
cnt10 = 0;
}
}
前作に引き継いでスタートゲートタイマー制御基板を作り直しました。
前作との違いは割り込み処理を入れてなるべく同時に計測できるようにしたこと。
そして、読み飛ばしを気にしなくてよくしたことです。前回は読み飛ばしの問題がありました。
Processing側も改良してExcelで表示するためにCSVファイル出力をさせることができるようになりました。
また、コースアウトを視覚的に分かるような処理も入れました。こちらは計測に影響のないものです。
プログラムは一番下にPDFとして公開しておきます。
全日本マイコンカーラリー大会2018で使用していたゲートタイマーは今回の作品です。
もとは部活のサイトに公開していたものです。
公開元サイトはこちら
1番下の3ピンコネクタの真ん中に5Vと書かれていますが12Vの間違いです。
電源コネクタ3ピンコネクタと3ピンコネクタは画像は違いますが同じものです。
DCジャックに対応しています。(電源の3ピンコネクタの真ん中とArduinoのVinは接続されています。)
ゲートにつなぐコネクタは3ピンでも2ピンでも構いません。(3ピンの理由は名残です。)
D2とD3は外部割込み、D12とD13はサーボにつないであります。
A1とA2とA3とA4につないであるピンは使わなくても良いです。
左半分はD-subと3ピンコネクタを差し込み口から見た図です。
右半分は関係ありません。
1代目と同じ資料になります。
基板が完成した様子です。
グルーガンで固定はしていませんが、基本的な回路は完成しました。
1回作っているだけあってすぐにできました。
のちに改良します。
前回はジャンパー線でのみ配線しましたが、今回は手を抜いて被服付きの線で配線をしました。
結構良い感じだと思います。
D-subのピンが折れたので付け替えました。
その時に手前の3ピンコネクタを基準にして2本の線を用いてそれぞれを接続していましたが、今回は負担をかけないように3本の線を用いて影響のない場所でそれぞれのパーツを接続することにしました。
D-subのピンもグルーガンで固定しました。
大分負担を軽くしたと思います。
基板に関してはこんな感じです。
難しかったですけどCSV出力はできました。
PDFに変換していますけど出力したものです。
ゲート本体にスプレーで塗装した後に衝突による破損防止のためにスポンジを付けました。
新たに別のセンサーを取り付けるためにバーの一部を切り取ってサーボに取り付けています。
スタートゲートとしてはこれで完成です。
完成時に動作確認をして無事に動作しました。
全日本マイコンカーラリー大会でも無事に動作しました。
ゲート2からも接続して使えるように変換基板を作りました。
画像は初期のものですが実際は配線が間違えていたので違うものになります。
下の画像はD-subのピンが折れた様子です。
使用したプログラムをPDFで公開します。
今回は細かい説明を省きますが、最低限のことは以下のPDFに載せておきます。