趣味の電子工作と釣りについて。電子工作は、おもに変換器作成。釣りはおもにトラウトの管釣り。
USBキーボード作成までは順調に進んだが、それ以降はイバラの道であった。解決しても解決しても、次から次へと問題が沸いてきた。さしづめ開発元のDFRobotから送られてきた刺客とでもいうべきか。
【壱の刺客】ときどきUSBキーボードが消える
arduinoの起動がWindowsよりも早すぎるのが原因みたい。arduinoの起動でディレイを入れまくる方法もあるが、Windowsリブートだと対応できない(Windowsが落ちていてもarduinoは普通に動いている)ので、Windowsが起動したタイミングでarduinoに仮想COM経由でメッセージを投げて、メッセージを受け取ったarduinoは自分を再起動するようにした。
【弐の刺客】ブートローダーが頻繁に破壊される。
PICのHID bootloaderも1/256程度の確率で壊れたがarduinoの場合は20%~100%の確率で壊れる。アプリによって確率は異なるようだ(四の刺客参照)。PICのようにbootブロックをプロテクトする方法が使えればいいのであるが、調べた限り、arduinoではこの手は使えない。でも心配ご無用。壊れたのならまた書き込めばいい。このためのツールであるAVRライターであるが、秋月だと10000円以上するのでaitendoで買ってきた。500円程度でも売っているが、どうも怪しいので1500円のやつにした。言うまでもないがAVRライターは必需品である、
【三の刺客】AVRライターのドライバーがインストールできない
署名がないドライバーはインストールできないようだ。Windows10をテストモードにして、ブートメニューから署名なしドライバーを利用可能にした。画面の右下にテストモードと表示されるのは気にはなるが。。。
【四の刺客】arduinoをリブートするためWatchDogTimerを使ったところ、ブートローダーが氏ぬ?
おそらくだけど、ブートローダーは消えてもいないし、氏んでもいない。ではなぜブートローダーとして機能できないかというと、WDTが書き換え途中のarduinoをリブートしてしまうから、と思うのである。これは、WDTをリブート処理直前で有効にすればOK。WDTを本来の目的で使うことはarduinoでは禁忌ということになる。気を付けるべし。
【伍の刺客】COMポートがコロコロ変わるのでarduinoにリブート用コマンドを送れない。
これの動きは、はっきりしている。
COM3がある・・・・アプリのUSB周りの起動にプチ失敗している。arduinoをリブートする必要がある。完全に失敗したときはCOM3すら無い(COM1のみになる)。こうなってはAVRライタしか手はない。
COM4がある・・・・アプリが正しく立ち上がろうとしている状態
COM5がある・・・・アプリが正しく立ち上がっている。arduinoのリブートの必要は無い。
つまり、COM3に対してリブート用のコマンドを送ればいい。もし無ければarduinoはコマンドを受け取れないが、そもそもそのときは受け取る必要がない。
【六の刺客】D12をdigitalのインプットとして使えない
これは結局原因不明。チップが壊れていたり基板が壊れている可能性もゼロではないが、まあ仕様だろうと思うことにして、A0ポートをデジタル入力設定にして使うことにした。
【七の刺客】A0がデジタル入力として機能しない
まずはこの絵を見て、A0はD18として使えることを知る。アナログをデジタルに切り替えるなんか命令があるかと思ったが、通常と変わらずデジタルインプットとして設定すればいいらしい。
さーてと、D18と結線したスイッチを押したら。。。。何も起きない!なんだこれ?使えねーぞ!!
さらに調べると、D18は嘘でしたD14でした、というような記載を見つけた。むむむ!
さくさくっと18から14に書き換えて、さ~て、解決。。。。と思いきや、動かん!!なんじゃこりゃ!?
さらに調べると、アナログはデジタル化してもA0とかで指定できることがわかった。なので、ダメ元で、次のように試してみた。
pinMode( A0, INPUT )
digitalRead( A0 )
たぶんダメだろうなぁ、と思ったが、ビルドはでき、書き込みもできた。でも動かないだろうなぁ。。。。あれ?動いた。。。なんだかなぁ。。。解決!
【壱の刺客】ときどきUSBキーボードが消える
arduinoの起動がWindowsよりも早すぎるのが原因みたい。arduinoの起動でディレイを入れまくる方法もあるが、Windowsリブートだと対応できない(Windowsが落ちていてもarduinoは普通に動いている)ので、Windowsが起動したタイミングでarduinoに仮想COM経由でメッセージを投げて、メッセージを受け取ったarduinoは自分を再起動するようにした。
【弐の刺客】ブートローダーが頻繁に破壊される。
PICのHID bootloaderも1/256程度の確率で壊れたがarduinoの場合は20%~100%の確率で壊れる。アプリによって確率は異なるようだ(四の刺客参照)。PICのようにbootブロックをプロテクトする方法が使えればいいのであるが、調べた限り、arduinoではこの手は使えない。でも心配ご無用。壊れたのならまた書き込めばいい。このためのツールであるAVRライターであるが、秋月だと10000円以上するのでaitendoで買ってきた。500円程度でも売っているが、どうも怪しいので1500円のやつにした。言うまでもないがAVRライターは必需品である、
【三の刺客】AVRライターのドライバーがインストールできない
署名がないドライバーはインストールできないようだ。Windows10をテストモードにして、ブートメニューから署名なしドライバーを利用可能にした。画面の右下にテストモードと表示されるのは気にはなるが。。。
【四の刺客】arduinoをリブートするためWatchDogTimerを使ったところ、ブートローダーが氏ぬ?
おそらくだけど、ブートローダーは消えてもいないし、氏んでもいない。ではなぜブートローダーとして機能できないかというと、WDTが書き換え途中のarduinoをリブートしてしまうから、と思うのである。これは、WDTをリブート処理直前で有効にすればOK。WDTを本来の目的で使うことはarduinoでは禁忌ということになる。気を付けるべし。
【伍の刺客】COMポートがコロコロ変わるのでarduinoにリブート用コマンドを送れない。
これの動きは、はっきりしている。
COM3がある・・・・アプリのUSB周りの起動にプチ失敗している。arduinoをリブートする必要がある。完全に失敗したときはCOM3すら無い(COM1のみになる)。こうなってはAVRライタしか手はない。
COM4がある・・・・アプリが正しく立ち上がろうとしている状態
COM5がある・・・・アプリが正しく立ち上がっている。arduinoのリブートの必要は無い。
つまり、COM3に対してリブート用のコマンドを送ればいい。もし無ければarduinoはコマンドを受け取れないが、そもそもそのときは受け取る必要がない。
【六の刺客】D12をdigitalのインプットとして使えない
これは結局原因不明。チップが壊れていたり基板が壊れている可能性もゼロではないが、まあ仕様だろうと思うことにして、A0ポートをデジタル入力設定にして使うことにした。
【七の刺客】A0がデジタル入力として機能しない
まずはこの絵を見て、A0はD18として使えることを知る。アナログをデジタルに切り替えるなんか命令があるかと思ったが、通常と変わらずデジタルインプットとして設定すればいいらしい。
さーてと、D18と結線したスイッチを押したら。。。。何も起きない!なんだこれ?使えねーぞ!!
さらに調べると、D18は嘘でしたD14でした、というような記載を見つけた。むむむ!
さくさくっと18から14に書き換えて、さ~て、解決。。。。と思いきや、動かん!!なんじゃこりゃ!?
さらに調べると、アナログはデジタル化してもA0とかで指定できることがわかった。なので、ダメ元で、次のように試してみた。
pinMode( A0, INPUT )
digitalRead( A0 )
たぶんダメだろうなぁ、と思ったが、ビルドはでき、書き込みもできた。でも動かないだろうなぁ。。。。あれ?動いた。。。なんだかなぁ。。。解決!
PR
この記事にコメントする
LattePandaの動作について 教えて下さい
上記のLattePandaにタッチパネル付きのLCD表示機器(HDMI、USBケーブルで接続)を取り付けて、プリンターをUSBケーブルで接続しています
「POWER SW」で電源起動し、WIN10を起動してWin10上でソフトウェアを起動させています
(終了時は、シャットダウンしています)
上記の接続構成、手順動作を行っている時に
時としてWIN10が立ち上がらない状態が発生する事があるのですが、何か問題が有るのでしょうか?
※電源起動時に、LattePandaのロゴは出るがWIN10に移行しない ・・・ こんな事があるでしょうか?
※この起動しない状態で、「RESET」を押してやると正しく起動してWIN10の表示に移行していく
COMポートの番号等が変わって(?)WIN10と正常に通信出来なくなり結果的にWIN10が起動できない(しない)ように成るのでしょうか?
もし、そうで有ったら「常に正しくWIN10が起動する」ようにする方法があるでしょうか?
何か、ヒント、方法をご存知でしたらご教授頂ければ幸いです
「POWER SW」で電源起動し、WIN10を起動してWin10上でソフトウェアを起動させています
(終了時は、シャットダウンしています)
上記の接続構成、手順動作を行っている時に
時としてWIN10が立ち上がらない状態が発生する事があるのですが、何か問題が有るのでしょうか?
※電源起動時に、LattePandaのロゴは出るがWIN10に移行しない ・・・ こんな事があるでしょうか?
※この起動しない状態で、「RESET」を押してやると正しく起動してWIN10の表示に移行していく
COMポートの番号等が変わって(?)WIN10と正常に通信出来なくなり結果的にWIN10が起動できない(しない)ように成るのでしょうか?
もし、そうで有ったら「常に正しくWIN10が起動する」ようにする方法があるでしょうか?
何か、ヒント、方法をご存知でしたらご教授頂ければ幸いです
Re:LattePandaの動作について 教えて下さい
このボードは起動の仕方が特殊で、秋月のサイトに書いてある通りの手順で立ち上げないと起動しません。電源を供給してすぐに電源ボタンを押しても、反応しなかったと思います。うまく起動しないのは、手順に問題があるか、または電源容量が足りないか、のどちらかのような気がします。
BIOSの設定で、電源を供給したらボタン押さなくても起動するようにしてみると、ひょっとしたら解決するのかもしれません。へんな起動のさせ方を強要するぐらいなら、こっちをデフォルトにしてくれればいいと思うのですが。。。
>上記のLattePandaにタッチパネル付きのLCD表示機器(HDMI、USBケーブルで接続)を取り付けて、プリンターをUSBケーブルで接続しています
>「POWER SW」で電源起動し、WIN10を起動してWin10上でソフトウェアを起動させています
>(終了時は、シャットダウンしています)
>上記の接続構成、手順動作を行っている時に
>時としてWIN10が立ち上がらない状態が発生する事があるのですが、何か問題が有るのでしょうか?
>
>※電源起動時に、LattePandaのロゴは出るがWIN10に移行しない ・・・ こんな事があるでしょうか?
>※この起動しない状態で、「RESET」を押してやると正しく起動してWIN10の表示に移行していく
>COMポートの番号等が変わって(?)WIN10と正常に通信出来なくなり結果的にWIN10が起動できない(しない)ように成るのでしょうか?
>もし、そうで有ったら「常に正しくWIN10が起動する」ようにする方法があるでしょうか?
>何か、ヒント、方法をご存知でしたらご教授頂ければ幸いです
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
BIOSの設定で、電源を供給したらボタン押さなくても起動するようにしてみると、ひょっとしたら解決するのかもしれません。へんな起動のさせ方を強要するぐらいなら、こっちをデフォルトにしてくれればいいと思うのですが。。。
>上記のLattePandaにタッチパネル付きのLCD表示機器(HDMI、USBケーブルで接続)を取り付けて、プリンターをUSBケーブルで接続しています
>「POWER SW」で電源起動し、WIN10を起動してWin10上でソフトウェアを起動させています
>(終了時は、シャットダウンしています)
>上記の接続構成、手順動作を行っている時に
>時としてWIN10が立ち上がらない状態が発生する事があるのですが、何か問題が有るのでしょうか?
>
>※電源起動時に、LattePandaのロゴは出るがWIN10に移行しない ・・・ こんな事があるでしょうか?
>※この起動しない状態で、「RESET」を押してやると正しく起動してWIN10の表示に移行していく
>COMポートの番号等が変わって(?)WIN10と正常に通信出来なくなり結果的にWIN10が起動できない(しない)ように成るのでしょうか?
>もし、そうで有ったら「常に正しくWIN10が起動する」ようにする方法があるでしょうか?
>何か、ヒント、方法をご存知でしたらご教授頂ければ幸いです
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>