今日は体育祭
昨日、雨で延期になった体育祭。朝一番の雨で開催が心配でしたが、 4年の皆さんは時間をかけて準備をした成果の発表でもあり、 無事に体育祭開催となり、一安心でした。
様々な競技と写真を撮っていまーす。 デコレと応援は動画もきちんと記録するぞ!!
デコレ
デコレも頑張っていたけど、残念ながら優秀賞などはとれませんでしたね。 審査員的には、高専だし『技術系ネタ』だと自然と評価が高くなる。 電子情報的には今年は「アバター」で「3D視差技術の違い」であれば、 専門ネタになって、評価が高かったと思いました。
応援演技
電子ブロック使ってみた
創造工学のネタで学生さんにシミュレータを作ってみようと提案してみたし、 せっかく買ったもんだし、一番簡単そうな回路図で動かしてみた。 『No.013:オーディオジェネレータ』で、アンテナ同調コイルを低周波トランスの代用とした、 RLC発信回路。
回路実験とシミュレータ作りの視点から
実際に動かしてみた感想は、バリコン(可変コンデンサ)を動かせば、 かなり広い周波数変化をするかと思ったけど、大きく周波数変化する部分もあるけど、 たいした周波数変化はしなかった。 シミュレータを作るとなると、意外に多用されている、この同調コイルの特性再現も重要な課題になるはず。
もう一つの感想は、回路図をブロックに置き換える際には、指導書の回路を配線する分には 簡単なんだけど、ちょっと特性を変化させるために抵抗追加と思っても、 ブロック配置も変わる。それにブロックの種類も限られているため、 T字型に配線されている抵抗ブロックの直通部分を配線に使うといった、 「電子ブロックの配線」のためのノウハウも重要となる。 このため、プロコン応募を目標に作るのであれば、 回路図を入力したら『EX-150』の部品の中から無理矢理ブロック配置を考えてくれる ツールも欲しいなぁ。
シミュレータを作るのなら
実際にシミュレータを作るという視点で、フリーの回路図エディタ・シミュレータの利便性を確認。 まず、Debian/Linux に含まれているツールということで確認すると、 GPL EDA 電子回路設計ソフトウェア回路図エディタ(geda-gschem)であれば、 SPICE用ネットリスト生成は簡単みたい(「gschemで回路図作成」)。 ひとまず、初めてだけど gschem をLinux上で動かしてみた。 初めてだと、該当部品をライブラリから探すだけでも一苦労ということがよく分かった。 慣れれば簡単なんだろうけど…
ちなみに、 gschemの吐き出したネットリストも見てみた。 配置された部品の座標間を、無損失伝送路(T)が大量に配置されている。 (Wikipediaの説明に無い文法も含まれてるなぁ…".END"行も出力されていないし、gschem専用文法だな…) EX-150専用エディタを作れば、回路図上の部品配置なんて関係ないので、 シンプルなネットリストを吐くことはできるだろう。
- gschemのネットリストから、SPICE用のネットリスト出力するには、gnetlist が必要みたい。
- 回路シミュレータは、Debian であれば、"Non-free"ではあるけどngspiceが、パッケージに含まれているみたい。
(( ひとまずDebianでこの辺のネタを試すのに必要なインストール作業 )) # aptitude install geda geda-gschem geda-gnetlist geda-symbols geda-utils ngspice gwave
創造工学演習・アイディア草稿
今日は、具体的なアイデアを検討することを目標に、 各グループ毎に情報交換1コマ(50分)の後、演習室にて関連情報調査2コマ(100分)の後、 実際のアイデア草稿提出資料作成の1コマ(50分)にて行った。 早くアイデアの出ている学生さんについては、草稿原稿をチェックなども行った。
アイデアといっても、初めての検討では「既存技術・アイデア」なネタがほとんどになってしまう。 このためプロコン審査員の視点でみれば「面白くない」で終わってしまう。 しかしながら、創造工学は実際に作成することも目標であり、既存だから「ボツ」アイデアと 言ってしまうだけでは、不十分。 このため、『演習指導者』の視点では、「新しいアイデア」・「技術力で作れるのはこのレベル」 とのジレンマに悩まされる。
ひとまず「プロコン応募資料作成」までは「実現可能性は別にした新しいアイデアを検討」という目標とし、 「創造工学後半」では「既存ネタでも本当に動くものを作ってみよう」という目標を示す。
レトロ系アイデア案
学生さんのアイデアといっても、なかなか新しいものは出にくいし、 アイデアの一例ということで、レトロ系のネタをいくつか示した。
案1:『Arduinoで、ベクタスキャン系ゲーム&ネットワーク対戦』
一昨年、H8 とXYモードのオシロスコープを使って、Pongを作ってみないか?との提案をして、 実際にチャレンジしてもらっている。(高専プロコンでは予選通過NG)。 現在では、Arduino を使えば同じようなものは、C言語ベースでもう少し簡単に作れそうだし、 Ethernetシールドを使って、ネットワーク対戦もできるレトロゲーム復刻版を提案してみた。 オシロスコープのXYモードのベクタースキャン表示ということで、 Pongに留まらず、StarWarsなんか作れたらもっと面白いんじゃ?と目的を膨らませてみた。
案2:『電子ブロックEX-150シミュレータ with SPICE』
先日ネタに掲載しているが、学研の大人の科学で復刻版が売られている電子ブロックEX-150の シミュレータを作ってみようというネタ。
# よく見れば、表示方式はベクタスキャン型ではないんだけどね…
# それにこの機能すべてはArduinoじゃ重すぎだろうな。
# TIEファイターもただのH表示に簡略化するしかないか…
変数の型と範囲・N進数
授業を進めるにあたって、昨年の講義録をみながら進度確認や話し忘れを確認するけど、 この数回の授業は、1コマまるっきり昨年と同じペース&内容というのが続いている。 講義録といっても、昨年の資料にきちんと書いてあるし、ペースもまるっきり同じだったり。 ということで、今日の講義についても、昨年度同時期資料へのリンクとする。 (手抜きじゃないぞ!!)
2010年4月25日(第161回)
- メールテーマ:ブラックサンダーにあうもの、教えてください。
- 英語の囃子 第32回 吉田三先生、電子情報5年丸山さん
英語で浦島太郎を読んでみよう
eng100425.mp3
- 山本君がブラックサンダーにあうものを試しました!
ごはん、わさび、豆腐、抹茶アイス
机の上には、ブラックサンダーと各種食べ物が・・・
創造工学演習・導入実験・数値計算
創造工学にてH8にセンサーなどを接続して信号処理をするなどのプログラムを作る場合、 ノイズ除去のための移動平均や、安定を判定するための微分、加速度センサーから位置を 求めるための積分という考え方は重要となってくる。
そこで、適当な信号の列に対して、上記の信号処理を加えるプログラムを作成せよ。 ただし入力値は、テキストファイルに1行1件で記録されているものとする。 参考資料として、実際の計算を表計算ソフトで行った結果を、示す。
学力到達度試験で優秀者2名
今年最初に3年を対象として行われた、全国高専学力到達度試験にて、 2名の学生が優秀な成績であったとのことで、学内表賞の 賞状と副賞(図書券)を配りました。優秀者は以下の2名。 3年末での試験といいながら学生さんにしてみれば、 メリットが少なくきちんと準備して受験していない人も多い中、 日頃の成果をきちんと出してくれたと思います。
- 4EI本山くん(数学・物理の2科目)
- 4EIツェンデくん(数学)
ループ型処理の時間見積もり
先週の単純サーチの処理時間に引き続き、 2分探索法の処理時間と、最大選択法の処理時間の式を示す。 この結果を踏まえ、処理時間の見積もりでは、Nが巨大化したときの最大項と、 その項から比例乗数を抜いた式を、オーダ記法と言うことを説明する。
今日の授業だけど、4年になった変化なのか、いい意味でのツッコミなどがぽんぽんと 出てきて、説明のリズム的にもすごく話しやすかった。 積極的に質問も出てくるし、どこが変わったんだろうか…. 楽しく話ができて、気持ちいい授業でした!!
関数ポインタやプロセス起動
今日は、専攻科の特別研究中間発表のある日で、短縮授業。 時間短いしテキパキやろうと授業に乗り込んだけど、発表準備があるためか、 電子情報の学生さん2人のみ。 このまま授業を進めると、来週復帰してくる学生さんがワケワカメになるので、 講義内容を変更する。
通常、電子情報以外の学科の人には、C言語の基本が知らなかったりするので、 話を省略している、関数ポインタについて紹介する。
関数ポインタ
オブジェクト指向が多用されるGUIなプログラミングでは、マウスが押されたときに動かす処理… といったように、GUIライブラリに自作処理を渡すコールバック関数が多用される。 また、後々のオブジェクト指向の講義で話す、仮想関数の実装でも関数ポインタが使われる。 典型的な使い方は、以下のとおり。
int add( int x , int y ) { return x+y ; } int mul( int x , int y ) { return x*y ; } void main() { int (*f)( int , int ) ; // fは関数へのポインタ。 // (2つのint引数を持ち、intを返す関数) f = add ; printf( "%d" , (*f)( 2 , 3 ) ) ; // 2+3が表示 f = mul ; printf( "%d" , (*f)( 2 , 3 ) ) ; // 2*3が表示
プロセス起動
説明の中で、お二人さんから特別研究に関係するC言語のテクニックとして、質問がでたので 回答する。
(( main は、どう書くのが正しいか? )) int main( int argc , char* argv[] ) { : return 0 ; } // argcはコマンドライン引数の数(プロセス名を含む) // argvはコマンドライン引数の実体 // mainのreturn値は、プロセスの実行結果 // 0:正常終了 // それ以外:異常終了
(( 自分で書いた処理から、gnuplot を起動したい...)) 表示させる処理を書いたscriptを作って、 system( "gnuplot スクリプト" ) ; みたいに呼び出せばいい。ただし、gnuplot の処理が終わるまで、 呼び出し側は処理ができない。呼び出し側で凝った処理をしたい ならば、fork() + exec() で gnuplot を呼び出し、必要に応じて gnuplot とパイプで処理を渡すなどのテクニックを使うべきかも。
Moodleサーバへのユーザ登録
新しい年度ということで、創造教育開発センターで管理しているMoodleサーバ (大学連携f-leccs.jpの認証サーバ兼務)に、新一年生のデータを登録する。 と言いながらも、LDAPへの認証登録・Moodleサーバへのユーザ登録・f-leccs.jpへのユーザ登録 の3段階の登録をしないといけない。
情報処理センターからもらったデータを、CSV形式保存、 自作PerlスクリプトでLDAP用、Moodle用のデータを生成させる。 簡単な処理といいたいけど、 元データの姓名に旧字体が含まれコード変換中に文字化けするものがポロポロでてくるので、 その修正もあって、何かと面倒。 さらに、工学基礎コースで2年進級時に転科する学生さんがチラホラいるので、 その修正なども必要だったりする。
Perlスクリプトで、漢字氏名が旧字体で文字化けするのは、1データごとにコード判定するような 書き方をしているからかな… 元データの文字コードが分かっていれば、 誤認識しなくなるかな…