水曜日, 12月 30, 2015

PowerBuilder 12.6: 要素をリネーム

PowerBuilder ってのはクセのあるソフトで、気をつけないと半日を潰してしまう「仕様」があります。バグだと思うんですが

なぜか要素をリネームできないんですよ。右クリックしてもリネームなるメニューがない。

リネームなんて「別名でコピーして元のを消せばいい」、と思うかもしれませんが、PowerBuilder だとこれしかない。別名でコピーするしか方法がないんですね。

Save といっても右クリック→Copy ... とするとその要素はもうあるよ、とエラーを出してきます。
ここは File メニューから Save as とするのが正解です。

これがですね、そのままじゃ出てこない。Window を開かないとダメなわけなんです。

この思いがけない癖ってのが PowerBuilder の特徴です。ってことで

ここで一言: PowerBuilder は不安定ですぐクラッシュします。どうにかしてほしいです

こんなときは Regenerate です。

自作ブレッドボード版 Arduino

作ってみました。自作ブレッドボード版 Arduino です。

Arduino UNO を使ってブートローダーを焼いたので、プログラムのアップロードは完了していたわけなんですが、内部クロック(8MHz)だとそのままで動かないので16MHzのクリスタルが届くまでお預けとなっておりました。

で、昨日届いたわけなのでさっそく動かしてみました。

まず5V電源をつくります。ここではLM317を使いました。こいつは可変型のレギュレーターで、抵抗値で電圧を変えることができます。

基本これで動きますが

発振防止、逆流防止ダイオードなどつけるとこうなります

Atmega328P チップと電源をつなぎ、クリスタルをつないで、と




動きました。感動です。13ピンのLEDが点灯しています。電源とクリスタル、これだけで動くんですね。





電源モジュールです。


これで作ったプログラムを保存することができます。

木曜日, 12月 24, 2015

Arduino: リレーを使って明かりを消す

Arduino ってのはよくできたシステムです。

Arduino がどれだけすばらしいかって「発想から実現へ」の直截さが違うわけです。

例えばですね、明かりを消したいとします。つけた明かりが消えてほしい。一定時間たったら消えてほしいと思ったとします。

どうするかっていうとまず100V電源をいじらないといけないので、リレーを使います。5V回路で100Vを操作すると壊れるのでリレーで隔離するわけです。


このリレーですが、一定以上の電流が必要となります。Arduino 出力端子そのままだと心もとないので、こういうときはたいていトランジスタなどを使って電流を操作します。信号を増幅するわけですね。

まあ面倒なわけです。トランジスタ回路を組むというだけでなんか「仕事から帰ってきてこれって」とかいう気分が襲ってくる。

でそこは Arduino の世界なわけです。これがホントよくできててリレー・モジュールなるものが売っている。しかもいい値段で売っている。

(これです→http://www.ebay.com

早い話がこれをつなぐとそれだけで明かりが消せます。そのままつなげばいい。タイマーをプログラムし、信号線をつなぐだけです。

え、これだけ?これだけで動くんだ、という感動があったわけなんですが、これちょっと考えてみてください。このモジュールの利点です。部品が少ないってことは、つまりそれだけ安全だってことです。100V使うんですから安全第一です。

まあしっかり懐中電灯など用意して動かしてみたわけなんですが、大丈夫でした。リセットボタンなど押すと明かりがついて、一時間たつと消えてくれます。

*)整数型では上限を超えてしまうので時間は long 型である必要があります。

土曜日, 12月 12, 2015

Arduino Uno を使ってブートローダーを焼く



Arduino を使うと書いたプログラムで外部装置を動かすことができます。いくらJava/C++/Android でプログラムを書いても所詮ソフトウエアってだけです。家電、LED やセンサーを動かすことはできないですよね。Arduinoなら可能です。USBでつないで外部装置をつなぎ、アップロードすると動きます。このスムーズな流れが「よく考えられたシステム」であるArduinoの特徴です。
 
このArduino、つないで動くというだけではありません。使える装置を作る方向へ発展させることができます。プログラムの書き込まれたCPUを取り出して使えばいい。

本家Arduino のボードのCPUは取り換えがききます。取り出せばそのまま同じ回路を独立して使うことができます。素晴らしいと思います。

このCPUですが、Atmega328のチップを使っています。ebayなど覗くとこのチップがまとめていい値段で販売されています。ありがたいです。

http://www.ebay.com

これらのチップはブートローダーが書き込まれていない場合があります。自分で書き込む必要があるわけですね。書き込みができると安いチップが使えます。挑戦する価値ありますよね。

どうやって書き込むのか、ですが、ネットではブレッドボードで回路を組む、専用のシールドを作る、専用ライターを使うなどいう手間のかかる方法が語られています。

でもですね、Arduino Unoを使うと手間いらずです。手間いらずということはつまり成功率が高いということです。是非お勧めしたい方法です。




どうするかというと、プログラムしたいチップを載せたArduino UnoArduino本体をつなぎます。

では焼き込みの手順です。まず ArduinoISPをアップロード。

ArduinoISPをアップロード
 
そしてArduino Uno をつなぎます。電源5VGNDをそれぞれ接続し、ピン11, 12, 13Arduino本体と接続します。あとはピン10とリセットとつなぎます。

新しいAtmega328Pチップを載せて、Board, Port, Programmerを設定します。それぞれArduino UnoUSBポート(ポート番号は環境で異なります)、Arduino as ISPを選択します。


 
ボード Board の設定


ポート Port の設定

 
プログラマ Programmer の設定

そして Burn Bootloader を選択してブートローダーを焼きます。
 
いよいよ書き込み


この方法でなんの問題もなくブートローダーを焼き込むことができました。チップをとりかえてLチカとかアップロードすると動くわけですね。これでArduinoマシンを量産できます。なんだろうこの安心感は(笑

#Arduino 基板を使わない場合はクリスタルで外部からクロックを供給してやる必要があります。

 
写真は自作のAVR-ISP・シールドです。

土曜日, 12月 05, 2015

Arduinoの流行るわけ・電子サイコロ


電子サイコロというものを見たことがあるでしょうか。LED回路などでサイコロの目をつくり、電子回路で操作・表示するものです。

乱数を生成し、各LEDを点灯させるというのはもし回路を自分で組むとしたら面倒な話です。


こんな作業も Arduino があるときちんと組めます。乱数はライブラリを利用し、各LEDへの出力をプログラムで操作します。

Arduinoが外部インターフェースとして便利な件


フォトレジスタというセンサーがあります。明るさを探知します。でもこれをどうやって利用したらいいでしょうか。電源を与え、抵抗値を読み取る装置をどうやって作ったらよいでしょうか。
そこで Arduino を利用します。電源を与え、アナログ値を読み取り、シリアル信号としてPCで読み取るなどという作業はこの Arduinoで行います。つまり、Arduino ならUSBケーブルをつなぐだけでアナログ値が読み取れます。





あとは読み取った値を利用して装置を動かすなどという作業をリレーなど通じてArduinoで行えばいい。

この一連の作業がUSB接続できるArduinoならスムーズかつ危険なく行うことができます。考えてもみてください。旧態然とした開発過程だと、マイコンチップを用意し特殊な装置でプログラムを焼き、電源装置を用意して動かすなどという手間が必要です。このハードルをArduinoがあると楽々と超えられるわけです。





Qt: 外部プログラムを起動する

  Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...