*

ライブラリで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にて公開しています。
詳細は、そちらを参照して下さい。

関連記事

think_about_utest

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

どもです。 前々回、前回と、VisualStudio/C#での単体テストの効率化について書いて

記事を読む

toppers

C言語でEV3開発(26)-EV3で機械学習(1)-QLearningをC#に委譲してみた

どもです。 前回の投稿では、Q-LearningをEV3本体に実装してみたら、メモリが足りなくて動

記事を読む

toppers

C言語でEV3開発(18)-モードの遷移の設計-コマンド通信処理の準備

 どもです。  今回は、前回紹介したEv3とBluetoothで通信する機能を

記事を読む

MY_MFC_LOGO

MFCプログラミング(3):クリップボードへのデータ形式の登録

どもです。 今回も、クリップボードネタです。 1.背景(簡単に) アプリケーションにコピー

記事を読む

Arduino_DHT11

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

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

記事を読む

no image

C言語でEV3開発(10)-opOUTPUT_CLEAR_COUNTコマンド

どもです。 前回のエントリーのラストで、「モーターを動かすコマンド」と書きましたが、今回紹介するコ

記事を読む

MindStormControl_SprachScreen

EV3開発サポートツール(1)-C#のユーザーコントロール開発

どもです。 突然ですが、今回はC#に関するエントリになります。 具体的には、C#/WPFで、独自

記事を読む

cygwin_my_image

Windows10/cygwinの音を消す

どもです。 最近、Windows10/cygwinで作業をする場面がありました。 このcyg

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(8):pigpioを使用したチャタリング対策の問題の対策

どもです。 だいぶ、間が空いてしまいました。 久しぶりの更新です。 前回のエントリーで、「

記事を読む

no image

Objective-CからC++コードを呼び出す

どもどもです。 今回は、突然ながらMacに関係する投稿です。 ソフト関係のことを勉強していて

記事を読む

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="">

arduino_relay_switch_002_ae_g5v_drv_eye_catch
Arduinoでリレースイッチ(2)-AE-G5V-DRV

どもです。 前回の記事では、「フォトカプラリレー」を使用したLチ

tlp222af_001_eye_catch
Arduinoでリレースイッチ(1)-TLP222AF

どもです。 つい先日、やっとのことでリレースイッチを手に入れるこ

c_sharp_eye_catch
外部からMariaDbにアクセスする(2)-C#からMariaDbにアクセスする。

どもです。 前回のエントリで、外部からMariaDbにアクセスす

c_sharp_eye_catch
外部からMariaDbにアクセスする(1)-データベースの設定

どもです。 今回は、Linux上のMariaDbにWindows

think_about_utest
middle_unit
最小…よりも(ほんの)少し大きいテストフレームワーク

どもです。 今回は、単体テストのフレームワークについて書きます。

→もっと見る

PAGE TOP ↑