前回、micropythonで簡易的な時計を作成しました。↓
今回は、せっかくのM5StickCの6軸センサ、これを使わないのはもったいないなという事で「傾けると衣装が脱げていや~ん♡」なやつを実装しようかと思います。
個人的にはなかなかのアイデアなのでは?と勝手に感じていたのですが、Twitterにこの構想、および仕上がり具合を上げたところ見事にスルーを食らいましたので、どうやらクソ以下の機能のようです。
しかし、クソ以下でもちゃんと6軸センサーを利用しなければ実現しないユーモアかつウィットに富んだ斬新なアイデアである事には変わり有りませんので、ここでそのクソ機能の作成方法をまとめておこうかと思います。
自己満足と言われればそれまでですが、いいんです、クソでもオリジナリティがあるのは素晴らしいのですよフハハハハハ!!
初めに
ヌードボールペンってなに?
最近はとんと見なくなりましたが、恐らく30,40代の方はご存じかと思います。小学校の時の絶対だれか一人は持ってましたよね。
祭りの景品?であったような気もしますが、そうです、ハワイのお土産みたいな、ボールペンの上部にセクシーなおねいさんが服を着てるのですが、それを逆さまにするとゆーーーーっくり服が透けていってね、そういうやつです。
当時はもちろんジャイロセンサとかそんな高度な技術はなかったので、ただ単に液体を封入しててそれを利用してた感じです。
これを、令和のこの時代に、テクノロジを駆使して復活させようとするのが、今回の一大プロジェクトなのですよ!!
はい、少し飲んでます。いや、多めに飲んでます。ですので戯言はスルー願います。
それでは、事前にセクシーおねーさんの画像をM5StickCに保存させておきます。
セクシーおねーさんの画像をM5StickCに保存
ampyで画像転送
pythonプログラムの追加、削除であればthonny IDEで科の可能ですが、ライブラリの追加や画像を入れたい場合は「ampy」等を利用してターミナルから任意のファイルを転送させる必要があります。
ampyのパッケージはコマンドプロンプトから下記コマンドでインストール出来ます。(windows)
pip install adafruit-ampy
続いて画像ファイルの転送は、下記のコマンドを入力します。もちろんM5StickCはPCとつないだ状態で、portはお使いの環境に合わせて書き換えます。putの後に、転送したい画像ファイル名を入力します。
ampy -p COM5 put gazou1.jpg
これを実行すれば、M5StickCに画像が転送されます。thonny IDE等でも確認できます。
確かM5StickCが使える画像の拡張子はjpegとあと1つ(忘れた。。)だったので、使える拡張子にしておくのと、後は画面サイズをM5StickCに合わせておく、容量も上限があったので、なるだけ小さくしておく事が肝心です。
あと画像は著作権があるので、その辺も気を付けて下さい。
では続いてプログラムに入ります。
ヌードボールペン・プログラム
python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
from m5stack import * import imu from m5ui import * from uiflow import * imu0 = imu.IMU() lcd.clear(lcd.BLACK) def buttonB_wasReleased(): while True: wait(1) if imu0.ypr[1] > 50: gazou = lcd.image(0, 0, "gazou2.jpg") elif 0 < imu0.ypr[1] < 50: gazou = lcd.image(0, 0, "gazoi1.jpg") else: lcd.clear(lcd.BLACK) break wait_ms(2) btnB.wasReleased(buttonB_wasReleased) |
初めに必要なライブラリをインポートしています。
imu0 = imu.IMU() は6軸センサのインスタンスを作成しています。
Bボタンでヌード画像を呼び出したいので、関数の中にM5StickCの傾きに応じて画像の表示を変更するようにしています。
今回、画像はフリー素材からポップなやつを2枚用意してgazou1.jpg, gazou2,jpg, として呼び出しています。
if文でロール角を指定しているので、それに合った画像が表示されます。今回の場合だと、imu0.ypr[1] > 50:はデバイスが縦方向にある場合服が脱げる、0 < imu0.ypr[1] < 50:はデバイスがナナメから水平になるまでは服を着ている、elseはそれ以外、つまり水平よりも下方向に移動したときに画像を消してループを抜ける、となっています。
動作確認
それでは、このプログラムを実行してみます。↓のように、縦になれば服が脱げます。
これがTwitterでだれにも相手にされなかったクソ機能です。。
では、次回は無線モジュールを有効活用した「オオタニサンHR速報WEBスクレイピング機能」を実装しようかと思います!