7セグ4桁の表示モジュールを買ってみた

Amazon をぶらぶらを見ていたら、デジタル LED チューブモジュールというものを見つけました。
7セグ LED を持っておらずちょっと憧れがあって、このモジュールは4桁かつ3個セットでこのお値段ということもあって、つい買ってしまいました。

通常の一般的な 7セグ LED とは使い勝手が全く違うものだったりするので、やっぱり通常の7セグは欲しいなと思う気持ちは変わりませんでした。
このモジュールでは、信号線が2つで4桁を表示できるようになるのでその点が魅力のものといえるようです。

使い方

Arduino との接続は以下のようにしました。

そして動かすためのスケッチですが、公開されているライブラリを使用しました。
このライブラリは、 https://github.com/reeedstudio/libraries の中にある、 DigitalTube です。

これを追加した上で、以下のようなスケッチを作成しました。

動作させると、カウンタが進みつつ、中央のコロンが点滅するといった動きが確認できるようになっています。


FlashAir を Raspberry Pi の起動メディアにする

FlashAir を Raspberry Pi の起動ディスクにしてみました。
ここでの Raspberry Pi は Raspberry Pi 2 や、 Raspberry Pi Zero あたりをターゲットとしています。

必要なもの

どちらの環境にしても FlashAir は通常サイズの SD カードなので、変換をして Raspberry Pi2/Zero に接続します。
今回は以下のような変換するものを用いてみました。

続きを読む


Arduino Uno を買ってみた

Raspberry Pi が手元にあるのですが、衝動買い的に Arduino Uno を購入してみました。
たまに RPI では信号レベル変換が必要な電子パーツの動作確認にも使えそうだなと思っています。

そんな Arduino ですが、 Arduino IDE を使ってスケッチと呼ばれるプログラムを作成し、ROMに書き込んで実行します。
このあたりが、 Raspberry Pi とはちょっと違いますね。

1つ自分が Arduino を初めて触ってみて、手間取った点をここでは詳解したいと思います。

手間取った点

Arduino IDE でスケッチを作成して、Arduino に書込をしようとすると失敗になっていた点です。
コンパイルは通るのと、機材には電源も投入されて LED が光っている状態なのに、です。

こうなってしまったのは自分の環境が問題でした。
既に USB シリアル変換ケーブルを使用していて、 Arduino は2番目の認識となっていた点が原因です。これを切り替えるのには、 Arduino IDE のメニューから “ツール/シリアルポート” で Arduino が接続されている COM ポートを適切に選択することが必要でした。

本当の意味で初めて、こういったボードを触る場合にはこの点に引っかかることはないでしょう。

これからもう少し Arduino を触ってみたいと思いますが、先にエディタ部分をなんとかしたいと感じでした。Arduino IDE もコンパクトで悪くない印象ですが、エディタ部分が自分が使い慣れているエディタとか、他のエディタを使いたいなぁという気持ちがありますね。
かるく検索すると VSCode を開発環境に使うことが出来そうなので、それを試してみたいと思います。

その他

ボード本体だけを買ったらまさかの USB タイプ B のケーブルが必要だったので、それは驚きました。今の時代ずいぶんとこのケーブルを見かけなくなりました。
これから始める人は、必要な USB ケーブルについても手持ちがあるのかを調べておいた方がよさそうです。

あるいは最初から色々とセットになったものを買うというのも安全ですね。


Caliburn.Micro に入門してみる その3

前回は簡単にバインディングができることを確認しました。実はあれは省略形に近いものだったので、フルに設定するとどのようになるかを今回確認します。
基本的に前回のプロジェクトの使い回しで説明します。

メソッド呼び出し

ボタンの Name を削除して、 Interaction.Triggers を指定してメソッドを呼び出してみます。

ShellView.xaml は以下のように変更します。

EventTrigger の Click までは問題ないとして、 Livet では CallMethodAction を呼び出していたような箇所で、 ActionMessage によってメソッドを呼び出します。
この ActionMessage も引数情報を設定することが可能です。パラメータを指定するには以下のようにします。

これを受け取るための IncrementCount メソッドでは引数を取れるように変更する必要があります。忘れると例外(No target found for method IncrementCount.)が飛びます。

メソッド呼び出し その2

ここまでの設定方法が Long Syntax と呼ばれるものになっているようです。次に Short Syntax と呼ばれるものについて確認してみます。

ShellView.xaml を編集してボタンを追加してみます。

見て分かるように、 cal:Message.Attach という添付プロパティでイベントとアクション(メソッド呼び出し)を設定しています。
注目なのはイベント名の記述と、メソッドの呼び出し&引数記述がこのように書ける、という点です。わかりやすいですね。

引数については即値で書いていますが、ここを他のコントロールの値にすることも可能です。

さらに Caliburn では、メソッド引数名から、引数を推測してバインディングしてくれる機能もあります。
以下のように ShellView.xaml を編集して、スライダとボタンを用意してみます。

スライダの名前を IncrementCount の引数名である delta としたことで、 Caliburn が情報をうまく解釈して結合してくれます。

まとめ

自分でバインディング設定を記述しないでもバインディングしてくれることで、プログラマの作業を省力化してくれる感がすごくあります。
ただし、ルールを知らないと動きを追いかけるのも厳しいという印象です。

これらのバインディングについては、 All About Actions を参照して読んでおくのもよさそうです。
パラメータとして、 $source, $view, $dataContext といったものも設定可能であったりするので、なかなか深いです。


Caliburn.Micro に入門してみる その2

前回はとりあえずプロジェクトを作成し、 Caliburn.Micro のお作法に従った Hello,world のようなものをやってみました。
今回はこのプロジェクトを使って、データバインディングを確認をしてみます。

今回も先人の記録を辿りつつ進めていきたいと思います。

ちなみに Caliburn.Micro の Documents の中では Basic Configuration 項にこの部分が書いてありますが、ほんの少しでした。

データバインディング

ShellViewModel に Count プロパティを追加します。

ShellView.xaml を以下のように編集してみます。

これを実行すると以下のようになります。明示的に「Text=”{Binding Count}”」 と書いていないですが、 Caliburn がこのバインド処理を行ってくれます。今回の場合、TextBlock の Name と対応するプロパティを見つけて、バインドを行う処理となっています。

コマンドバインディング

続いて以下のように ShellViewModel クラスにメソッドとプロパティを追加してみます。

そして、 ShellView.xaml も以下のように編集します。

これを実行して、 Increment ボタンを押すと、カウンタがインクリメントされ、 80 カウントになるとボタンが無効となります。

先ほどと同様にバインディングを記述していませんが、各コントロールの Name プロパティと一致するものを見つけて、バインドする処理が Caliburn によって行われるため不要となっています。Command の Can 系についても、同様に接頭辞 Can が付いたものを見つけて判定処理としてくれています。

余談

もちろん、Name を設定せずに Text=”{Binding Count}” などと記述することも可能です。 ValueConverter が必要なときには、こちらのような書き方をする必要が出てきそうです。


Caliburn.Micro に入門してみる

今まで MVVM のインフラストラクチャのライブラリとして Livet を使用していましたが、新バージョンも出ないし新しい環境用のプロジェクトテンプレートも提供が無いようだったので、比較的最近のものでよさそうなものは無いかと探してみたところ、Caliburn.Micro が良さそうだったのでこれを触ってみることにしました。

ここでは、 Nuget から簡単にインストールができる Caliburn.Micro バージョン 3.2.0 を対象にしています。また Visual Studio は 2017 (v15.6.1) を使用しています。

Caliburn.Micro について

Caliburn.Micro は出たばかりというわけでなく、5年以上経過しているというのに、日本語での記事がほぼないです。これから MVVM アーキテクチャでソフト開発を始めようと思っている人には、 Livet のほうをオススメできるのではないかと思います。 Livet のほうが日本語での検索性は良いです。

Caliburn のほうが良い点としては、対応プラットフォームが Livet よりも多いこと、現在も開発が続いていることが挙げられると思います。また、現時点においては開発者の方は Microsoft にいるらしいです。近いうちに、バージョンが 4.0 が出そうです。自分は Livet の良かった点に、プロジェクトテンプレートやらスニペットの準備やら、始めるのに楽だった点があります。 Caliburn.Micro ではそのような点は標準ではなさそうですが、普段のコード書きを楽にしてくれそうなバインディングの仕組みを提供してくれています。そして、 MEF を用いた拡張しやすそうな構成も1つの魅力に感じました。
続きを読む


Vulkan で Texture, Sampler の独立設定

Vulkan のコードにおいて、テクスチャを使用する際に、サンプラとテクスチャとをまとめている VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER を設定する箇所がありました。
よく見かけるサンプルでは、 OpenGL でテクスチャを使用するのと同じ感覚で、 サンプラとテクスチャを1体にして使っていたりします。
ここで、他の設定種別をみてみると VK_DESCRIPTOR_TYPE_SAMPLER, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE とあるので Image と Sampler は別に設定することもできるのではないか?と思いました。

続きを読む


NVIDIA Nsight Graphics を試す

NVIDIA Nsight といえば、 Visual Studio に統合されて、グラフィックス API 使用時のデバッグのお供として定番のものでした。これのスタンドアロン版、 Visual Studio に統合されないで単体で使用できるアプリケーションとして、「NVIDIA Nsight Graphics」が公開になりました。

今のところ、専用のドライバが必要になるみたいですが、ちょっと動作を確認してみたいと思います。

※ 少し前に Windows10 のドライバをダウンロードすると正常なものが取得できませんでしたが、現在は正常になっているようです

入手・セットアップ

現時点において NVIDIA の以下のページから入手が可能です。

このページからダウンロードページへのリンクがあります。ダウンロードには NVIDIA Developer のアカウントが必要になるようなので、持っていない場合には作成することが必要になります。そして、 Nshight Graphics 本体と、各自の環境に合わせたドライバをダウンロードします。

今のところ、 NVIDIA Geforce 600 番以降であれば対応しているようです。また 64 ビット Windows 7 or 10 の環境のみサポートしているようです。Windows 8系や 32 ビットあたりを打ち切っている辺り潔いです。デバッグ時にこれらの環境を使っていることは割と少ないと思いますが、ドライバのダウンロードの箇所には Win8 の文字があって対応していそうにも見えますが、注意が必要です。
続きを読む


インサイド Windows 第7版

ようやく、インサイド Windows 第7版 上 (日本語版)が出るようです。
先日、既刊の書籍がプレミア価格になっていましたが、これも終わりそうですね。

下巻のほうは、本体がまだのようなので未定となっているようです。

今回からは Windows10 世代の内容も含まれているようになったので、きちんと読んで把握しなおさないとなーと思っています。

ちなみに英語版(本家)はこちらに。英語版のほうであれば、現時点でも Kindle 版まで用意があるようですね。


ESXi 向けUSB NICにオススメが増えた

vSphere で使える USB NIC として以前は、以下のものをオススメしていました。

Windows の環境でも USB ハブ機能+有線LAN という点で重宝する機器でしたが、 vSphere Hypervisor (ESXi) の環境でも使えるということで個人的にはさらに価値が高まっているものとなっています。 vSphere Hypervisor 用として考えるならば、もっとオススメできる機器が登場していました。

見ての通り、 USB 1つで、 2つの Ethernet のポートが追加できます。 個別に仮想マシンに割り当てるもよし、1ポートでは出来ない仮想スイッチを構成するもよし、色々と可能性を広げてくれそうです。
USB 3 での接続なので、転送速度の懸念もあまりなしといったところです。 NUC と組み合わせた場合、小型なのに2ポートEther というしっかりした環境を実現できます。

標準のドライバで何もせずに認識というわけにはいかず、ドライバの導入という手間はかかります。
いずれも LAN-GTJU3H3 と同じく ASIX AX88179 というチップを使っているようです。これについては以前の記事の方で説明もしているので、そちらを参照してもらえればと思います。