シフトレジスタライブラリfor Arduino

8bit シフトレジスタ用のライブラリを書きました。
このライブラリを介してシフトレジスタを操作することができます。
前置きとして、このライブラリは C++の STL ライブラリに含まれる map を使用します。
しかし残念なことに Arduino 環境には STL は実装されていません。
よって maniacbug 氏の作成したライブラリ StandardCplusplus を使用しています。
STL 仕様の map が使用できるのであれば他の方が提供しているライブラリを使用しても動作するはずです。

配線についての説明をします。
シフトレジスタを操作する際は主に SER, SRCLK(SCK),RCK(RCK)の3つのピンに信号を送ります
Arduino のデジタルピン3つを使用します。
(*SPI 通信用のピンを使用してより高速にシフトレジスタを操作することもできます。)

さて、サンプルプログラムは以下の通りです。

インスタンスの生成


ShiftRegister クラスのインスタンス生成を確認してみましょう。
通常のデジタルピンを使用する方法であれば、インスタンスは以下のように生成できます。


コンストラクタの定義を以下に示します。


今回の場合 8bit シフトレジスタを合計3つ使用しますので、8*3bit = 3byte となります。
digitalWrite メンバ関数の呼び出しインスタンスを生成したあとは、私たちが慣れ親しんだ digitalWrite 関数のようにシフトレジスタを操作することができます。
実際つぎのように呼び出しています。


見ての通り ShiftRegister::digitalWrite 関数は Arduino の digitalWrite 関数と全く同じように呼び出せます。

定義は以下の通りです。

 

基本的な使用方法


基本的にはインスタンス生成とインスタンスの digitalWrite 関数の呼び出しによってシフトレジスタをデジタルピンと同等に操作することができます。
しかし digitalWrite 関数では実装の都合上、場合によっては効率が落ちてしまいます。
より高度な処理を行いたい場合は ShiftRegister クラス内の他のメンバ関数を使用するとよいでしょう。
詳しくはこちらをご覧ください。