OneHand FingerDrum をつくる(su120+Tiny2040編) (1/2)

最終更新日

前につくった su120 の4×4 FIgner Drum。

FingerDrum をつくる(su120編)

FingerDrum をつくる(su120編)

2022.02.12

RPi Pico をbread boardで接続したプロトタイプだったので、そろそろ一体型にしたい。
が、RPi Pico の本体サイズは、 51x21mm 。su120の対象マイコン Pro Microは、 330x178mm 。幅も高さも大きいので、su120のマイコン部分にPIN数どころか、大きさも入らない。

ということで、前回試したTiny2040。

Tiny2040 でLチカ

Tiny2040 でLチカ

2022.03.22

OneHand FingerDrum

ちょっとお高いモノの、keybow2040のFingerDrumは、それなりに完成度が高い。

FingerDrum をつくる(keybow2040編)

FingerDrum をつくる(keybow2040編)

2022.03.20

が、問題は演者にあって、 両手でドラムとか無理じゃん というヘタレなので、いっそ右手専用FIngerDrum をつくることにした。

左手は添えるだけでもいいけど、ロータリーエンドコーダーで、velocity(音の大きさ) を操作できると下手なりに演奏の幅が、、、と夢が広がる。

仕様

4×4 versionで、実際にユニークな音程は、11種。
なので、3×4でも、BD(バスドラム)を下2つに割り当てる贅沢仕様で、十分足りる。

PIN配置(NG)

は、Tiny2040 にPIN HEADを配置し、su120と繋ぐ。
/ は、PINをsu120と非接触にする。はじめからTiny2040にPINをつけないか、ペンチで断ち切る。


Tiny2040を差すとこんな感じ。

ROW 3 は、Tiny2040上でGNDにあたるので、そのままでは使えない 。
COL E と繋いで GP7 で制御する。

キースキャンは、完璧だ!と思ったが、なぜかロータリーエンコーダー動きが不安定。うーん。

ちゃんと認識することもあるが、ダメなときもある。違う方向に回転させても、同じ向きの回転しか認識しない。

ロータリーエンコーダーの test program

どうやら、ロータリーエンコーダーの状態検知(F4/F5)に、AnalogのGP29/GP28を利用しているのが問題らしいと判断。

テスト用の回路を用意し、以下のprogram で検知(INPUT)PINを変えながらテストした。

結果、AnalogのA3-0(GP29-26) は、Digital Inputで利用しても、ON/OFFの検知が遅く、ロータリーエンコードの変化に追いついていけないようだ。

過去に調べたのはこの記事。

Mono Netflix専用キーボード を Digistump で作る (その2)

Mono Netflix専用キーボード を Digistump で作る (その2)

2021.08.11

import board
import time
import digitalio

# LED
led_pin = board.LED_G
led = digitalio.DigitalInOut(led_pin)
led.direction = digitalio.Direction.OUTPUT
led.value = True

# ENCODER
# a = digitalio.DigitalInOut(board.GP0
a = digitalio.DigitalInOut(board.GP29)
a.switch_to_input(pull=digitalio.Pull.UP)

# b = digitalio.DigitalInOut(board.GP1)
b = digitalio.DigitalInOut(board.GP28)
b.switch_to_input(pull=digitalio.Pull.UP)

pre_a = True
pre_b = True

while True:

    aval = a.value
    bval = b.value
    if pre_a != aval or pre_b != bval:
        pre_a = aval
        pre_b = bval
        print("{}/{}".format(aval, bval))
        led.value = False
    else:
        led.value = True

実際には、Digital である GP0, GP1 なら以下のようにちゃんと検知できるのが、
Analog の G29, GP28 ではフラフラ。検知しなかったり、不定だったり。
うーん、AnalogをDigital Input に利用しちゃだめらしい。

  • 右回転

    True/False
    False/False
    False/True
    True/True
  • 左回転

    False/True
    False/False
    True/False
    True/True

でも、ロータリーエンコーダーを使わなければ、これでもいいが、、、

後半に続く。

シェアする