[2011/02/12]印刷<<<361362363364365366367368369>>>365/421図1は、今回構成したシステムの概要である。ShieldLED駆動スケッチCPU負荷取得プログラムである。Shieldは先週写真をご紹介した、要するにLEDの表示部である。Shieldを駆動するためのものである。1に近いものだが、こちらは決められたパターンでLEDを駆動するだけのものであった。今度はPCから表示データを受け取ってこれに合わせてLEDの駆動を行う必要があり、したがってもう一ひねり必要になる。最後がCPU負荷取得プログラムである。これはここまで全く説明してこなかった話であるが、CPUの負荷をリアルタイムに取得して、それをArduinoに送り出そうというものだ。Managerを立ち上げなくてもCPUの稼動状態が見えるのも悪くなかろう、という判断でこれを表示することにした。Managerのこれ(Photo01)と同じ仕組みで、各CPU毎の負荷を一定時間毎に取得、それを確認のために画面に表示すると共に仮想COMポート経由でArduinoに送り出すようなプログラムを作成した。プログラムというか仕組みについては順次説明を行ってゆくが、実はWindowsでなくてもこれは可能である。定期的に監視して、その差分からCPUコア毎の負荷を算出することが出来る。いう訳で他の環境でもこの表示機構は利用することができる仕組みだ。赤枠で囲んだこの部分と同じ事をプログラムで行うことにした。Shieldから順に説明してゆこう。回路図全体は図2の様になっている。I/Oを10×8構成とした上で、LED自身は20個×4列という形に配している。これによって20段のレベル表示が可能になるというものだ。LEDとしては、赤はOSDR3133A、黄色はOSYL3133A、緑(黄緑)はOSNG3133Aをそれぞれ利用した。ちなみにいずれも100個単位で、赤が\350、黄色が\550、黄緑が\450である。1/4Wのものを10本使っている。厳密に言えば赤・黄・緑で特性が違うために若干輝度にムラが出る(黄緑の輝度が一番落ちるので、これのみもう少し電流を増やしたほうがベター)なのだが、ブレッドボードで一部だけ回路を仮組みしてみたところ、さして支障がなさそうだったのでこのまま行くことにした。図2を実際の配線に近い形に書き直したのが図3である。10×8のLEDの列を横に引き伸ばし、20×4という形に配している事がお分かりいただけようか。図のうち、右側の破線で囲った部分が、LEDをケースに埋め込み、そこに直接立体配線の形で実装した部分である。その立体配線とArduino本体、及び抵抗を実装したユニバーサル基板の間は配線用ケーブル(耐熱電子ワイヤー、あるいはリボンケーブルといった名称で販売されているもの)を使って繋いでいる。書くと、「何でLEDも基板に実装しなかったのか?」と聞かれそうだが、理由は穴あけの加工精度である。今回も一応マスキングをしたうえに寸法線を描き、その上からガイド穴を開けた上でドリリングしているのだが、ボール盤ではなく単なる電動ドリルの悲しさ、Photo02の様に穴の位置が一直線になっていない。遠目に見ると結構そろっている様に見えるのだが、近くで見ると...基板を使って実装した場合、穴がきちんと均等に開けられれば図4上側の様にうまく収まって配線も楽なのだが、不均等だと図4中央の様に、大変情けないことになる。情けないだけならまだいいが、これだと本当にパネルの真前から見ないと、最悪光っているかどうかすら判らない事になる。図4上側の様に、LEDのボディがある程度シャーシから突き出していないと綺麗に光っているのが見えない、というのが予備実験の結果判明しており、やむなく図4下側の様な実装とした訳だ。このあたりはケースの加工精度次第である。自宅にボール盤を持ち込む根性はなく(いや、安い奴だと1万円未満で買えたりするし、まともな精度の奴でも数万円で入手できたりするのだが、それを常設できる場所が無いという理由で断念した)、妥協した部分である。1/16]ホビーもっと見るページトップ。