日曜日, 5月 15, 2016

Arduino: 7セグ時計

有機ELディスプレイってのはいいです。小さいのがいい。薄くて軽くて電池の持ちがいい。バックライトのいらない発光素子ってのはいいです。暗闇でも見えるし、それでいて消費電力が少ない。

しかしながらまだ高いのが難点です。そこで価格の安い7セグを使ってみました。7セグなら暗闇でもくっきりはっきりそれなりの雰囲気があります。


ここでは4桁の7セグを直接 Arduino とつないでみました。各セグメントへ7+1ピン、各桁へピンが4つ、あとは GND をつなぎます。注意せねばならないのは、この7セグはカソードコモンなのでドライバ用のトランジスタがGND側で必要だということです。

あとはパターンをセグメントへ送ればいいわけですが、各桁ごとパターンを消去、そしてパターンを送るというプロセスを繰り返します。書き込んで間をおかないとうまく表示されません。

空いているピンでクロック・モジュールを読み込んでいます。

まずはブレッドボードで組んでみたのですが配線が多い。のでモジュールを作ってみました。

digitalWrite() を使ってひとつひとつ書いていくと画面がちらつくので、ポートレジスタへ直接データを書き込んでみました。



コードはこちらです。

木曜日, 4月 28, 2016

Arduino: 温度湿度センサー DHT11

温度湿度センサー DHT11 が今日届きました。

中国からだといつ届くかわからないこの意外性が贈り物みたいでいいですね。

このセンサー精度がどうとかいう記述があって、迷っていたのですが結局買ってしまいました。

いいですね。きちんと動きます。Arduino のおかげです。書き込みが多くて世界中の人間が使っているのが分かります。

ピン配置は左から Vcc, Data, NC, GND です。5k ほどのプルアップ抵抗が必要です。

ライブラリをダウンロードして、読み込むときちんと表示されました。もちろん、配線を間違えると動きません。アナログ入力ピンなどとつなぐとだめです。


 読み込めてうれしいところでくだんの有機ELディスプレイとつないでみました。

このハードルの低さ。情報の多さ、完成度の高さ。Arduino ですね。


ブレッドボードでは心もとないので、DHTモジュールをつくっておきました。あとはいつもの百均ケースで収まってくれました。

水曜日, 4月 27, 2016

PowerBuilder: 変数名と区切り

PowerBuilder ってのは癖の多い言語です。

しっかしですよね、コンパイラまで癖っていうかが多い。

ちょっと頭きましたよ。かっときても仕様がないんですが

// THIS.X=PARENT.Width-THIS.Width-100
THIS.X = PARENT.Width - THIS.Width - 100

上のがダメなやつで、エラーを出してきます。

パーサーがなってないんですよ。怒

気をつけましょう。

木曜日, 4月 21, 2016

Arduino: ドットマトリクス・ディスプレイで遊ぶ


 ドットマトリクス・ディスプレイというものがあります。

ドット(点、それぞれLED)で構成されたディスプレイなわけですが、一行ずつ行のLEDを点灯すると、行ごとパターンが光ります。

これを繰り返していくとディスプレイ全体で図形が表示されるというのが一般的なドットマトリクス・ディスプレイの使い方です。

Arduino 単体でも 8x8 であれば動くわけですが、そのままだと行+列ぶんだけ信号線が要ります。この処理を引き受けてくれるICを使うとドットマトリクス・ディスプレイを楽しく使うことができます。



写真は MAX7219 を使ったキットです。よくできてます。作るときのワクワク感、できたときの満足感が保証できるのがキットのいいところといえるでしょう。出来上がりも見事です。明るく輝くLEDディスプレイで遊んでみました。

まずはキットから。MAX7219, セラミック、電解コンデンサ、抵抗とピンソケットをはんだ付けします。

そして、配線。

VCC    5V
GND    GND
DIN    8 ピン
CS    9 ピン
CLK    10ピン

こちら Arduino 用のスケッチです。ドットのパターンは Java アプリを書いて作成しました。

できた動画がこれです。今の気分を表してます (^^




このディスプレイを赤外線センサーPIRを使って手を振ると動作を開始するよう改良してみました。

リモートでも動くよう割り込みを調整してみました。

ブレッドボード Arduino で組めばそこかしこ置いて遊べます。

百均ケースでうまく収まってます。



#3Dプリンタで作るケースならしっかり収まります。STL ファイルはこちら(2017-12-23)





コードはこちらです。

水曜日, 4月 13, 2016

PowerBuilder: タブページからタブそのものを切り替える

癖の多い PowerBuilder ですが、要は OOP ってことで、順序を踏めばきちんと動きます。

タブページのボタンからタブそのものを切り替えるなというときは、親タブのイベントを用います。

SelectTab() という関数は、タブ名をインデックスあるいは文字列で指定できます。

タブページは Control 配列で指定できます。

tab ltb_tab
u_onboarding_monitor luo_monitor

ltb_tab=PARENT.GetParent()
ltb_tab.DYNAMIC SelectTab('tabpage_onboarding_monitor') 

luo_monitor=ltb_tab.Control[ltb_tab.selectedtab]
luo_monitor.EVENT ue_Search()

月曜日, 4月 11, 2016

Arduino: 有機ELディスプレイを使う

今日、有機ELディスプレイが届きました。有機ELは英語で OLED ですね。有機ELは液晶ディスプレイよりまだ高価ですが、近い将来、市場を席巻するだろうという未来の素材です。


有機ELは発光素子を挟み込んだ画面を用います。発光素子を直接光らせるので、画面のバックライトをフィルターして見せている液晶より明るく、消費電力が少ないわけです。バックライトが必要ないため薄くできます。


薄くて明るく消費電力の少ないという有機ELですが、そろそろ手ごろな値段で出ています。さっそく注文してみました。この価格帯だと解像度というレベルのものではないですが、細かい文字も表示できます。


この小さなディスプレイは、端子はたったの4つ。



ライブラリなどは128x64サイズのものを使えばそのまま文字でもビットマップでも表示できます。

https://github.com/adafruit/Adafruit_SSD1306
https://github.com/adafruit/Adafruit-GFX-Library

このライブラリですが、使用の際ディスプレイのアドレスを得る必要があります。

http://playground.arduino.cc/Main/I2cScanner

アドレスを得たら初期化のとき引数として渡してやります。

display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 

この画面サイズの場合、ヘッダファイル(Adafruit_SSD1306.h)を書き換える必要があります。

   #define SSD1306_128_64
//   #define SSD1306_128_32
//   #define SSD1306_96_16


ライブラリを使っての HelloWorld! スクリプトです。



動きました!ので、使いやすいよう Arduino 用有機ELディスプレイ・モジュールを作ってみました。

ここで晒すのもなんですが、配線はこんな感じです。アナログ入力端子をふさがないよう長足のピンソケットをつけています。モジュールだと配線を考えなくていいので使いやすいです。


モジュールが使いやすいってのはつまり配線を間違えることがない、成功率が高い、能率がいい、ひいては使う際の敷居が低いってことでもあります。すべからくモジュールを組んでおくと Arduino の良さを満喫できます。

#使ってみると有機ELディスプレイってのはいいです。小さいし軽い。電池も持つしいうことないです。早くもっと普及してほしい。

#この「IICシールド」、他のIIC機器用のシールドとしても使えます。時計モジュールとつなぐとそのまま時刻が読めます。


月曜日, 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/

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


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



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

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