つづき
こんちゃす!くろべこです。
前回で【Basic Serial3】ライブラリを使用してATtiny13のシリアルモニタをしたわけなのですが、実際にマイコンを使ってみたいのはデバックなどで頻繁に確認するアナログ値などの数値データですよね。
デバックに便利ATtiny13でシリアル通信をやるよ!【前編】
ATtinyでのシリアル通信方法をアプリダウンロードから外部回路構成、ライブラリ導入、サンプルプログラム導入、デモまでまるっと解説を行っております。参考になれば幸いです。
そこで今回はArduinoのシリアルモニタと同じような使い方ができるようにBasic Serial3ライブラリでの数値データのモニタ方法を中心に進めていきたいと思います。
準備編
<<材料>>前回プラスα
- 100kΩ可変抵抗
今回は単純に可変抵抗のアナログ値を読み取っていきたいと思いますよ。
回路図
スケッチ
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 32 33 |
#include <BasicSerial3.h> long analog=0; void setup() { } void serOut(const char* str) { while (*str) {TxByte (*str++);} } // 10進数出力 void sDEC(uint16_t d) { int8_t n =-1; uint16_t v = 10000; for (uint8_t i=0; i<5; i++) { if (d >= v) { TxByte(d/v + '0'); d %= v; n=i; } else { if (n!=-1||i==4) TxByte ('0'); } v/=10; } } void loop() { analog = analogRead(2); serOut("\n\r"); sDEC(analog); } |
実装
では書き込んでみましょー
ちょ、、、、
こんなスケッチだけでフラッシュメモリの40%使っているとかATtiny13の容量少なすぎ!!
確かに何気なく使用しているArduinoの関数って意外と中身見ていると様々なチップに対応できるようにかなりの量のコードが書かれていたりするんですよね。
analgRead()の内部構造 @ garretlabさん
いままでArduinoのライブラリやら関数で楽していましたがATtinyを使う以上コードの圧縮を検討する必要アリですね。今後の宿題です。
話を戻しますと、うまく書き込めれば以下のようにanalog値がTeratermのシリアルモニタに表示されるはずです。
いかがだったでしょうか、ここまで表示できればArduinoのシリアルモニタと変わらないと思います。これで開発作業がはかどること間違いなしです!
おわりに
今回の紹介ではmap関数も使おうかなと思っていたのですが、、、
どっひゃー!圧倒的容量不足。
これでわかりましたATtiny13活用するにはレジスタ操作を覚えないといけないと、、、
今後私自身も勉強しながらデータのミニマム化も検討していこうと思います次第です。
ではでは~
コメント