こんにちは. 突然ですが,レーザーポインタって魅力的ですよね.子供のころ,中国の市場で売られていた,5元のレーザーポインタを使ってよく遊んでいました.中学生になってからも,ヤンキー共が人の目に向けて遊んでいた(危険)のを思い出します.
遊びにも使われるレーザーポインタですが,メインの用途はパワーポイントなどの発表の際に,聴衆の注目を向けさせるためのものですよね.
しかしポイントをするために,発表者がスクリーンの方を夢中で見続けるのでは,発表の見栄えが良くありません.
それを解決するために,加速度とジャイロセンサを用いてポイントするレーザーポインタが存在しています. こういうのです.
ただ,これを金持ちの教授が持っていて羨ましかったのだ...
ということで,自作しました.
開発環境
- Arduino IDE
- BLEマウスのライブラリ
- 自作基板
- レーザー
- 姿勢センサ:BMX055
- LCD1306だったかな
- X-Mouse Button Control
機能
普通のレーザーポインタと,ジャイロセンサによるポインタの2つの機能を持たせてみました.
ジャイロセンサによるポインタの機能は,パワポの標準機能を応用しました.発表中は,マウスの左クリックで「進む」,右クリックで「戻る」という機能があります.また, 「Ctrl + L」 を押すことで,マウスカーソルがレーザーポインタの形に変わります(この間,ページを進めることができなくなる).
仕様?
上の機能を実現するために,次のような内容を実装しました.このとき,拾ったソースコードでは,BTマウスとBTキーボードの機能を同時に動作させられなかったため(直し方もわからんあ),BTマウスのライブラリだけで実装しました.
- BTマウスとしてPCに接続(移動方向,左右,Button4の押下を送信)
- ジャイロセンサの内容を基に,マウスカーソルの移動距離を算出
- マウスのキーバインド?を変更し,マウスのButton4押下時にCTRL + Lを入力
- あるボタンを押したタイミングからの経過時間(発表時間)をディスプレイに表示
という実装内容で,こんな感じに使用できます ↓
おわりに
半年前ぐらいにぱっと1日で作ったものなので,クオリティは低いですが,このような作品がすぐに作れるようになってきたようで嬉しく思います.
でもやっぱり,ディスプレイがBTの割り込みのせいなのか大荒れしてしまうことや,マウスカーソルの操作感が最悪な点を考えると,ちゃんとクオリティを高めていくような開発者になりたいものですね.あと,発表時間を振動で知らせてくれるような機能も付けたいなぁ.
とりあえずは放置ですが.
本日の机上の空論:逆求人のやつweb系の人しか参加する意味ない