「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



http://mainichi.jp/select/news/20140425k0000m040122000c.html

別府で山火事ってニュースがあって、何気なく写真
見てみたら、ものすごい大規模なのね。びびった。
なんだろうねぇ。また、タバコかねぇ?




ずいぶん前のモノだけど、
http://www.geocities.jp/kokolaworks/famicnv/
ふぁみこんぶ、っていう画像変換ソフトを発見。ほう。
面白そうなので、ちょっと試す。

いくつかの種類で試してみたところ、どうやらこういう
のは、クルマの写真が似合うみたい。



ホンダのRA271。違和感なし。当時のファミコンから
抜け出てきたといってもふしぎではない感じ。

いやぁ、これ、どっかから当時の画像をパクって来た
んだろ?と思うかもしれないので、さらに、



BRZ。
両方ともこの間のモーターショーで撮ってきたやつ。
さすがにBRZは当時存在してないはずだ。

でも、ファミコンにしてはちょっと色数が多過ぎ
かな。MSXっぽいかんじ?

古いソフトのせいか、windows7の動作について触れら
れてなかったんだけど、×印をクリックしても、
プログラムが終了してくれないみたい。完全32ビット用
に開発されたんだろうなぁ。仕方ないので、タスク
マネージャで終了。




ArduinoのFFTライブラリの対数で出力するときの計算
が良くわかんなかった件。

あらためて、説明文を読み直してみたら、ちゃんと
書いてあった。

    16*(log2((img^2 + real^2)^0.5))

だって。元の数値(実数、虚数の平方和の平方根)は
16ビット精度で持ってて、それを2の対数取ると、当然
0~16の間の値になるので、これを8ビットデータ幅に
収めつつ、8ビット幅最大の精度を確保するために16倍
しているってことらしい。

なるほど。そういうことか。その辺が知りたかったん
だよな。




実際、適当な波形データを流し込んで、計算途中や
計算結果の値を眺めてみると、ビンゴの値が出てくる。

ってことは、コイツを元にして、dbの値に換算して
やればいいみたい。
実際、説明文には、db計算用的な文章が書いてあるん
だけど、底が2と10では、どう読み替えればいいんだろう?
後で落書き帳で計算式書いて考えよう。


んで、どんな計算なのかも、ライブラリの中身を
ちょっとだけ眺めてみたんだけど、基本はインライン
アセンブラと、定数テーブルなので、それだけ見ても
よくわからない。
ただ、定数テーブルの.incファイル中に、アセンブラ
ならこんな風にするとテーブルサーチ出来るよ、的な
コメント文が埋めてあった。

曰く、どうやら、255以下(8ビット以下)の場合は
そのままテーブル参照、256~4095の場合は4ビット
右にシフトしてから(別の)テーブルを参照、4096
~65535までは8ビットシフトしてからテーブルを
参照、みたいな感じで処理するみたい。



以前、平方根の開平をアセンブラで組んだとき、
時間が長すぎるからテーブル参照にしようと思った
んだけど、256以上の部分をどう処理したらいいかで
なやんで、あきらめちゃったんだよな。

なるほど、こうすれば、8ビット精度で開平計算が
できるんだな。


この対数計算にしても、

http://nahitafu.cocolog-nifty.com/nahitafu/2006/11/fpga_04ab.html
なひたふさんのこの対数計算の考え方にしても、
まずはやっぱり計算式を紙の上でこねくり回すこと
が大事なんだろうな。



http://akizukidenshi.com/catalog/g/gM-06682/
秋月に、DFrobot社のArduino Pro Mini互換ボード
なんて入ってたのか。知らなかった。値段的にも
悪くないな。ピンもコンパチになってるし。

SparkFunの5V版持ってるから、できれば3.3V版が
あるとうれしいんだけどな。




http://www.dfrobot.com/index.php?route=product/product&product_id=347#review-title
DFRobot社のLCDシールドって、今オイラが使ってる
NOKIAの5110液晶とそっくりだな。
https://www.youtube.com/watch?v=V3oHoyX4zA8
バックライトも含めて。

コントローラチップが実際にそうなのかどうかを
調べようと思ったんだけど、型番が判らなかった。
でも多分そうだろうな。

シールド形状で使いやすい5110液晶が安く手に
入るといいんだけどな。





http://www.embeda.com.tw/ucxpresso/
このNXP LPC11U37搭載のuCXpressoって、mbed使えない
のかなぁ?
LPC11U37対応っていうのは、しらべてもヒットしないな。

見た目、大きさ、形、ナカナカいいんだけどな。






コメント ( 0 )




Arduinoで、オモチャオシロを作る上で、FFTで周波数
表示機能も欲しいんだけど、2KBのSRAMで収まるのか
を確認するために、テストプログラムなどをゴニョゴニョ。



昨日の、空きメモリ計算しようとすると、
   「r28 cannot be used in asm here」
とか出てきちゃうのは、色々とBBSなんかを眺めていると、
他にも困ってる人がいるっぽい。でも、原因はまだ不明
な感じ。

色々、テストパターンを試して、どんなときに起きるのか
を調べてみたんだけど、ちゃんと切り分けできるところ
まではいけなかった。


でも、なんとなくどんなときに起きるのかは、少し
判った。

特定の関数を、特定の呼び出し方(引き数の指定)で
呼び出すときに、なぜかFFTライブラリが悪さして、
プログラム全体でこんなエラーでコンパイルが
はじかれるみたい。

それらの関数では、charが引き数だったり、その前に
fprintfでゴニョゴニョと数値文字列変換をやって
いたりというのが、なんとなく置きに召さないっぽい。



具体的には、printfで空きメモリを表示させるか、
LCDに表示するか、という関数類で発生してるみたい。

FFTライブラリの中身(実体)はインラインアセンブラ
で書かれているので、具体的にナニが悪いのかを
突き止めるのは難しそう。型変換周りなのかなぁ?
と思って、型変換関係のウォーニングをすべて
取り除いたんだけど、消えなかった。




ただ、一つ得たものがあった。空きメモリを調査
するためのライブラリが悪さしてるのかと思って、
独自に空きメモリを計算する処理を、

http://jeelabs.org/2011/05/22/atmega-memory-use/
http://www.noah.org/wiki/Arduino_notes

このページを参考にして、独自に計算する関数を
書いてみた。ものすごく単機能で、まさにヒープと
スタックの間のメモリ空間のSRAM数を数えるだけ
の処理。こんな感じ。

extern unsigned int __heap_start;
extern void *__brkval;
// RAMEND and SP seem to be available without declaration here
int freeRam () {
  // __brkval is the address of the top of the heap if memory has been allocated.
  // If __brkval is zero then it means malloc has not used any memory yet, so
  // we look at the address of __heap_start.
  //int stack_top; 
  return (int)SP - ((int)__brkval == 0 ? (int)&__heap_start : (int)__brkval); 
}


参考ページのままでは微妙に動かなかったので、
色々と弄って、それなりに動くように改造。

なんでも、malloc使ってるときは__brkvalが、
使ってないときは__heap_startがヒープのアタマ
になってて、スタックポインタのアドレスから
そのどちらかを引けば余ってるヒープサイズが
求まるという処理。
(externの部分はプログラム先頭に、関数は
 適当なところに置けばok)



とりあえず、それなりに動くようで、この関数の
戻り値を、単純にprintfでシリアル出力するだけ
なら、コンパイルでエラーにならないみたい。


んで、ぶつぶつ言ってても仕方ないので、これを
元にして、FFTライブラリを使ったときのメモリ
使用量を計測してみる。

まず、32点、64点、128点でそれぞれのメモリ使用量
を計って、それら同士で差を取って見る。うん。
なんとなく、
http://wiki.openmusiclabs.com/wiki/ArduinoFFT
ここで解説されている通りの差分が表示されること
が見て取れた。

他の処理と、FFT、メモリ監視ロジックをあわせて、
今のところ、64点FFTで400バイトちょっと。128点
だと200バイトくらいになっちゃう。



これだと、ちょっとロジックを書くだけでも、
このエリアにスタックが進行してくるから、
128点は厳しいだろうな。できれば128点でFFT
掛けて、実数化で64個のデータとして表示
したかったんだけどな。まぁ、ないモノは
仕方ない。




次。

FFTがそれなりに入りそうな感じなので、次に
FFT結果を対数表示にした場合のことを考える。

ArduinoのFFTライブラリには、対数表示するため
の機能が付いているんだけど、この数値って、
どうやったらdb表記に換算できるのか?という
部分。


んで、実際に数値を入れて、リニアの場合と
log表記の場合で見比べてみる。

…なんだかよくわからない数値になっちゃう。


ウィンドウ処理を省いて計算して、出てきた結果
が、2を底とした単純なlog計算になっているわけ
じゃぁないみたい。

改めて、ライブラリに付属していたtxtファイルを
眺めてみる。
複素数→実数化計算の説明の中に、
    scale factor = 255/(181*256))
なんてのがある。これ怪しいかな、なんとなく。

でも、log計算の説明個所には、
   it uses a lookup table to calculate the
   log of the square root, and scales the
   output over the full 8b range {the
   equation is 16*(log2((img^2 + real^2)^0.5))}.
っていうのがある。
これならわかる気がするんだけど、そんな数値に
なってるの?ホント?


いずれにしても、窓関数を使うことで、特定周波数
の成分はその両側に分散しちゃったり、削り落とす
エネルギーがあるから、1Vrmsの波形を入れても、
0dbよりは小さい値で拾うことになるはずなんだよな。



オモチャのオシロとは言っても、ある程度根拠が
ないとどうしようもない代物にしかならないから
なぁ。このあたりは、面倒でもちゃんと詰めて
おかないと、いかんよなぁ。

あぁ、なんだろう?この妙な数値…




http://gigazine.net/news/20140413-minnowboard-max/
MinnowBoard MAX。なかなかのスペックだし、x86系
64ビットCPUなのはイイカンジなんだけど、x86系
のATOM搭載なら、折角ならWindowsやPC系Linuxとか
がそのまま入るようにしてあればいいのにな。

動かすときにGUIは要らなくても、開発時には
バーチャル環境として最新のWindows機やLinux環境
で開発できれば、色々とサクサクなんだと思うんだ
けどな。




http://settembre21x.blogspot.jp/2013_10_01_archive.html
ディスクリートのアンプ。いいなぁ。



https://twitter.com/tokoya/status/458774888795209728
そうか。空飛ぶスパゲッティ・モンスター教は、
3Dプリンタでできたのか。なるほど。なんつって。





コメント ( 0 )




5110液晶画面の目処が付いてきたので、コイツに
FFTを組み合わせて、メモリ使用量を確かめてみる
ことに。

そしたら、あちこちで地雷を踏みまくり。



まずはFFTライブラリを読み込んでみる。ザックリ
としたロジックの骨組み部分を書いて、コンパイル
してみる。とりあえず通った。

通ったので、メモリ使用量を確認しようと思って、
以前書いたスケッチから、未使用メモリ量を計算
する関数を拾ってきて、貼っつける。

  「r28 cannot be used in asm here」
  「r29 cannot be used in asm here」

とかいう、良くわかんないエラーが出ちゃう。
これって、インラインアセンブラでレジスタ28番
と29番(Yポインタ)がどこかと競合しちゃって
るっていう風な話なんだろうなぁ。

対処にこまって、あれやこれや検索してみる…。



詳しく書かれてるところも見当たらないし、対応も
イマイチしっくりこない。

ソース中の一部分をあちこちコメント化して、
どこに原因がありそうなのかをチェックして
行ってみる。

すると、どうやらおかしそうなところが見えて
きた。FFTか、残メモリ計算か、その両方を記述
したときにエラーになるみたい。


さらにあれこれと彷徨っていて、
http://www.openmusiclabs.com/forums/viewtopic.php?f=4&t=433
こんな情報があった。


どうやら、FFTライブラリと残メモリ計算の間で
レジスタを競合してしまうみたい。


まぁ、詳細がわかったところで、FFTライブラリの
細かい内部まで突っ込んだ話になっちゃうから、
どうしようもなさそうな気がするんだけど…

というわけで、とりあえず暫定対応としては、
FFT関連関数をコメント化した状態でメモリ残量を
チェックし、加えてFFT計算で必要になるSRAM量
(理論値)を手計算して使う感じかな。




さらにもう一つ。

以前書いたメモリ使用量計算の処理は、どこかの
海外サイトのスケッチを参考にしたものなんだけど、
それが悪さしてるんじゃ?と思ったので、別の
モノを探してみる。

http://playground.arduino.cc/Code/AvailableMemory

こんなライブラリがあったのか。

折角なので、このライブラリを借用してみる。

…例によってzipを解凍して、ライブラリの
フォルダにコピー。
メモリ確認用のプログラムサンプルをコンパイル
してみる。

…エラー。取り込まれない。と言っても、ヘッダ
ファイルが見つからないじゃなく、ライブラリ内
の関数が未定義って出てきちゃう。

なんじゃこりゃ?


改めてArduinoのライブラリ関係について検索を
してみると、バージョン1.0.5からライブラリ関係
の機能がアップしてたんだな。


具体的には、

http://blog.arduino.cc/2012/10/22/arduino-1-5-support-for-the-due-and-other-processors-easier-library-installation-simplified-board-menu-etc/

ライブラリ簡単インストール機能とやらを、
Arduino1.5からのバックポートで取り込んで
いるみたい。へぇ。

メニューバーから、ライブラリの追加を行うと、
ダウンロードしたzipファイルから直接ライブラリ
を取り込んで、展開してくれるみたい。


折角の機能なんだけど、さっきの、ライブラリ用の
フォルダに解凍したライブラリを放り込んでも
うまく認識されないのは、そのせいなのか???


気を取り直して、とりあえず動かしてみることだけ
を優先する。
zipファイル状態のライブラリを、IDEの機能で
取り込んでみると、確かにメモリ残量チェックだけ
のサンプルプログラムがコンパイルできた。動作も
大丈夫みたい。

んで、さっきのメモリ残量計算処理と置き換えてみる。
…やっぱり同じエラーが出る。

どうやら、メモリチェック処理とFFTは、完全に
水と油みたいだな。




気を取り直して、新しくArduino1.5から1.0.5にバック
ポートされたライブラリの機能を確認しなおしてみる。

どこに取り込まれたんだ?zipファイルのまま参照
したりはしてないんだろうなぁと思って、展開された
実体を探す。


…いつものライブラリフォルダには格納されてない。
ってことは、ここには居ないわけだな。

どこに展開しちゃったんだろう?とあちこち探し
まくって、アレコレと検索掛けてみて、ようやく
判った。

自分で書いて保存したスケッチの格納先フォルダに、
新しく「libraries」っていうフォルダが追加されて
いて、その中にzipが解凍されてた。



こんな風に。librariesフォルダと並列に存在するのは
これまでに作って保存してある各スケッチ。

IDEからは、こんな風にすると、「#include<xxxxx.h>」
と自動で読み込むためのコードが1行追記される。
(「Contributedのところに追加されてる)




コンパイルしてみる。通った。よし。




さて、さっきの話に戻る。

なんで元々のライブラリフォルダ(この写真では
Contributedの記述より上にあるモノが格納された
ディレクトリ)に放り込んでも、なぜ認識され
ないのか?


各バージョンでは、標準のライブラリが固定化され
てしまって、それ以外はcontributedの方に入れて
おけってことなのか、それともバグなのか。

バグだったら、とっくに見つけられてギロンされて
いてもイイ頃なんだけどな。


それにしても、こういう風にライブラリを読み込む
元を複数にするってことは、コンパイルをワンクリック
するときに、無意識にバグを作りこむ(ライブラリの
バージョン不一致)恐れが生じるから、このあたりの
仕様は、慎重にした方がよさそうな気がするけどな。

コンパイル時にエラーになるならともかく、プログラム
自体を見直しても、(間違った方の)ライブラリソース
を見直しても、エラーがあるように見えないバグを
作りこんだり…

そもそも、どういう順序で、どこにおかれたライブラリ
を探してるのかなぁ?



それにしても、ちょこっとテスト…のつもりで、
次々と地雷を踏んでしまったなぁ。困った。
手が殆ど進まなかった。



Raspberry Piの、Fuse ZX Spectrum。
https://www.youtube.com/watch?v=Jzdv-JUNxyU
スバラシイ。

まさか、ゲーグラでも有名な、ZX Spectrumの
R-TYPEを、Raspberry Pi上のエミュで見ることに
なろうとは。

それにしてもZX Spectrumのプログラマはスゴイ
よな。どう見てもR-TYPEだもんな。


オイラも、AVRのアレ
http://picavr.uunyan.com/avr_m_demo.html
を使って、
   「AVR-TYPE」
なんてのをでっち上げてみたりするかな。
マップデータを格納するメモリさえ確保
できれば、ナントカなっちゃいそうな気が
するんだけどな。



コメント ( 0 )




Arduinoのスケッチ、長くなったのでファイル分割
をしようとして、エラーになった話の続き。

とりあえず、分割できた。たいした話じゃなかった。
こんな感じに、共通的な処理を.cppと.hの2つの
ファイルに追い出して、.inoファイルには主要処理
だけという配置に。だいぶすっきり。



.cppと.hの形式になったので、もう少し綺麗にすれば、
他のライブラリ同様にライブラリフォルダに入れても
使える状態になってるはず。



エラーになってた理由は大きくは2つ。

一つは、for文とかの中で変数定義しちゃってたり
する行儀の悪いのをエラーにされちゃってたり、
その他モロモロ。全部をC++の文法に倣って書き換え
するか、それとも拡張子だけ.cppに書き換えるかを
1秒ほど悩んだんだけど、手を抜いて.cppに変えた
だけで済ます。
最近、この手のルールは面倒なので、楽な方に
流されちゃってるんだよな。もう。


もう一つは、#includeで読み込むファイルの指定の
方法。というか、記述方法。
何故だかわかんないけど、ダブルコーテーションが
「全角文字」になってた。
フォントのサイズも相まって、凄くわかりにくいバグ。
しかもこの付近が怪しげだなぁと、何度も書き直し
した記憶が。

その2つ以外は、普通にヘッダファイルとかに分割する
方法に従えばokだった。


んで、半角で書き直したら、スルッと通った。動作も
期待通り。なんだよこれ。全然気付かなかったよ。
全角文字って…。エラーの出る場所が全然違うところ
で違う意味だから、わかんないよなぁ。


あとは、char型とかでwarning出てるんだけど、
これはuint8_tとかにした方がいいのかな?byte?
まぁ、細かいことはあとで。




んで、5110液晶でお絵かきするライブラリ的なもの
がなんとなく使える状態になってきたので、オシロ
のモック画面を考えてみる。

画面が狭いし、Arduinoのメモリも限られるので、
出来ることは微々たるもの。んで、ギリギリの線
を狙う。



とりあえず、左側に3文字×6行の文字表示エリア
と、右側にはデータ表示エリアを構える目論見。
必要があれば、データエリアにも文字を表示
しちゃえばいいし。



データエリアは、1マスが横16ドット縦12ドット。
4マス×4マスでは、64ドット×48ドットの構成。

この範囲で表示できるレベルを意識しつつ、
Arduinoの処理速度やADCサンプル速度、SRAMの
容量なども加味。


検討項目:

(1)最小と最長のサンプルレート
(2)扱う電圧の範囲と、切り替え幅
(3)トリガを掛けられるようにするか?
(4)FFTを搭載するか
(5)スクロール表示(ページ切り替え)有無
(6)ユーザインターフェース
などなど。


http://elm-chan.org/works/wcs/report.html
ChaNさんのオシロアダプター(UIはPC側で使う
オシロ)の回路を眺めなおす。

ほうほう。電圧のレンジ切り替えは、アナログ
スイッチを使って4段階に電子的に切り替えする
んだなぁ。なるほど。

(オペアンプ用電源にMAX232使ってたり、PCとの
 接続回路はフォトカプラで絶縁されてたり、色々
 「おぉ!」という練りこまれた回路でスバラシイ)


さらに、
http://www11.ocn.ne.jp/~nontomo/egawa/npcosc.html
以前見つけたこのサイトで、増幅回路部分を眺める。
うん。これとか他にも色々なサイトを眺めると、
インスツルメンテーションアンプ使って、入力の
インピーダンスを高くしてるんだよなぁ。

どうしようかなぁ…。あまり大げさな回路にしたくは
ないし、もっと言ってしまえば、入出力をR2Rアンプ
でサクッと済まそうと思ってたから、そこまで
やりたくないな。

まぁ、余ってるPWM出力を流用すれば、負電源くらい
はスイッチトキャパシタでなんとでもなるんだけど、
部品を、Arduinoのシールドサイズに収めたいんだ
よな。LCD含めて。

まぁ、シールド化しなくても、CPU含めて専用基板化
してもいいんだけど。



サンプルレートは、割り込み間隔に関わるので、
マイコン側にスイッチ入力で制御するとして、
電圧レンジについては、電子制御にするより、
スイッチクルクル回して切り替える方が、
なにかとラクチンだろうな。

http://akizukidenshi.com/catalog/g/gP-00101/
こんなロータリースイッチがいいのかな。
ロータリーエンコーダだと、コード出力だから
うまく行かないんだよな。DIPスイッチはチマチマ
だしなぁ。

±8V~±20mVくらいの範囲(4V/div~10mV/div)
くらいで、6段階切り替えって感じにしたいところ。
ナニがいいだろうなぁ…。


サンプルレートは、せいぜい音声周波数帯だな。



R2Rアンプは、オフセットがそんなに悪くなくて、
安定してて、安いってところから探してみると、
http://akizukidenshi.com/catalog/g/gI-06840/


FFTは、64点なら、Arduino用FFTライブラリ使って、
SRAMが540バイト増加で済むみたい。(+内蔵FLASH)


このへんかな。まぁ、少しずつ詰めていこう。




久々にオペアンプをアレコレ眺めてたら、
http://akizukidenshi.com/catalog/g/gI-02330/
こんなのがあったのか。OPA2353UA。

unityで安定だし、SR=22V/usと速いし、その他
モロモロのスペックがイイカンジだ。出力の
バッファも弱くない。これならビデオ信号が
扱えるだろうと思ったら、やっぱり例として
ビデオ用回路が載ってた。300円か。悪くない。



速いアンプといえば、以前買い込んだ
http://akizukidenshi.com/catalog/g/gI-04725/
NJM2137D。

SR=44V/usと速いんだけど、出力バッファの弱さ
のせいで、75Ωがドライブできず、ビデオ信号は
扱えなかったやつ。

そいういえば、これって出力バッファを強化する
回路をつければ、ビデオ信号が扱えるんじゃね?
と思って、調べてみる。

http://www.miyazaki-gijutsu.com/series4/densi0615.html
このページの、下から1/4くらいにある
 「(d) 正負両出力電流(その2)」
のところに書かれている、NPNとPNP、ダイオード2個
で組んだバッファを使えば、75Ωくらいは普通に
取り出せるんじゃないかなぁと。

このページの回路だと、増幅率が10倍になってる
けど、ビデオ信号は大増幅いらんし、振幅はせいぜい
1Vpp程度だから、大電力のトランジスタもいらん
だろう。多分2SC1815と2SA1015のペアで充分。
FTも速いし。

一度、コイツを使って、ビデオ信号出力に耐えるか
実験してみたいところ。



http://www.marutsu.co.jp/shohin_132587/
Arduino Pro Mini、安くなってるなぁ。1000円ちょっと
で買えちゃうんだなぁ。もう1個欲しいところ。


http://www.ubuntulinux.jp/News/ubuntu1404
Ubuntu、14.04LTSが出たのか。Arduinoは、1.0.5に
なったのかなぁ?

VMwareの12.04LTSを開いて、software centerを見て
みると…1.0.1までしか無いみたい。12.04 Precise
だとここまでなのかなぁ。

14.04 Trustyでは1.0.5が入るっぽいんだけどなぁ。
https://launchpad.net/ubuntu/trusty/amd64/arduino-core/1:1.0.5+dfsg2-1

アップデートした方がいいのかなぁ?



コメント ( 0 )




引き続き、aitendoで買っておいたNOKIA5110液晶を
使って、グラフィック処理をちょっと機能アップ。

まぁ、このグラフィック機能を使って目論んでいる
対象物に近いものは、

https://www.youtube.com/watch?v=Qgxl1HcTfV4
http://www.electronhacks.com/2012/01/diy-arduino-oscilloscope-with-the-nokia-3310-glcd-screen/
http://hackedgadgets.com/2013/06/10/arduino-lcd-oscilloscope/

こんな感じで、探すといくつか出てくるんだけど、
まぁ、後で色々使いまわしできそうな気がするし、
オシロ自体の機能も、メモリの許す範囲で色々と
詰め込みたいので、それなりに気が済むところまで
やってみたいところ。



とりあえず、ドット描画だけじゃなく、line描画でも
pset、preset、xorで描画出来るように機能を追加
してみた。

んで、とりあえず色んな機能を追加してきたので、
コードが長くなっちゃって、描画処理部分と、
それを使うアプリ部分がごちゃごちゃな感じがある
のと、後々使いまわしするのに、ファイル分割したい
なと。んで、やり始めたところ、嵌ってしまうことに。



単に、描画部分だけを別ファイルにしておいて、
ダブルコーテーションで#includeしようと思ったん
だけど、Arduinoの場合、元々のソースファイルと
同じディレクトリに読み込むファイルを置いて
おいても、
    「見つからないよ」
とエラーになっちゃう。

どうやら、gccに掛ける前のArduino固有のプリ
プロセッサが一時作成するディレクトリの方を
探しに行っちゃうみたいで、読み込めないみたい。



じゃぁ、と、Arduino-IDEのマルチタブ編集画面
で拡張子.incってファイルでも作って、同一の
プロジェクトとして処理できるようにすればいいの
かなぁとやってみると、拡張子.incは駄目よと怒ら
れちゃう。


あまり大掛かりにしたかったわけじゃなかったん
だけど、しかたなく、.hと.cの2ファイルに分ける。

んで、コンパイル。…エラーが出る。


.hや.c側で参照している外部ファイルとの関連が
うまく繋がって無いみたい。それ以外のエラーも
ちょろちょろ。



うーーーーん。Arduinoに限った話じゃないけど、
普段やらないことをちょこっとやろうとして、
環境周りでつっかえると、色々手を焼くんだよな。
面倒だな。


どうしたものかなぁと悩みどころなんだけど、
まぁ、あとでちゃんと公開したいのもあるし、
ファイル分割くらいちゃんとできないとなぁ。

もうちょっと格闘してみよう。




http://clicccar.com/2014/04/20/253260/
トヨタがレビン?うーーーーん。感心しない。

まず、4ドアって点で、カローラ系ならレビン
じゃなくてセレスだろうと。

イメージ戦略先行で、実体と合わないものを
ぽんぽん出しちゃぁいけないなぁ。ちなみに、
きっとFFなんだろうな、これ。



そうそう。昨日の単3電池2本でUSBの5V出力が
出来るバッテリーケース。あれの続きはまた
今度。先にArduinoのファイル分割関係。

ちなみに、100mA程度くらいならmそれなりに
使えるレベルであることを記しておきます。

ちなみに、パッケージには



こんな風に書いてあったり。大きさ的に、5V
500mAは到底無理だよなぁ。まぁ、判ってて
買ってきたんで、別にいいんだけど。

aitendoで買ってきた3.3V昇圧回路、
http://www.aitendo.com/product/6851
これに使う100uHのインダクタに目星を付けた。

鈴商で以前買っておいた、
http://picavr.uunyan.com/experiment_njm2360.html
このページの写真に出てくる「A3」をチョイスしよう。
これなら、直流抵抗も小さいだろうし、物理サイズ
から考えて、だいたい100mAくらいは出せるんじゃない
かなぁと。

あとは、付属のコンデンサもちっちゃいので、これも
もう少し大き目のにしたいかな。

付属のダイオードは、IN5819
http://pdf1.alldatasheet.jp/datasheet-pdf/view/209733/FCI/IN5819.html

で、とりあえずショットキらしいんだけど、少し
Vfが大きいなぁ。まぁ、このくらいならいいか。
反転時間が大きいダイオードじゃなければ。



コメント ( 0 )



« 前ページ 次ページ »