diff --git a/content/コードとデザイン 授業設計の覚書.md b/content/コードとデザイン 授業設計の覚書.md index d87dae3f..5d03dae8 100644 --- a/content/コードとデザイン 授業設計の覚書.md +++ b/content/コードとデザイン 授業設計の覚書.md @@ -102,10 +102,31 @@ 後半は、Arduinoを使ったプログラミングを用いての電子制御 -Arduinoの選定 -Leronardoか、Arduino Uno R4 +### 雑なマウスを作る + +この実習では、ArduinoでHID(マウスやキーボード)をエミュレートし、簡易的なマウスやキーボードを実装するものである。 + +参加者は、Handmade Computerでも用いた画用紙と銅箔テープを材料に、簡易的なタッチセンサーを制作し、マウスを上下左右に動かすボタン/左右クリックボタン、あるいはキーボードの任意のキーにアサインする。 + +ここでの制作方法は、使っているArduinoの種類により2種類の方法に分かれる。 + +Arduino Leonardoか、Arduino Uno R4を使う場合、Arduino自体をUSBキーボードとして認識させられるエミュレート機能がHIDライブラリを用いることができる。この場合、銅箔テープのスイッチは、アナログ入力の各ピンを`INPUT_PULLUP`の設定にした上で、GNDとショートさせることでスイッチオンオフの判定を行う。 + +Arduino Uno R3以前のAVRベースのものを使用する場合、HIDエミュレート機能が無いため、別途pythonのPyAutoGuiライブラリを使用して制作した、シリアル通信をマウス・キーボード操作に変換するスクリプトを配布して、Arduinoからはシリアル信号を送ることで制御を行う。R3の方が構成が煩雑になるが、代わりにメリットも2つ存在する。1つ目は、ADCTouchというAVRマイコン依存の機能を使用することで、アナログ入力端子に挿した電線を静電式タッチセンサとして利用できるようになるライブラリが使用できることである。GND端子との接触を考えなくて良くなるので、より配線を簡易的に構成できる。2つ目は、Pythonでマウス操作を行うため、ウィンドウの特定の位置にマウスカーソルを移動させるような、絶対位置操作が行えることである。 + +本授業では2022年度はR3、2023年度以降はR4を用いたので以上の方法を使い分けた。 + +この実習での狙いは、普段自分たちが使っているコンピューターの入力のインターフェースもArduinoとスイッチなどこれまで作ってきたものの延長線で自作できることを実感し、インタフェースというコンピューターと身体を接続する界面が以下に制作物に影響を与えうるかについて理解することである。 + +自作マウスが完成した後は、そのマウスを使ってブラウザゲームをプレイしたり、Photoshopのような普段使用している制作ソフトを使用してお絵描きをするなどして、普段の操作環境との違いを身体で実感する。例えば上下左右キーをベースにしたマウスでは、原則45度単位での移動しかできないため、描けるグラフィックもそれに沿ったものになる。小課題として、これら制作したマウスで操作した結果(ゲームプレイ中の画面録画やPhotoshopで制作した画像など)を提出する。 + +## 簡易PONGゲームの制作 + +この実習では、ArduinoとProcessingを組み合わせて、簡易的なPongゲームを制作する。 + +この授業では、直接Arduinoのコードを書く代わりに、Firmataというシリアル通信仲介ライブラリを使用することで、Processing内に直接Arduinoの操作コードを記述する方法を学び、デスクトップアプリケーションとArduinoの組み合わせ方について学ぶ。 + +また、PONGゲームという最小限のゲームの作り方を通じて、Processingで使われているJavaという言語とArduinoで用いられるC++の違いを知りつつ、両者に共通するオブジェクト指向プログラミングのコンセプトをある程度理解することも一つの目標である。 -これらだとUSB HIDエミュレートができる -ただし、ADCTouchなど普通のライブラリで使えるものが使えなくなる \ No newline at end of file