月曜日, 3月 28, 2016

PowerBuilder: ドロップダウン・リストの長さを指定する

米国も選挙の季節です。反日の方々の声が大きくなるので困りものです。うけるんですよねそういうの

ソニーを敵視するとかありますね。女性へいやらしいセリフを繰り返す男性が「日本」だとか…ばかみたいですよねほんと

しかしですね、米国のすべてのネガティブな部分が日本のせいだとかそういうことはないです。自動車産業とか鉄鋼とか(票田である)産業が落ち目なのは働き者のアジアが勝利したからです。断言

ソフト産業は米国が強いですけどね。そしてIT業界は米国民主党よりです。ハイ

閑話休題。


PowerBuilder でドロップダウンリストを作る方法、というよりドロップダウンリストの長さを指定する方法を編み出したので紹介します。

PowerBuilder ではデータウインドウでドロップダウンリストを作り、データベースの値を指定することができます。

これは正規の方法で指定できます。ドロップダウンデータウィンドウを指定すればデータベースの値でドロップダウンリストを作ることができます。

この方法でドロップダウンリストを指定すると、長さは指定できません。空白行ができます。

この空白行を削除するためのスクリプトの話です。

IDEではこの属性を指定できないのでスクリプトを書く必要があります。

まあ、要素を取り出して属性を指定するだけですが…

癖の多い PowerBuilder ですが、スクリプトが書けるだけ自由度もあるわけです。

分かるだけ書けるだけ書いていきたいと思います。

木曜日, 3月 10, 2016

PowerBuilder: グリッド・データウインドウ・コラムのソート

PowerBuilder はデータベースと親和性の高い言語です。

データベースのデータを表で表すなどという操作を得意とします。

SQLをデータウインドウで指定するとそのまま表示してくれます。

プログラムでSQLを直接記述できるのも PowerBuilder ならではの良さと言えるでしょう。こんな感じです。これでテーブルの指定したコラムの値を得ることができます。
SELECT コラム名
INTO :変数名
FROM テーブル名
WHERE 条件
USING SQLCA;

独特の癖の多い PowerBuilder ですが、このDB親和性という点ではオススメできる言語です。

しかしですね、この「癖」なんですが改善すべきと思われるところもあります。

グリッドのコラムをソートする状況があって、でここではまりました。

他のコラムはそのまま表の見出しをクリックするとソートしてくれるわけなんですが、ソートしてくれないコラムがある。

フラグでも指定しているのかとソースを追ったわけですが…

なんとなんとここは「ヘッダーの変数名」ってのがネックだったわけですね。

ヘッダーの変数名は _t で終わっていないとならない。なんだそりゃ

つまらないオチですが…

ヘッダーの変数名は_t と指定する必要があります。それだけです
  
命名規約というのは重要とはいえ、これは紳士規約ですよ。

そんなものを規定して動作を指定するなどルール違反です。

この裏切られた感ってのが強烈な PowerBuilder でした。

土曜日, 2月 20, 2016

Arudino: オペアンプを使ってマイクを作る

コンデンサマイク
極性があります


コンデンサマイクがようやく届きました。モジュールではないのでそのままでは信号が弱いので使えません。信号を増幅する必要があります。

ちょっとした手間ですが、首尾よく動いてくれました。この回路の応用で、使えるマイクが出来ます。



増幅回路ですが、ここではオペアンプを使ってみました。仕組みはともかく、オペアンプってのは便利です。使ってみると実感があります。つなぐ抵抗値で信号の増幅できます。

電源とGNDをつなぎ、ー(マイナス)入力ピンとマイクを抵抗を介してつなぎ、出力ピンと抵抗をつなぎます。この抵抗の比が増幅率となります。入力が交流であるため、抵抗で+(プラス)入力ピンの電圧を調整します。

マイクと電源をつなぎ、入力をコンデンサを介してつなぐとこれで回路が完成します。



Arduino のアナログ入力ピンとつなぎ、電源とGNDを供給してやると音声を電気信号として読み取ることができます。


これだけ増幅できるなら、ということでPCのマイク端子とつないでみました。と、マイクとして使えます。Skype が動きます。


Arduino で電気回路として実現、しかも実用として使えるというこの流れ。知識が実用となったという実感。大きく広がる世界と可能性。

Arduino っていいなあと思った次第でした。

以下、部品リストです。

C1    Capacitor
MIC1    Microphone
Part1    Arduino Uno (Rev3)
R1    100kΩ Resistor
R2    100kΩ Resistor
R3    1kΩ Resistor
R4    100kΩ Resistor
R5    10kΩ Resistor
U1    LM358

#補足です。ノイズがのるので電源を USB から供給してはなりません。

火曜日, 2月 09, 2016

PowerBuilder 12.6: 日付をフォーマットする

PowerBuilder では Time, Date, DateTime などという型があります。

デフォルトの表示形式から変更する場合は String() 関数を使います。

String(Date('1/12/2016'),'yyyy-mm-dd')

SQLなどで表記を変更したい時など便利です。

火曜日, 1月 19, 2016

Arduino: ステッピングモーター


 モーターの種類はいろいろとありますが、回転の位置を指定できるサーボモータが一般的です。

ここではあえて価格の手ごろなステッピングモーターを使ってみました。

ドライバ回路はトランジスタで組んでみました。

モータの配線がやっかいで、順番を間違えると振動するだけで回転しません。

日曜日, 1月 17, 2016

Arduino: リレー回路を組む


今週リレーが届きました。Arduino ではリレー単体で動かすことはできないので、トランジスタを使って回路を組む必要があります。週末まで放置してあったわけですが今日組んでみました。


モジュールもいいですが、リレー単体だと安くまとめ買いできます。トランジスタひとつで動くわけなので、やる気があればモジュールでなくても動きます。逆流防止のためのダイオードと抵抗を使います。

作ったモジュールはこれ。




作ってみて便利だと思ったのはこのデュポン・ジャンパー線。短く切って端子をカシメると便利です。


クリップをつけることもできます。


あと、部品の足がブレッドボードのピッチと合わない場合があります。こんなときはユニバーサル基板を切ってピンヘッドをつけるといいです。しっかり固定することができます。

月曜日, 1月 11, 2016

Arduino: 距離センサーを使ってみる

超音波距離センサモジュールが届きました。さっそく使ってみます。Arduino の出番です。

モジュールとなっているこのセンサーはトリガー・ピンへパルス信号を送り、反射して帰ってくる超音波をエコーから取得します。

取得した値から距離を計算します。

計算してみるとなかなか正確な距離が出ています。

ここでは近づくとブザーで警告するよう設定してみました。


日曜日, 1月 10, 2016

Arduino: 赤外線リモコンでランプを点灯する

リレーを使った Arduino タイマー回路はちゃんと動いてくれました。使える回路ってのはいいですね。動機とか目的とかいうものがあって使うたびうれしいものです。

極性があります

このたび赤外線センサーを使って遠隔操作できるよう組み直してみました。なかなか便利です。

リモコンはカメラのものを転用しました。まず、コードを取得します。 IRremote というライブラリで信号を解析します。

このライブラリが曲者で、zip ファイルを登録するわけなのですが、もとある RobotIRremote なるライブラリとぶつかるらしく、そのままではコンパイルできません。

こいつはデフォルトのライブラリなので、Program Files (x86) 下の Arduino フォルダの RobotIRremote を取り除く必要があります。もしライブラリをインストールしてしまっていれば、Arduino ドキュメントフォルダ下のローカル・ライブラリの Arduino-IRremote-master を削除し、IDE を再起動です。


ここでライブラリを再インストールすると動きます。サンプルコードの IRecvDump など使い、リモートの信号を解析し、コードを取得します。

コードを取得すればあとは条件分岐でリレーを作動させます。

回路・プログラムが正しければ「カチッ」という音がして、ランプが点灯するはずです。100Vを扱うわけなので注意が必要です。あと、赤外線センサーの足の極性はそれぞれ異なるのできちんと調べる必要があります。


さっそくブレッドボード版 Arduino で組んでみました。

電源を組んで、Atmega328P を配置して、リレーモジュールを組んで、100V 電源から線をとってきて、赤外線センサーをつなぎます。

いつもの百均ケースでぴったりです。


土曜日, 1月 09, 2016

Arduino: 赤外線で動きを感知するセンサー PIR HC-SR501 を使ってみる


赤外線で動きを感知するセンサー PIR というものがあります。手を振るとスイッチがはいるやつですね。赤外線の変化を察知して FET で増幅するという部品です。その信号を増幅する回路が Arduino モジュールとなっています。

これ HC-SR501 届いたのはいいんですがなかなか動いてくれない。動かない回路っていうのはなんかものすごくショックなものです。気落ちするというかトーンが下がるというか。

HC-SR501 ピン配置はカバーを外さないと見えません。

電源を通してアナログ出力を見てみると目の前で手を振ってみても値がぜんぜん変わらない。デジタル出力してみると HIGH となったまま、LEDがついたまま。

絶望の末しようがないのでネットをあたりました。フォーラムを見てみれば「これは動くはず」「難しくない」「壊れない」「丈夫」と書いてあったり(笑

これって安定するまで時間がかかるんですね。

つないでみて手を振って動かない、じゃあ回路を変えてみて手を振って動かない、なんてことを繰り返していくともう絶対動かない。安定化するまで数分待たねばなりません。


あとこれ可変抵抗がついていて、電圧が下がるまでの時間とか、感度とかいうのが調整できるわけでした。設定次第ですぐ ON となり電圧がなかなか下がらない。

このへんをクリアするときちんと動きました。アナログじゃなくてデジタル入力で組む必要があります。なかなかいいものです。手を振ると点灯してくれます。


あとあと考えてみると「動くはず」と信じてトライしたのがよかったわけですね。ネットでそう書いていなかったらあきらめてしまうところでした。

せっかく動いたので消すのが惜しくなりました。そこでチップを取り出してブレッドボード版 Arduino で動かしてみました。Arduino ならではの利点ですね。

この大きさだとこのあいだ見つけた百均のケースがぴったりです。


プラスチックケースは大きさを油性マーカーで印をつけて、ホットナイフを使うとスイスイと切れます。

電源ソケットをエポキシ樹脂で固めて、電源を供給してやると…



 動きました。うまく収まってます。手を振ると点灯してくれます。なかなかいいものです。





火曜日, 1月 05, 2016

Arduino: ホール素子を使ってみる

今日ホール素子が届きました。

ホール素子ってのはホール効果を利用して磁場を感知するセンサーです。

iPad のケースとか、閉じると電源が切れてくれますよね。ケースのカバーの磁石の磁場をホール素子が感知してるわけです。



さっそくホール素子を使ってみよう!電圧の変化を調べてみよう!と思えば Arduino が大活躍です。ブレッドボードで回路を組んで、Arduino を USB ケーブルで接続してプログラムを転送すればいい。

Arduino がなかったら死蔵しちゃうんじゃないかと思ったわけでした。忙しいし。Arduino だとサンプル・プログラムがそのまま使えます。電圧を調べてみました。磁石を近づけると電圧が下がります。

あとはLEDを光らせてみました。動画でどうぞ。


あとはモジュール化するだけですね。

ユニバーサル基板の切れ端を使って Arduino 用ホール素子モジュールを作ってみました。

モジュールだと回路や規格など調べ直す必要がありません。

その分、使ってみようという敷居が低くなります。


月曜日, 1月 04, 2016

PowerBuilder 12.6: 関数を削除・コピー・リネーム

PowerBuilder での関数・イベントの扱いってのが微妙です。

一覧で出てくるのはいいんですが、右クリックで編集とプロパティしか出てこない。

プロパティでいじれるのかと思えばこれが書き込み不可。

こういう常識を軽く裏切ってくれる世界が展開してますが、関数やイベントを削除、コピー、リネームの機能はタブを切り替えないと出てきません。

このタブってのはウインドウの下のスタブをクリックすると出てきます。

ここで出てくるリストでは右クリック・メニューで関数の削除やコピーが可能です。ただし、リネームは別名でコピーする必要あり。

土曜日, 1月 02, 2016

Arduino のための「電子サイコロ・モジュール」

モジュール化ってのは大事ですよね。構造化・抽象化することが大事なわけです。

でもハードウエアでモジュールってのはよっぽどの構想がないとあり得ないです。PCとか。

Arduino はその点でも優れています。センサーからディスプレイまでさまざまなモジュールが利用できます。

休みを利用して、くだんの Arduino 版・電子サイコロをユニバーサル基板で作り直して「モジュール化」してみました。LEDでさいころの目を表現します。

部品はいたってシンプルなものです。


Arduino とはデュポン・ジャンパ・ワイヤで接続します。



回路は同じです。プログラムのほうは、リセットボタンを押すと一定時間サイコロを回し、停止するよう改良を加えておきました。



ちょっと裏側はお見せしたくない悲惨な光景が繰り広げられてますが、この電子サイコロ、きちんと動きます。



Arduino のための「電子サイコロ・モジュール」が完成です。




百均ケースでまとめてみました。


割り込みスイッチをつけてあります。押すとさいころが回ってくれます。 時間がたつと消えてくれます。

金曜日, 1月 01, 2016

Arduino: デュポン・ジャンパ・ワイヤ

みそかの大掃除で部品など整理して在庫表など作って新年を迎えました。たくさんの部品をながめて、ほくほくしながら年を越すってのもオツなもんです。

ジャンパ線など整理していると、先端の壊れたのとかがあるわけですね。

このジャンパ線ってのが直せるってご存知でしょうか。

デュポン・ジャンパ・ワイヤというのがあって、この先端部分が自作できます。



金属部分のコネクタ、プラスチック部分のハウジングがあればいいわけです。
http://www.ebay.com/


はんだ付けは必要ないです。 はんだ付けするといいというサイトもあるようですが、ここではそのままで使っています。挟み込んでペンチで締め付ければいい。ハウジングをつければそれで元通りです。

再利用可能ってのはいいですよね。このハウジングが角ばってるのも並べたとき使いやすくていいです。


デュポン・ジャンパ・ワイヤ
http://www.ebay.com/

そこかしこつけまくっておくとかなり便利ですよー 


時間が経つと鳴るブザーがこれで完成です。



水曜日, 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があると楽々と超えられるわけです。





Flask の Blueprint のテンプレート問題

  Flask の Blueprint は、ルート、静的ファイル、テンプレートをまとめて管理できます。しかし、テンプレートが指定できません。 ここでは、Blueprint の template_folder の問題点と回避策を説明します。 Blueprint のテンプレート問題...