カメ太の日記 / 2011-08

前の月 / 次の月 / 最新

2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12

2011-08-31 Wed

Arduinoで音楽演奏 [dolittle]

大学1年生向けの授業で、Arduinoに傾きを検知する3軸加速度センサ(Wii
リモコンと同じ原理)を載せて、ドリトルの音楽演奏と組み合わせてみま
した。X軸が音階、Y軸が打楽器です。

演奏している様子をYouTubeに置きました。

Arduinoと3軸加速度センサの配線は、「ドリトルで学ぶプログラミングの
仕組み[第2版]
」の110ページの回路です。

kasokudo

これはプログラムです。2つの配列に打楽器と2オクターブの音階を入れて、
入力値に応じた楽器と音階を演奏しています。メロディの楽器には17番の
ドローバーオルガンを使いました。

打楽器=配列!(ドラム!"ド" 作る)(ドラム!"タ" 作る)(ドラム!"ツ" 作る)作る。
打楽器数=打楽器!要素数?。

音階=配列!作る。
音階名=配列!”ド" "レ" "ミ" "ファ" "ソ" "ラ" "シ” 作る。
音階名!「|x| 音階!(メロディ!("_"+x)作る)入れる」それぞれ実行。
音階名!「|x| 音階!(メロディ!(x)作る)入れる」それぞれ実行。
音階数=音階!要素数?。

システム!"arduino" 使う。
a=Arduino!作る。
a!(システム!シリアルポート選択)ひらけごま。

xin=a!0 アナログ入力。yin=a!1 アナログ入力。zin=a!2 アナログ入力。
x値=フィールド!作る。y値=フィールド!作る。z値=フィールド!作る。


  x=xin!読む。y=yin!読む。z=zin!読む。
  x値!(x)書く。y値!(y)書く。y値!(y)書く。

  x楽器=楽器!17 作る。
  x=(x-70)*音階数/100。
  x楽器!(音階!(x)読む)設定。

  y=(y-70)*打楽器数/100。
  y楽器=打楽器!(y)読む。

  バンド!作る 400 テンポ(x楽器)(y楽器)追加 演奏 待つ。
」!1000 繰り返す。

a!とじろごま。


これは授業で使ったプログラムです。配列を使わなくて済むように、入力
値を条件分岐(if)で判断して音階などを決定する例で示しました。

システム!"arduino" 使う。
a=Arduino!作る。
a!(システム!シリアルポート選択)ひらけごま。

xin=a!0 アナログ入力。yin=a!1 アナログ入力。zin=a!2 アナログ入力。
x値=フィールド!作る。y値=フィールド!作る。z値=フィールド!作る。

x楽器=楽器!17 作る。

  x=xin!読む。y=yin!読む。z=zin!読む。
  x値!(x)書く。y値!(y)書く。y値!(y)書く。

  「x<100」!なら「音階="ド"」実行。
  「x>=100」!なら「音階="ミ"」実行。
  x楽器!(メロディ!(音階)作る)設定。

  「y<100」!なら「たいこ="ド"」実行。
  「y>=100」!なら「たいこ="タ"」実行。
  y楽器=ドラム!(たいこ)作る。

  バンド!作る 300 テンポ(x楽器)(y楽器)追加 演奏 待つ。
」!1000 繰り返す。

a!とじろごま。

2011-08-13 Sat

1時間で学ぶソフトウェアの仕組みの簡易版 [dolittle]

子供向けの場合など、「1時間で学ぶソフトウェアの仕組み(ドリトル本
5章の宝拾いゲーム)
」でもキー入力が多いときのために、プログラムを
どこまで簡単にできるかを考えてみました。

これは元の宝拾いゲーム。

カメ太=タートル!作る。
右ボタン=ボタン!”右” 作る。
右ボタン:動作=「カメ太!90 右回り」。
左ボタン=ボタン!”左” 作る。
左ボタン:動作=「カメ太!90 左回り」。
時計=タイマー!作る。
時計!「カメ太!3 歩く」実行。
宝物1=タートル!作る ペンなし”tulip.png” 変身する100 100 位置。
宝物2=タートル!作る ペンなし”tulip.png” 変身する50 -100 位置。
宝物3=タートル!作る ペンなし”tulip.png” 変身する-100 200 位置。
カメ太:衝突=「|相手|相手!消える」。



工夫次第でいくらでも簡単にできますが、残しておきたいのは、「かめの
オブジェクトを作る」「ボタンに表示する文字と押したときの動作を指定
する」「繰り返し実行する動作を指定する」「花のオブジェクトをつくる」
くらいでしょうか。そうなると最低限はこれくらいの記述になりそうです。

短くなったので、秋の大学祭の小学生向けのイベントでも使ってみます。
高校生は「花!作る」を「花!200 100 作る」のように座標を指定させる
とよいと思います。座標を省略するとランダムに置かれます。

これは簡単になったプログラム。

かめた=かめ!作る。
操作ボタン!"左" 「かめた!30 左回り」作る。
操作ボタン!"右" 「かめた!30 右回り」作る。
「かめた!10 歩く」!くりかえし実行。
花!作る。
花!作る。
花!作る。



簡単にしたプログラムはそのまま動くわけではなく、裏で仕掛けが必要です。
次の内容を「treasure_sample.ini」といったファイルに書いておき、
初期化ファイル(startup.ini)に「システム!"treasure_sample" 使う。」
を書いて、読み込んで使うのがよいと思います。

これは「treasure_sample.ini」の中身。

かめ=タートル!作る 消える。
かめ:衝突=「|相手| 相手!消える」。
ブロック:くりかえし実行=「自分:時計=タイマー!作る。時計!(自分)実行」。
操作ボタン=ボタン!作る 消える。
操作ボタン:作る=「|文字 処理|
「文字=="左"」!なら「キー="LEFT"」そうでなければ「キー="RIGHT"」実行。
b=ボタン!(文字)(キー)作る。b:動作=処理」。
花=0。
花:作る=「|x y| t=タートル!作る "tulip.png" 変身する ペンなし。
「全部!(x!=undef)(y!=undef)本当」!なら「t!(x)(y)位置」そうでなければ
「t!(random(600)-300) (random(300)-150) 位置」実行。t!現れる」。


自分自身を拡張できる言語は便利ですね。

2011-08-06 Sat

第4回全国高等学校情報教育研究大会 [infoedu]

高校の先生方の研究大会でお話をしてきました。

平成23年8月5日(金)13:00 ~ 8月6日(土)13:00 大阪経済大学
講演 大阪電気通信大学 兼宗 進 先生 「情報の科学的な理解を深める学習法」


準備では参加者の層が読めずに迷いました。普段はアンプラグドを実演し
て「これを使えば楽に意味のある授業ができる」と伝えることが多いです。
しかし、今回の対象は、わざわざ全国から集まった感度の高い先生方。ハ
ウツーを伝えるだけでなく、考え方のヒントを散りばめてみました。これ
は成功だったと思います。半分以上がアンプラグドを知っているって、ど
れだけ熱心な先生方ですか(^^。

主なポイント

1.情報の科学と技術の話
・身近な「仕組み」を扱うのが効果的。科学と技術の両方。
・情報機器や情報システムの仕組みは「社会と情報」で重要。
・「こういう仕組みだったんだ〜」という満足感は実用的だし、生徒も先生も幸せ。

2.情報の科学を教えるヒント
・CSアンプラグドは興味を引き出す効果が高い。2進数を実演。
・専門用語をたくさん教えるより、本質を少数教えることが大切。
・コンピュータは数しか扱えない(超重要)。これがわかれば、生徒は符号化や文字コードの必要性を自然と理解できる。
・情報の題材は数学や物理と似ているが違う。区別して教えたい。
-2進数は数学ではn進同士の計算だが、情報ではデータの表現手段。
-三原色(色の合成)は物理。情報ではRGBを数値で扱っていることを学ぶ。ディスプレイを拡大して示すとわかりやすい。

3.情報の技術を教えるヒント
・コンピュータは特殊な機械。その特徴を理解できれば、コンピュータやそれを利用した情報機器を理解できる。
-数学は静的で時間がない。コンピュータは時間で動く。一瞬も同じ状態がなく変化する。これが本質。
-コンピュータを内蔵した機器の状態は見かけで判断できない。従来の機械との大きな違い。
-動きを図示する方法は3つある。フローチャート、状態遷移図、シーケンス図(またはアクティビティ図)。どれもケータイや自販機など身近な例で扱える。
・いちばんよい方法はプログラミングを体験させること。ドリトルの「1時間で学ぶソフトウェアの仕組み」はおすすめ(配布資料)。Scratchなどもよい。
・バーコードリーダーやICカードリーダーが安くなった。情報システムの教材に利用できるかも。
・身近なコンピュータの多くはゲーム機やケータイ、エアコンのように機器に組み込まれている。ロボットカーの制御やセンサーなどの入出力体験も有効。

4.視野を広げるヒント
・情報教育は各国で工夫が行われている。欧州では小中高向けの情報科学コンテストを行っている。海外の先生方の知恵も参考にしたい。ぜひご参加を(昨年の参加募集
・先生方の専門性を高めることは重要。大学院という道もある。授業では学べないことを研究で学ぶ。今はITで遠隔でも学べる。私のところでは(中部や関東の)現職教員が修士や博士で学んでいる。


スライド(PDF 6MB)と配布資料(PDF 200KB)を置いておきます。

2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2012-08-19 23:58

RSS