無料ブログはココログ

« 2021年7月 | トップページ | 2021年9月 »

2021年8月

2021年8月24日 (火)

Arduinoでもっと電子工作を11

Lesson10

ネタ切れで中断したArduino電子工作ですが、RailComアドレスリーダをIIC(I2C)デバイスに出来たので、IICの続編とします。
ミント缶は2台目のミント缶からスロットルデータを受信するだけですが、アドレスリーダはマスターからの要求でアドレスを返すIICデバイスにしなければなりません。方法が分からないので、先ずはレーザ距離計で使ったVL53L0Xライブラリでマスターのコードを参照しました。
因みに、疑問だったIICアドレスも、Arduinoでは7ビットでRead/Writeビットはお任せの旨、同ライブラリのコメント欄に記述がありました。

 Wire.beginTransmission(address); //ADDRESS_DEFAULT 0b0101001
 Wire.write(reg); //読みだすデバイスのレジスタを指定
 last_status = Wire.endTransmission();

 Wire.requestFrom(address, (uint8_t)1); //1バイトのデータをリクエスト
 value = Wire.read();

まだスレーブの構築が分からないので、"Wire.requestFrom"でネット検索したら参考になるコードが見つかりました。Rephtone 電子工作
その結果デバイス側は次のコードでいけそうです。
//初期設定
void setup() {
 Wire.begin(myID);
 Wire.onReceive(receiveEvent);
 Wire.onRequest(requestEvent);
}
//マスターがデバイスのレジスタを指定した時
void receiveEvent() {
 while(Wire.available() > 0) {
  registerIndex = Wire.read();
 }
}
//マスターがデータを要求した時
void requestEvent() {
 Wire.write(data[registerIndex]);
}

 

2021年8月14日 (土)

自動踏切

在線検知

自動運転用のセンサーディテクタボードで自動踏切スケッチを作りました。踏切も動画紹介も無くて「なんなんだっ」て事ですが、お伝えしたいのは在線検知です。在線検知で思い浮かぶのは閉塞運転くらいで、今更ですが自動踏切に役立つ事に気づきました。進行方向に関わらず、在線検知したら踏切警報を鳴らすので、フォトセンサーに比べてスケッチを単純化出来ました。警報解除にはフォトセンサーを使います。

接続

片側ギャップの線路に本線からダイオードを介して接続します。車両が検知区間に侵入して発生するダイオード両端の電位をセンサーディテクタボードで検知します。

Ontrack

センサーディテクタボードのCH1とCH2を在線検知タイプに設定して、検知チャンネルで運転モードを選択します。CH1はOvalモードで手動運転、CH2は2点間往復モードです。踏切警報音はMP3を使用しました。線路はアナログモードですが、DCCの場合は線路からアクセサリデコーダに電源供給出来ます。その場合は検知区間から供給しない様、注意が必要です。

Layout

続きを読む "自動踏切" »

2021年8月 8日 (日)

C-SizeDCC モード選択

C-SizeDCCのジャンパー設定

C-Size基板用のケースに入れたら、モード選択のジャンパー設定が出来ないので、ボタンを押しながら電源オンでモードを選択するコードをスケッチに追加しました。
同時に、トラックボタンオフでPWMがオフにならない、ファンクション番号が初期値に戻る、などの不具合を修正しました。

CsizeDcc_b.zip

Addr

TM1637はボタン長押しを検出できませんが、電源オン時に一度だけの読み込みなので、問題無くボタンの検出が出来ました。前列左から「アナログ」「Dcc/MM」「CV読み書き」「アドレス読み書き」の順です。

Mode

« 2021年7月 | トップページ | 2021年9月 »