• 検索結果がありません。

組込みプログラミングの体験学習への取組み(PDF)

N/A
N/A
Protected

Academic year: 2021

シェア "組込みプログラミングの体験学習への取組み(PDF)"

Copied!
5
0
0

読み込み中.... (全文を見る)

全文

(1)

組込みプログラミングの体験学習への取組み

Embedded Programming Course for Young Learners’ Experiences

福良博史,小野泰二,菊池達也,大村光徳 FUKURA Hirofumi, ONO Yasuji, KIKUCHI Tatsuya, OMURA Kotoku 1.はじめに 東京校における情報系の啓蒙活動として、学 園祭およびオープンキャンパスなどでの体験学 習が毎年企画されている。ここ過去 2 年間は、 「HASKELL によるシューティング・ゲームをつ くろう」というコーナーで、OpenGL を用いたゲ ーム・プログラミングによるソフトウェア製作 の体験コーナーを実施した。親子連れで参加し 熱心に取り組んでいただいたり、好評であった。 近年、携帯電話、車、エレベータ、そして各 種家電製品などにソフトウェアが組み込まれる ようになり、組込み系のソフトウェアに対する 認識が深まりつつある。このような状況の中で 情報系のカリキュラムを以前にも増して組込み 系の比重を高めるべく検討がなされている。そ こで、情報系の啓蒙活動においても組込み系の ソフトウェア開発の体験を行うものを検討する こととした。 初めに、あまり複雑な機構のものは保守が大 変になる。費用的にあまり高価にならず、部品 は簡単に入手でき、フリーのソフトウェアを使 うことを前提とし、参加者が自宅でハードも含 め、最初から再現できるようなものが良いので はないか、と考えた。 いろいろ検討した結果、トランジスタ技術に 掲載されていた PIC マイコンによる電子ピアノ の製作を参考に検討した(1) (2)。その結果一定の 成果があったのでその紹介をする。 2.検討経過 2.1 開発環境 パソコン上での組込み系のソフトウェアを開 発していくためには、マイコン用の機械語を作 り出すための、クロス・アセンブラかまたは C 言語のクロス・コンパイラが必要になる。 C 言語のクロス・コンパイラは、フリーの SDCC(3)を用いた。プリント基板の設計は、CAD ソフト EAGLE のフリー版(4)を用いた。フリー版 は、プリント基板の面積が 100×80mm まで、配 線パターンは 2 層までとなっている。今回のテ ーマは、この範囲内で収まると判断した。 コンパイラから作り出されて機械語を PIC マ イコンに書き込む PIC ライタは、マイクロチッ プ社の純正品は高価な上、パソコンからのプロ グラムの書き込みは、シリアル通信の機能が必 要となっている。最近のパソコンはシリアル通 信のポートのインターフェースを持っていない ものが多い。近年このようなパソコンを意識し て USB 接続で、USB から供給される電源だけで 動作できる PIC ライタが出てきている。今回予 定している各種 PIC マイコンに対応できる USB 接続の PIC ライタ(5)を利用することとした。 この PIC ライタ用のソフトは、Writer509 と いうフリーのソフトを用いた。 2.2 電子ピアノ 最初の検討段階で、PIC マイコン(PIC16F84A) による電子ピアノ(図1)を製作した。 前述の雑誌記事は、アセンブリ言語によるプ 図1 電子ピアノの完成図

(2)

ログラミングを行っている。プログラミングの 体験としては、入門者にアセンブリ言語を体験 させるよりは、比較的に人間が理解しやすい高 級言語の C 言語を採用した。そのため、プログ ラムを C 言語で記述しなおした。 しかし、電子ピアノの場合、1 オクターブ分 の鍵盤を用意するとなると、白鍵を 8 個と黒鍵 を 5 個、計 13 個を必要とし、部品コストが高く、 製作に時間が掛かる。鍵盤のキーをどれが押下 されたかを判定するアルゴリズムの学習は、初 心者にプログラミングを体験してもらうには、 複雑なものになった。そこで、初心者にも回路 の仕組みとプログラムのコードが分かり易く、 楽しく学べる題材を検討した。 2.3 電子オルゴール 電子ピアノよりも回路が簡単に製作でき、プ ログラミングが容易なものとして、電子オルゴ ールの製作を検討した。 この場合、電子ピアノの 13 個もの鍵盤に該当 するキーが不要となったので、図2のように回 路を簡素化することができた。 2.4 電子オルゴールの改訂版 導体が現在までに報告されている。 この回路のプリント基板用の図面を図3に示 す。図2、図3共に EAGLE を用いた。 完成した電子オルゴールを図4、図5に示す。 このソフトウェアの構築方法を検討していく 上で、オルゴールの中にどれだけの音符が挿入 できるかという問題が生じた。そこでなるべく 多く音符を入れられることが望ましいと考えた。 通常のプログラミング・テクニックとして、五 線譜を配列を用いてテーブル化しようとしたと ころ、データ用の記憶域が非常に少ないことが わかった。 このため、試行錯誤した結果、音符1個分の 関数を用意し、この関数を呼び出すことで、1 個の音が鳴るようなプログラミングを行うこと が、最適な方法と判断し、体験学習においては、 音符を書き込むプログラミングを主体とし、そ の結果をコンパイルし、PIC にプログラムを書 き込むようなシナリオを考えた。 図2 電子オルゴールの回路図 図4 電子オルゴール 図5 電子オルゴールのプリント基板の裏面

(3)

図6 音符の長さを変化させる関数 図6に示した関数 SoundLength()は、音の長 さを制御する。つまり、四分音符とか八分音符 とかを表現している。 図7 1 音演奏の関数 図7に示した関数 PlayT()は、ドレミ・・・ の音を選択している。この関数の引数は、メモ リーを節約するために、8 ビット(1 バイト)に 3 種類の情報を格納している。最初の 1 ビット は、2 オクターブ分の上下を指示できる。次の 3 ビットは、図6の関数 SoundLength()に指示す るための音の長さを 7 種類を表現する。残りの 4 ビットは、ドレミ・・・の音階を 1 オクター ブ分、半音も含めて 13 種類を表現する。 図8 オルゴールの制御関数 図8は、主制御部と、割り込みによる周波数 の制御部を示す。主制御部の中に書かれている #include m_elise.h となっている箇所に楽譜 のコードが入る。体験学習において、この部分 をプログラミングしてもらうこととした。 3.体験学習の実施 3.1 体験学習のための準備 体験学習当日の説明用に、プログラミング、 コンパイル、そして PIC にプログラムを書き込 むことなどを行うための簡単な資料を用意して おく。学習体験者がその場で突然曲を入れるよ うに言われても、頭に簡単に曲が浮かぶことは void SoundLength(char snd) { while(snd) { Delay(255); snd--; } sound_level=v_null; Delay(3); }

void PlayT (unsigned char Tone) { // x... .bit7 of Tone

otoLevel = (Tone>>7) & 0x01; switch (otoLevel) {

case 0: oto1; break; default: oto2; break; }

// .xxx .bit6-bit4 of Tone nagasa = ((Tone>>4) & 0x07); onkaiN = (Tone & 0x0f);

// xxxx bit3-bit0 of Tone switch (onkaiN) {

case 1: onkai=v_do1; break; case 2: onkai=v_do1s; break; case 3: onkai=v_re; break; case 4: onkai=v_res; break; case 5: onkai=v_mi; break; case 6: onkai=v_fa; break; case 7: onkai=v_fas; break; case 8: onkai=v_so; break; case 9: onkai=v_sos; break; case 10: onkai=v_ra; break; case 11: onkai=v_ras; break; case 12: onkai=v_si; break; case 13: onkai=v_do2; break; default: onkai=v_null; break; } if (Tone==0) {sound_level=v_null; Delay(50);} // 同音の区切 else {sound_level=onkai; SoundLength(nagasa);} } void main () { //--- 初期設定 --- PORTA = 0x00; PORTB = 0x00; TRISA = 0xfd; //RA1 ポートのみ出力 TRISB = 0xff; //--- TIMER0 の設定 --- PSA = 0; //--- 割り込みの許可 --- T0IE = 1 ; // TIMER0 割り込みを許可 GIE = 1 ; // 全体の割り込みを許可 //--- 主制御 --- while (1) { // オルゴールの繰り返し //エリーゼのために #include "m_elise.h" } } // 割り込みルーチン

void interval() interrupt 0 { TMR0 = sound_level ;

if (!(sound_level==0)) PORTA ^= 0x02; T0IF = 0 ; // 割り込みフラグをクリア }

(4)

考えにくい。そこで、事前にいくつかの曲目を 用意しておくこととした。この曲は、インター ネット上から、著作権フリーとなっているクラ シックや、民謡などの楽譜をダウンロードし、 一度に実習する5組の人の分を印刷して揃えて おく。小中学生レベルの楽譜の本を数冊用意し た。 図9に示した Java で作成したバーチャルな 楽器を用意した。これは、パソコン上でピアノ の鍵盤を模擬的に作り出したもので、画面の鍵 盤をマウスでクリックすると音が出るようにな っている。 3.2 オープンキャンパスにおける体験学習 10 月 20 日午後実施したオープンキャンパス での体験学習に 5 名の高校生が参加してくれた。 この体験学習のオルゴールの課題説明の理解 も、製作も予想以上に早くできる学生もいた。 通常は 2 オクターブ分しか考慮に入れていない 設計であったが、一人の生徒は、3 オクターブ 分必要な曲を選び、通常のこちらで用意した関 数の機能を超えたものにチャレンジし、製作を 完成させていた。 3.3 学園祭における体験学習 10 月 20 日半日と 21 日一日実施(図10)し、 二日間で 22 名の参加者を得た。小学生から一般 成人まで、特に女子の比率が高かった。前回ま でのシューティング・ゲームの製作では男子が 多かったのと対照的な現象が生じた。 参加者全員が予想以上に熱心に取り組んでく れた。特に小学校 3 年生が、こちらからの説明 を聞いた当初は、「そんなの!めんどうくさい なー」と言い、どうなることかと思っていたと ころ、仕掛かり中の段階で、その途中経過の自 作のオルゴールの曲を聴いてから、俄然頑張り だし、終了時刻を越えても黙々とプログラミン グに熱中していた。そして最後、帰りがけに、 「これは、私の宝物です。大切にします。」と言 って持ち帰ったのが印象に残った。 4.おわりに この体験学習は、総じて予想以上に参加者が 熱心に取り組んでくれた。予想外だったのは、 パソコン上の電子ピアノを用意しておいても、 誰もそんなものを使わないと考えていたのに反 し、オープンキャンパスと学園祭の両方とも、 自分で気に入っている曲を入れたがっている人 達がいたことである。このような人たちは、頭 の中で曲を思い出そうとしているので、パソコ ン上のバーチャルな電子ピアノがあることを知 らせ、その操作法を説明すると、そのピアノを 使いながら熱心に音符を拾い始めた。 電子オルゴールを作るとなると、気に入った 曲しか入れたくない、その楽譜が無いとなると、 自分で一所懸命思い出そうとする人たちがいる ことまでは考えていなかったのであるが、この ようなパソコン上のピアノを用意しておいたこ とが参加者に喜ばれた。 この電子オルゴールを、より安価かつメモリ 容量が倍の PIC(PIC12F683)を利用した改造を 行っている。 電子オルゴールとした場合、今回のスピーカ 図10 体験学習の説明風景 図9 パソコン上の模擬ピアノ

(5)

がかなり小さく音量も小さかった。そしてボリ ュームをつけなかったことにより、音の制御が 出来なかった。これらの点を解消していきたい と考えている。 また、プログラミングの体験としては、楽譜 の入力だけでなく、パソコンの Java で製作した ピアノを用いて作曲・演奏したものを、そのま まパソコン上で聞き直すことができ、修正も可 能なものを用意できれば、電子オルゴールのシ ミュレータによる検査というフェーズも体験で きることになる。そして、そのシミュレータの 演奏結果の確認をし、内容に満足できれば、そ のままマイコンに実装してくれるような仕組み も今後は考えて行きたい。 以上のことを含めて製造プロセスを熟慮する ことにより、電子オルゴールを製作する場合を 例にした企業における製品作りの奥の深さを学 習するための教材化も可能かもしれないと考え ている。つまり、単にオルゴールを作るといっ ても、その製品化に至る過程で、パソコン、ク ロスコンパイラ、CAD ソフト、プリント基板製 作装置、計測機器、製品のシミュレータ、そし てソフトウェアの自動生成などの色々な支援環 境があって初めて製品が生まれる素地ができて くる、ということを肌で感じ取ってもらえるよ うな教材に仕立て上げていきたい。 学園祭の項で紹介したように、感動してく れる学生がいたことは、理工学離れが色々と 問題視されている中で、多少工学に目をむけ てくれる子供が増えたかな、という気持ちを 持つことができて主催者として感激した。 謝辞 最後に、本プロジェクトを進めるにあたり、 多大なご支援をいただいた当校電気・電子系 の宮澤昊一、安原雅彦、清野政文、田中晃の 各先生に深く感謝いたします。 参考文献 (1) 落合正弘, “録音機能付き電子ピアノの製作 (前編)”トランジスタ技術, 2004 年 6 月,p.259 ~p.263 (2) 落合正弘, “録音機能付き電子ピアノの製作 (後編)”トランジスタ技術, 2004 年 7 月,p.269 ~p.273 (3)C 言語コンパイラ(SDCC): http://sdcc.sourceforge.net/ (4) プリント基板の CAD ソフト(EAGLE): http://www.cadsoft.de/ (5) PIC ライタ(ハード:FENG3) http://halfmat.ocnk.net/ (6) PIC ライタ(ソフト:Writer509v2.53Win) http://www.geocities.jp/ orange_denshi/writer509.html

参照

関連したドキュメント

実際, クラス C の多様体については, ここでは 詳細には述べないが, 代数 reduction をはじめ類似のいくつかの方法を 組み合わせてその構造を組織的に研究することができる

点から見たときに、 債務者に、 複数債権者の有する債権額を考慮することなく弁済することを可能にしているものとしては、

目標を、子どもと教師のオリエンテーションでいくつかの文節に分け」、学習課題としている。例

いしかわ医療的 ケア 児支援 センターで たいせつにしていること.

海なし県なので海の仕事についてよく知らなかったけど、この体験を通して海で楽しむ人のかげで、海を

とりひとりと同じように。 いま とお むかし みなみ うみ おお りくち いこうずい き ふか うみ そこ

以上の基準を仮に想定し得るが︑おそらくこの基準によっても︑小売市場事件は合憲と考えることができよう︒

 今日のセミナーは、人生の最終ステージまで芸術の力 でイキイキと生き抜くことができる社会をどのようにつ