3duilabのアイコン画像
3duilab 2022年02月24日作成 (2022年02月26日更新)
製作品 製作品 閲覧数 1358
3duilab 2022年02月24日作成 (2022年02月26日更新) 製作品 製作品 閲覧数 1358

非接触センサーでLED電車制御(スピード、色、長さ)

非接触センサーでLED電車制御(スピード、色、長さ)

概要

非接触空間センサー※を使った次世代の非接触インターフェイスを研究しています。今回は線上(1次元)移動の制御実験をしました。手元を見ずに直感的にパラメータ(色、長さ)を変化させつつ、速度や方向も制御できるシステムです。
https://interactive-hand-sensor.com/root/

  • ロール        :左右の角度で速度制御
  • 空中スワイプ     :一周回る
  • ピッチ(前方トリガー):前後の角度で色を変える
  • ピッチ(後方トリガー):前後の角度で長さを変える

動画

ここに動画が表示されます

特徴

  • 操作が簡単(同じ手で連続的に操作できる)
  • 疲れにくい(細かい字を読んだり、ボタンを探す手間が要らない)
  • 2次元的(非接触のスマートフォン)ではない3次元の動きを活用している
  • 衛生的で使いやすい
  • トリガーなど一部の操作は予め知っておく必要がある

プログラム(Raspberry Pi Pico)

train_control.py

from machine import PWM from Sensor_CLED import * from state_machine import * # *************** off led8x8 ********************** def offLed8x8(): oe8 = getPinOut('OE_I8x8') fix8 = getPinOut('FIX_8x8') lst0 = [0 for _ in range(8)] oe8(True) spi.write( bytearray(0, 127) ) # col, row fix8(True) fix8(False) oe8(False) # *************************************************** def makePwm(gpio, freq, duty16): # CLED PWM pwm = PWM(gpio) pwm.freq(freq) pwm.duty_u16(duty16) def makeIndi(): # make indicator val = True def closure(dummy): nonlocal val CLed.setIndi(val) val = not val return closure def makeIntv(): # make interval for neopixel flg = False def setFlg(dummy): # set flag nonlocal flg flg = True def chkFlg(): # check flag nonlocal flg rev = flg flg = False return rev return setFlg, chkFlg tims = [] # global to fix bugs def makeTimer(funcs): # funcs: (func, Hz) global tims for fn, hz in funcs: tims.append(Timer()) tims[-1].init(freq=hz, mode=Timer.PERIODIC, callback=fn) # freq / period # ***************** main ******************** if __name__ == '__main__': try: makePwm(pwmCled_gpio, 50, 1<<11) # set pwm 1<<15 setNeoFlg, chkNeoFlag = makeIntv() funcHz = ((makeIndi(), 1),(setNeoFlg, 20)) # indicator:1Hz, neoFlag:0.7Hz makeTimer(funcHz) State_machine.init() print('******************* START ********************') CRI = 500 cled = CLed() cled.turnOn(5) Sensor.init() # *** initialize Sensor *** cled.turnOn(0) evt = Event.HAND_LEFT offLed8x8() while True: Sensor.setAd() cled.turnOn() adt = Sensor.getAd() if not State_machine.isChgSta(): # not CHANGE_HUE, CHANGE_LEN if MotionDetection.swipeLR(adt): evt = MotionDetection.getLrEvt() elif chkNeoFlag() and not MotionDetection.swipe_LR[0]: evt = MotionDetection.getEvent(adt) # print 'a' State_machine.exec(evt, adt) except KeyboardInterrupt: print("\nCtl+C") train.clr() CLed.turnOn(0)

終わりに

  • 問題解決型ではない
  • 未来を妄想し、発明したセンサーで実現している
  • SF作品を創るつもりで斬新なシステムを考える

テーマは斬新な非接触インターフェイスの仕様でマニアックな内容です。3次元インターフェイスはSF映画にもあまり登場しないのでヒントが少なく妥当性の判断が難しいです。皆様の感想をコメント頂けると嬉しいです。

未来的なセンサーを発明して斬新な開発をするSFプロトタイピングは世界でも珍しいです。世界中で電子機器開発が加速する中で必要なのは未来を妄想しオリジナルを出すことではないでしょうか。イノベーションを起こし電機産業の復活と若者、子供たちに希望を残すため一人で開発を続けています。(感染症対策も😄

3duilabのアイコン画像
赤外線フォトリフレクタを利用した次世代の非接触空間センサー「双方向ハンドセンサー」を開発しています。電子回路と組込みソフトウェアのエンジニアです。事故で指先を失いました(冬山で凍傷になって)😁 動画まとめ https://imgur.com/user/3duilab/posts  website https://interactive-hand-sensor.com/root/
ログインしてコメントを投稿する