*

ライブラリでRasPiのピンにアクセス(3)-SPIのインターフェース追加(その2)

公開日: : C++, pigpio, 開発

どもです。

今回のエントリも、前回に引き続き、RaspberryPiのピンをより簡便に使用できるようにするために作り始めたライブラリのSPIのサンプルです。

前回は、Arduinoをスレーブにして通信する例を紹介しました。
この例では、とくに通信のプロトコルやデータフォーマットを決めていませんでした。
しかし、一般的に他のデバイスと通信する場合には、特定のプロトコルやフォーマットが規定されています。
そこで今回は、今回作成しているライブラリを使用して、特定のプロトコルやフォーマットに対応する例を示します。

1.通信相手

今回、「特定のプロトコルやフォーマットが規定」されたデバイスとして、「MDK001」を使用します。
これはデジタル温度センサ「ADT7310」をDIP化したモジュールです。

過去の記事で、RaspberryPiとpigpioを使用して、このデバイスと通信、センサー値(ここでは「温度」)を取得する例を紹介しています。
この記事をベースに、現在作成しているライブラリを使用するように変更し、例として紹介していきます。

2.ライブラリの使い方

SPI通信を行う場合には、CPartクラスを継承した新規のクラスを作成します。
今回の場合、CPartを継承した「CMDK001 」というクラスを実装します。
そして、そのクラスでは、MDK001固有のデータを読み出すプロトコルを実行する処理を実装します。
具体的には、以下のようなクラスになります。

デバイスの初期化、Shutdownモードの開始、および終了、そしてセンサー値の読み出しと、それに基づく物理値を取得する処理を実装しています。
MDK001では、(現状では)必要な処理が上記に示した内容だけでした。
基本的に、1つのセンサーから取得できる値は、それほど多くありません。
加えて、1つのセンサーが持つ機能もそれほど多くありません。
そのため、クラス化する際にも、実装する必要があるメソッドは、それど多くなりません。
(いや、たぶん…)

3.作ったライブラリを使ってみる

では、作ったクラスを使って温度を測定、取得する処理を実装します。

これにより、センサー値および温度を取得し、表示できます。
自画自賛ですが、過去のコードと比べると、か~な~りすっきりしています。

4.まとめ

今回は、作成しているライブラリを用いて、SPIで通信するセンサーから値を取得する例を示しました。
センサーと通信する場合には、CPartを継承したクラスを作成し、そこにセンサー固有の処理を実装する、という方法を提案/提供します。
こうすることで、上記のようにすっきりとした、分かりやすいコードで機能を実装できるようになるかと思います。

ではっ!

ex.公開しています

最新のライブラリ、および前回、今回のエントリの中で紹介したサンプルのコードをGitHubにて公開しています。
詳細は、そちらを参照して下さい。

関連記事

toppers

C言語でEV3開発(19)-コマンド通信処理でEchoBackしてみた

どもです。 前回は、Bluetoothの接続状態の変化に伴う、状態遷移について書きました。 今回

記事を読む

think_about_utest

単体テストの効率化を考える(4)-スタブの引数(ダブルポインタ)

どもです。 「単体テストの効率化について考える」の4回目です。 1回目から3回目まではコチラ

記事を読む

Arduino_DHT11

温度(湿度)センサを使ってみた(1)-ArduinoでDHT11

どもです。 今回は、久しぶりにセンサーを購入して使ってみたので、それについて記載します。 1.使

記事を読む

eclipse_oxygen

Eclipse/CrossCompile環境でプロジェクトをクリーンできない

どもです。 今回は、Eclipseでクロスコンパイル環境を作成した場合、を実行すると「指定されたフ

記事を読む

no image

C言語でEV3開発(11)-opOUTPUT_STEP_POWERコマンド

どもです。 今回のエントリーでは、再びモーターを動かすためのコマンドについて書きます。 コマンド

記事を読む

GitHub

C/C++のスタブを自動生成するツールを公開しました

どもです。 突然ですが、C/C++の単体テストで使用する「スタブ」を自動で生成するツールを公開

記事を読む

eclipse_cdt_top_100

C言語でEV3開発(3)

どもです。 今回のエントリーの内容は、前回まででセットアップした環境で、実際にEV3上で動く実行フ

記事を読む

eclipse-juno-logo

C言語でEV3開発(1)

どもです。 2回目の投稿。 本格的な投稿としては、初めての投稿になります。 内容は、LEG

記事を読む

no image

C言語でEV3開発(13)-opOUTPUT_STEP_SPEEDコマンド

どもです。 今回のエントリーは、モーターを動かすコマンドである 「opOUTPUT_STEP_S

記事を読む

toppers

C言語でEV3開発(27)-EV3にヒステリシス処理を実装してみた

どもです。 今回は、モーターから読み出した値に対するヒステリシス・フィルター処理です。 0.

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

iot_at_home_eye_catch
IoT開発(1)-ESP-WROOM-02のセットアップ

どもです。 前回までのエントリで、「DHT11の測定結果をクラウドで

sensor_graph_visualization_002_eye_catch
センサーの値を見える化する(2)-温湿度センサ:DHT11の値の見える化

どもです。 前回に引き続き、今回もセンサ値の見える化です。

sensor_graph_visualization_eye_catch
センサーの値を見える化する(1)-温度センサ:MDK001の値の見える化

どもです。 ここしばらく、PCツールとかの話が多かったのですが、

think_about_utest
VisualStudioで実行した単体テストの結果の出力(3)-テスト実行からレポート生成までをツールで自動化

どもです。 前々回、前回と、VisualStudio/C#での単

think_about_utest
VisualStudioで実行した単体テストの結果の出力(2)-出力ファイルの読める化

どもです。 前回の続きです。 前回は、VisualStud

→もっと見る

PAGE TOP ↑