忍者ブログ

あやの

NゲージをベースとしたDCCについての日記を 書いています。 ある程度貯まりましたら、鉄道模型のDCCのまとめサイトに まとめています。 DCC館 http://1st.geocities.jp/dcc_digital/ DCC2号館 http://dcc.client.jp/

2017/03    02« 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  »04
Smile Decoder , Smile Function Decoderのプログラム(スケッチ)を変更するには、
Arduino IDEをインストールする必要があります。

導入方法が他力本願状態で、わかりづらかったので、Arduinoを扱ったことが無い人用に
Arduino IDEのインストール
ライブラリの設定
Smile Decoderへのブートローダーの書き込み
Smile Decoderへのスケッチの書き込み
まとめてみました。

拍手[0回]

PR
なんだかんだと言って、大きさによる安定感のあるSmileWriter5in1が使いたかったけど、
ばらすことができないLocoスロットルに食われているのでやっすいArduinoを購入しました。



USBシリアル部にAtmega16が使用されていると、Mac OS X El Capitanでも
使えます(^^ ※CH340は認識しなかった・・・


最近、書き込み装置を使って書き込むも使えなくなっていたので、最新版に上げてみたところ、
あっさり動くようになりました。(Arduino 1.6.12です)

だけど、無効なライブラリ云々のメッセージが出るようになりました・・・
今んとこ、対策は?です。









拍手[0回]

ソースを見やすくする為に、いろいろいじっていた所、Arduinoのコンパイルが終わらない
症状が出ましたので、そのやっつけ方法。

以下の様なメッセージが大量に出て、コンパイルが終わりません・・・

at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3777)


■切り分けの方法
関数内を#if 0 〜 #endif でくくる、または削除して1関数ごとにコンパイルしてみる。


そうすると、途中でコンパイルが通る様になります。
以下のプログラムに誤りがある様です。あとはにらめっこ。

はい、原因はコレでした。
誤    Serial.println(");
正    Serial.println("");
ダブルクォーテーションが1つしかありませんね。
構文解析の時に、この誤りがうまく検出できずに、はまってしまう様です。
 
Arduinoのコンパイルが終わらない時には、このカキコを思い出してくださいw
・関数内を #if 0 〜 #endif でくくる、または削除する。(バックアップとっておいて削除が簡単)
・ダブルクォーテーションの数があっているか。

拍手[0回]

いろいろいじって、いい感じのものができました。
ボタンが押されたら、50ms周期のサンプリングで10回記録して、
そのバッファ内の状態から、クリック・ダブルクリック・長押しを判定する処理にしました。







ソースファイルはこちら


拍手[0回]

仕事中にもう一個の方法を考えたので、帰宅次第作ってみました。
50ms周期にボタンの状態を10個のリングバッファに詰めておき、
何かボタンが押されてから、リングバッファが一周すると、
ボタンの状態を計算して、シングルクリック・ダブルクリック・長押しの
検出ができる様になっています。

リングバッファを形成しなくても、初回キー入力からボタンをロギングさせたほうが
簡単ぽいですね。



拍手[0回]

ブログ内検索

プロフィール

HN:
あやのすけ
性別:
非公開
| HOME Next >>
Copyright ©  -- あやの --  All Rights Reserved
Design by CriCri / Material by もずねこ / powered by NINJA TOOLS / 忍者ブログ / [PR]