オブジェクト指向組み込みプログラミング
ベルーフのプログラミング研修のなかに組み込みC/C++研修があります。下の写真のようなスマホにも使われているARMマイクロプロセッサのマイコンボードとセンサやLED、スイッチなどが搭載された多機能IOボードを使って研修を行います。
ベルーフの基礎研修のなかに「情報基礎リテラシー」という研修がありますが、この研修はコンピュータの原理について、2進数や論理演算からコンピュータの5大装置それぞれの詳細及びソフトウェアを解説して行く研修です。この研修はテキストを使った座学ですが、組み込みC/C++研修はその内容をアプリケーションを作って確かめる実践編になっています。使用しているハードウェアのしくみや2進数の知識、論理演算、シリアル通信、割り込み処理など実際に機器に触れながら体験することができます。
今回、9月からの研修ではカリキュラムの構成を少し変更して3か月の研修期間の最後の1か月で各自修了総合演習として独自のアプリケーションを作成してもらうことにしました。
この研修で作るアプリケーションから動かせる入出力デバイスは下記の11デバイスです。
-
-
- LED 4個
- 押しボタンスイッチ 3個
- ボリューム
- ブザー
- アナログ温度センサ
- 数字表示LED 4桁
- デジタル温湿度センサ
- 超音波距離センサ
- スピーカ
- 赤外線リモコンセンサ
- シリアルインタフェース(PC接続用)
-
ここで、7,8,9は今回9月からの研修で追加した機材です。
研修の最初の2か月でこれらのハードウェアの動作の仕組みとそれをソフトウェア(C/C++)から扱う方法を講義形式で学習します。そして残りの1か月でこれらのデバイスを使って、独自の組み込みアプリケーションを制作します。
様々なハードウェアを動かすアプリケーションをゼロから作ることは、専門的な電子回路の知識が必要となりハードルが高くなります。そこで、この研修では、使用するデバイス専用のライブラリを予め用意して、講義ではハードウェア動作の細部まで理解できなくても実際に動かしながらしくみを確かめて行けるようにしました。これにより組み込みシステムとしてのアプリケーション作りに集中出来るようにしました。もちろん用意した専用のライブラリは、仕様やソースコードは示しているので、より深く内容を理解したい方はそれも可能となっています。
専用ライブラリは全てオブジェクト指向のクラスを使ったライブラリになっています。
オブジェクト指向プログラミングは、「もの」の性質を使ってプログラムを構成するやり方ですが、組み込み以外のプログラミング研修で扱う小規模なプログラムでは文法や使い方は覚えられてもそれの有効性をなかなか実感することが出来ません。しかし、組み込みプログラミングでは、デバイスが「もの」そのものであるためこれを動かすためのライブラリにオブジェクト指向プログラミングを使うとその効果が直接実感できます。
一例を示すと、ボード上の3個のスイッチを制御するアプリケーションを作る場合、オブジェクト指向を使用しないプログラミングでは、スイッチ3個を制御するプログラムを関数使って作ります。一方、オブジェクト指向プログラミングでは、スイッチ1個を制御するプログラムをクラスで作ります。そして、そのクラスから3つのオブジェクトを生成して3個のスイッチを制御します。前者の場合、スイッチが4個のボードではスイッチを4個制御するように関数を書き直さなければならず最初から作り直しになります。後者の場合は、クラスからオブジェクトもう一つ生成するだけで4個のスイッチを制御することが出来ます。
● オブジェクト指向でないプログラミング
● オブジェクト指向プログラミング
オブジェクトの生成は、下記の記述のような1行のコードを追加するのみです。
クラス名 オブジェクト名;
スイッチの制御は割り込みを使ったり、チャタリング対策をしたり結構面倒な処理になります。これが処理を見直すことなく、上記の1行の追加で異なる構成のボードに対応できるようになることは、様々な構成のハードウェアに対応できる汎用性の高いライブラリを作る上で大変便利な仕組みになります。
組み込みプログラミング研修では、このようなオブジェクト指向の便利さを比較的小さな規模のアプリケーションで体験することが出来ます。