«前の日(05-19) 最新 次の日(05-21)» 追記

一往確認日記


2016年05月20日

_ アプリのアイコン作成にMakeAppIcon

iOSアプリを申請する場合にアイコンが必要ですが、最初は3.5インチのiPhone向けに57x57サイズのアイコンで良かったのですが、Retinaディスプレイがでて画面サイズが4インチや4.7、5.5インチと多様化しアイコンのサイズもいろいろと準備しなければならなくなりました。 さらにこれに加えiPadやApple Watchと今後も増え続ける事が予想されます。

最初は一つ一つ手作業で進めていて、特定サイズのアイコンがなくても代用してくれたりしてましたが、いよいよ複雑化してくるとアプリをアップロードする際にチェックされあれがないこれがないとエラーが出る様になりました。 それも突然*1変更になっていて、前回と同じで大丈夫と思っているのに何何何???とあわててしまう事になります。

そんな中MakeAppIconというサービスを知って使う様になりました。

MakeAppIcon

無料で使えて1024x1024サイズのファイルをアップロードすると必要なすべてのサイズのファイルを作ってくれます。おまけにAndroid用のアイコンまで作ります。

唯一の欠点が一括でファイルを得るにはメールで送ってもらう事で、ネットの状況によって遅延して届く事がある点です。 今すぐ欲しいのに届くまでもどかしい思いをしてしまいます。

それが、最近見てみるとDesktop版ができたという事で、早速購入($9.99)しました。 オフラインでもアイコンを作ってくれるので便利です。 アプリ開発者しか必要ないと思いますが大変便利です。

App Storeの説明にスクリーンショットも様々なサイズか必要でそちらも一括で管理してくれるアプリが欲しいです。 この間ちらっとその様なアプリを見かけた気がしますが残念ながら控えてませんでした。

*1 ちゃんと見てないだけでどこかにアナウンスされてるかもしれません


2017年05月20日

_ LadderDriveでPLCデバイスの読み書きがものすごく簡単になりました。

LadderDriveというのは、各種PLCがメーカーや機種毎にプロジェクトデータが異なるため互換性がなく、移植するのが大変なのを解決しようとして進めてましたが、本来の目的での進行は一時停止状態です。

LadderDrive

代わりに、PLCデバイスの読み書きツールとして充実してきました。

前回のLadder Driveでデバイスの読み書き ではRuby言語で下の様にプログラムを書いてデバイスにアクセスしていました。

require 'ladder_drive'

@protocol = LadderDrive::Protocol::Mitsubishi::McProtocol.new host:"192.168.0.10"

puts @protocol.get_bit_from_device("M1000")

@protocol.get_bit_from_deviceなんて長ったらしいので、後になるとメソッド名を忘れてしまってなんだっけとなってしまうことは明白です。

実はこれを書きながらアイディアが浮かんでいました。 それから2ヶ月以上経ってようやく実装しました。

PLCに接続するまでは変わりなく、三菱電機製のPLCにMCプロトコルで接続する場合は、IPアドレスを指定し下の様になります。(ここまでは一緒ですね)

require 'ladder_drive'

plc = LadderDrive::Protocol::Mitsubishi::McProtocol.new host:"192.168.0.10"

ここからが本題です。 ladder_drive バージョン 0.4.0 からはデバイスにアクセスするのに配列の様にアクセスできます。 配列だと添え字を使いますが、デバイス名で指定します。*1

この様に直感的でわかりやすくなっています。

plc["D0"] = 123

ブロック転送も簡単です。 例えば0クリアーしたい場合(ラダーだとFMOVなどを使用するシーン)は下の様にかけます。

plc["D0", 10] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

D0から10個に0を埋めています。

rubyは配列の掛け算で同じ値を繰り返し追加できるので、10000個になっても楽勝です。 Dメモリーを全部0クリアーさせるということも楽勝です。*2

n = 10000
plc["D0", n] = [0] * n

実際は一度に送信できる個数が決まっていますが、内部でせっせと小分けにして繰り返し通信してますので、読み込みの際に分割の事は全く気にする必要がありません。

1分毎にログデータを取る場合はこんな感じです。

loop do
  puts plc["D0", 10]
  sleep 60
end

これを書いていたら飛び飛びのデバイスも下の様に指定できたら、結果を配列としていっぺんに取得できて便利じゃないかと思い始めました。 近いうちに試してみたいと思います。

puts plc["D0", "D2", "M100", "L10"]

現在はEthernet接続のMC Protocolとキーエンスの上位リンクでの接続に対応しています。

*1 そういう意味ではHashの方が近いですかね?

*2 PLCのツール使っちゃう場合が多いと思いますが、テストの用途の場合は強力な武器になります。


2019年05月20日

_ 距離測定プログラム - M5STACKでIoT水位計 (4)

M5Stackで田んぼの水位を計測する企画です。

実は17日(土)から実戦投入しています。
写真などは追々掲載することとして、距離を測定する部分について書いていきます。

Grove製の超音波センサーを使っていますが、そのものずばりのGrove Ultrasonic Rangerというライブラリーがあります。

Arduino IDEのスケッチメニューからライブラリーをインクルード > ライブラリの管理... を選択します。

ライブラリの管理を開く

Grove Ultrasonicで検索すると該当ライブラリーが見つかりますので、インストールボタンでインストールします。

Grove Ultrasonic Rangerをインストール

このライブラリーを使うと下の様にMeasureInCentimeters()で簡単に距離が測定できます。

実行しているのがこちらになります。

プログラムを実行し距離を表示している様子


M5Stackを実機に入れてしまったので、実験用に2台目を購入しました。

M5Stack Basic


Grove-超音波距離測定センサー