デバッグはArduinoを使わず、直接ATmega328Pに書き込んでいましたが、プログラマのUSBASPが頻繁に書き込みエラーを起こす上、Windowsから認識できなくなることもあって何度もWindowsを再起動。リファクタリングにかかった時間の半分位はUSBASPのトラブルに費やされました。何が悪いのでしょうかね?安物だったから?
ソースコード(スケッチ)をブログに貼ると長くなってしまうので、PIC電子工作のページに置きました。デジタル水準器スケッチです。傾きを計算するため三角関数を多用しているあたりが今ひとつスマートでありません。また、圧電スピーカから極小さなピーという音が聞こえることがあります。なぜかな? Arduinoの使い方が正しくないかも。
教訓としてArduinoで動作確認までしっかり行ってソースFixしてから、ATmega直接書き込みをした方が楽だったと思います。ブレッドボードの配線を変えるのが面倒でつい楽な方に走った結果、遠回りでした。
リファクタリング以外の修正箇所は以下です。
1. ニコ動でコメント頂いた、キャリブレーションはスイッチを離した1秒後に実施。スイッチを押すとその力でブレッドボードが傾き、正しいキャリブレーションができないため。
2. これもニコ動でコメント頂いた、degreeのスペルミス修正。
3. 動作モード切り替え時に傾き測定精度が0.1度か1度か分かりづらかったため、表示モードに-1,-01を表記するようにしました。これに伴い、ピッ音の音符アイコンの表示位置変更。
ソースコード(スケッチ)をブログに貼ると長くなってしまうので、PIC電子工作のページに置きました。デジタル水準器スケッチです。傾きを計算するため三角関数を多用しているあたりが今ひとつスマートでありません。また、圧電スピーカから極小さなピーという音が聞こえることがあります。なぜかな? Arduinoの使い方が正しくないかも。
無保証です。バグがあるかも知れませんし、加速度センサや有機ELディスプレイの使い方が正しくないかも知れません。改変などご自由にどうぞ。もし、お気づきの点があればお教え下さい。
以下は、修正前の動画です。
PIC電子工作ブログを謳っていますが、全然PICの話題がでてきませんね。そろそろ何か考えましょう。
初めましてAdruino初心者です。貴兄のこの作品の格好良さに完全にやられまして、私も同じパーツを揃え組み上げました。基本的な動作は問題ないところまでは来たのですが、動作が非常に重い状況があり、キー入力も長押しで反応している状況です。Arduino nano互換品&Arduino IDEでの書き込みで環境なのですが、もし処理速度にノウハウがありましたらご教授頂けると幸いです。
返信削除コメント、ありがとうございます。
返信削除処理が遅い件ですが、デバッグ用に何かシリアル出力をし続けていませんか?
全く同じソースコードを使っていますので、違いは無いはずなのですが、まだ各要素を切り離してデバッグできるスキルがないのですから、突っ込んだ確認ができていない状況です。しかしながらすべてのファンクションは動いていますので、確認させていただきました。
返信削除以下のblog記事によると外付け16MHzの水晶振動子で動かすためにヒューズの設定を変えたようです(忘れていた)。でも、nano互換機なら16MHzですよね。
返信削除https://pic-garage.blogspot.com/2018/06/atmega.html
https://pic-garage.blogspot.com/2018/06/atmega_18.html
ATmegaとNanoで何か違うのかも?
スケッチを見直してみましたが、表示処理に時間がかかるとスイッチの状態を確認するまでに時間がかかり、長押しのような感じになるかも知れません。
削除いろいろと調べて頂きありがとうございます、この水準器は望遠鏡の設置に使用させて頂きたいと思っています。使用しているNanoはTMega328ですので違いはないと思いますが、2作目の映像を見る限り同じNanoが使用され外部クロックではなさそうに思いました。SSD1306のイニシャライズも違いはないようです、気になっていますのは三角関数の計算で何か特別なコンパイルや中間処理がありますでしょうか?すみませんがよろしくお願いします。
返信削除三角関数などのコンパイルで特に何もしていなかったと思います。
削除もしかしたら何か高速化の手段があるのかも知れませんが知りません。
よろしくお願いします。
了解いたしました。色々とご手稲にアドバイスありがとうございました。頑張って完成したさせたいと思います。
削除