連日になるけど、スピードヒーラーみたいなの自作する続き。
AmazonからATTiny85 USB開発ボードが届いたので早速検証したけど、やっぱUnoと同じスケッチだとエラーが出る。割り込みに宣言が必要だったり、諸々。
試行錯誤した部分を全部すっ飛ばして最終版が下記。
const int sensorPin = 2; // センサーからのパルスを受け取るピン(INT0)
const int outputPin = 3; // パルスを出力するピン
const int ledPin = 1; // 本体LED(確認用)
volatile int inputPulseCount = 0;
volatile bool pulseFlag = false;
int pulsesPerRevolution = 8; // 1回転あたりの入力パルス数
float pulseRatio = 1.214; // タイヤサイズの比率
float accumulatedPulse = 0; // 出力パルスの生成タイミングを累積する変数
void setup() {
pinMode(sensorPin, INPUT_PULLUP);
pinMode(outputPin, OUTPUT);
pinMode(ledPin, OUTPUT);
attachInterrupt(0, countPulse, RISING); // INT0を割り込みとして設定
}
void loop() {
if (pulseFlag) {
pulseFlag = false;
inputPulseCount++;
accumulatedPulse += pulseRatio;
// 出力パルスを生成
while (accumulatedPulse >= 1.0) {
digitalWrite(outputPin, HIGH);
digitalWrite(ledPin, HIGH);
delayMicroseconds(500);
digitalWrite(outputPin, LOW);
digitalWrite(ledPin, LOW);
delayMicroseconds(5000);
accumulatedPulse -= 1.0; // 累積を減算
}
// 1回転が完了したらカウントをリセット
if (inputPulseCount >= pulsesPerRevolution) {
inputPulseCount = 0;
accumulatedPulse = 0;
}
}
}
void countPulse() {
pulseFlag = true;
}
後は車体に取り付けるための準備。
VINとGNDはメーターとセンサーの間に割り込ませて完了。
カプラ類は先日壊れたスピードヒーラーのを流用。
新たに購入する必要がある場合は、Hi-1000com様にて入手可能。
何でもあるから本当毎度助かってます・・・。
●住友電装090型MT防水シリーズ3極Fコネクタのみ(三角型)[白色](端子別)/3P090WP-MT-T-F-tr - 配線コム (shop-pro.jp)
●住友電装090型MT防水シリーズ3極Mコネクタのみ(三角型)[白色](端子別)/3P090WP-MT-T-M-tr - 配線コム (shop-pro.jp)
スピードヒーラーみたいに熱圧縮チューブで防水にしようかと思ったけど、メンテ用にUSB端子を使えるようにしておきたかったのでケースを設計してプリント。
あとは車体のメーターとスピードセンサーの間に割り込ませてイグニッションON。
ちょっと走りに行ったけど、問題なさそう。
とりあえず、これで暫く様子見。
ちなみにパーツ代としては、
ATTiny85 3個で1700円
AWG28ぐらいの線が 5m 10色セットで980円
AWG28ぐらいの線が 5m 10色セットで980円
なので実質1000円かかってない感じ。


コメント
コメントを投稿