今回は「アルコールセンサー」を紹介します。使用するには専用基盤があるので、こちらをはんだづけします。一応、回路図(とりあえずこれで動いた。間違ってるかも?参照)。図中の9Vは外部電源です。アルコールセンサーにはヒーターがついており、そこで反応しやすくしていると思われます。研究室にアダプターがあるのでそれを使ってください。それじゃかんぱ〜いセンサーに向かってはーっと息をかけると反応した!日本酒はかなり反応がいい(飲み過ぎ?)お酒だけじゃなくて、アルコール消毒液なども反応します。発見器として使うならキャリブレーションが必要です。今回は実験なので、精度をよくするには改良が必要かもです。ロータリーエンコーダーの原理はこちらのページを参考にしました。・はじめる電子回路ーロータリーエンコーダを使う・TekuRobo工作室-113.ロータリーエンコーダを使うロータリーエンコーダーには軸が回転すると2つの出力信号を出しています。この2つの出力信号、ちょっとずれて信号を出します。両方1(HIGH)になる前の信号を見ると、回転方向によってA相とB相にHIGH、LOWの違いがでています。これを利用してどちらに回転しているか判別できます。前回のArduinoのプログラムでの回転方向の判別およびデータ送信部分はここです。}A相、B相どちらもHIGHになった時だけ、Processingにデータを送っています。))、つまり回転方向の値だけを送っているということになります。続いてProcessing側です。こちらはArduinoにStandardFirmataを入れた時と、少し違っています。「ArduinoがSerialに変わってる」と思う方もおわれると思いますが、基本的にはそんなに違いはありません。いうものだと思ってくれてもいいし、気になる方は直接聞いてください。説明しておくのはupdate_arduino()の中です。}}Arduinoが使える状態(myPort.available()>0)になったら、値を読み込んでます。(val=myPort.read();)続いてこの部分。mae=val;「いったい何やってるんだ...」と思うかもしれませんが、一応「チャタリング防止」です。なにそれと思うなら、調べてみましょう。完結に言えば誤作動防止。同じ値が何回か来たら「やってみましょう、見せましょう」の状態になるだけです。}四角が右か左か動くのを指定するところです。実はArduinoから送った値は「ASCII文字」として送られています。ここ(外部)に対応表が載っているので確認しておいてください。ワンステップとしてArduinoの日本語リファレンス(外部)にSerial.printの基数(進数とか)指定の方法が載っているので、参考にしてください。ちなみにBYTEはver1.0から非対応のご様子。複雑に見えますが、理解すれば単純です。わからないことがあれば気軽に聞いてください。黒い部分が軸になってます。ここをひねると、クリクリッと回ります。3本足のいずれかがGNDと接続します。ゼミにある秋月のロータリーエンコーダーは図の右端がGNDです。以下の図のように接続します。Arduino側のプログラムはStandardFirmataではありません。以下のプログラムをUploadしてください。//val:1,2が回転を表す。baudに合わせてください。これでロータリーエンコーダーが使える状態になりました。それでは次にProcessingにそのデータを送ります。こちらも今まで習ったプログラムとは少し違います。}}ロータリーエンコーダーを回すと、四角が左右に動きます。今まではArduinoのライブラリを使っていましたが、こちらはシリアル通信用のライブラリだけを使用しています。そのため、若干見慣れない関数などが使われています。Processingで動かす説明はここまでとします。「動けばいいや」っていう人はこれを改造していってください。「なんでこうなってるの?」って思う人は詳細な説明を後日あげます。→こちらわからなければ聞いてください。