自作キーボードのOLEDに現在のレイヤーと押した回数を表示する
頒布を計画しているキーボードに、OLEDを搭載できるようにした。
せっかくなので、ディスプレイを使った機能を入れたいと思い、
- 現在のレイヤーを表示する機能
- キーを押した回数を表示する機能
を実装してみた。
なお、私はC言語とQMKにさほど詳しくはないので、アドバイスを頂けば幸いです。
手順
keymap.c
に以下のコードを書く。
1. <stdio.h>
をincludeする
2. キーを押した時にカウンターを+1する実装を追加する
既に process_record_user
を使用している場合は、 if (record->event.pressed) {
の区切りを既存のコードに追加する。
3. oled_task_user
に処理を追加する
こちらもoled_task_user
を既に使用している場合は、実装部分を抜き出して追加する。
ソースコード
記事最初のOLEDの表示の実装はこちら。
自作キーボードにおけるジャンパ
最近、見様見真似でPCBを設計しております。
次はロータリーエンコーダー搭載でリバーシブルでLEDで光って分割できるやつ作ろうかなと。100mm x 100mm以内で #自作キーボード pic.twitter.com/ES0b0ZViQo
— takashicompany (@takashicompany) June 6, 2021
ついでにOLEDも載せられるようにしようと思ったところ、OLEDの向きをリバーシブル対応するにはどうしたらいいか?と考えていたら以下の結論に。
自作キーボードでリバーシブルなPCBにOLEDを指せるようにしたいんだけど、PCBの裏返すとOLEDの表面が隠れちゃうからどーしたものかってことで、2枚目みたいにはんだで並び順変えられるようにすればイケる?とか思ったんですけど、もしかしてこれがジャンパってやつなのか!? pic.twitter.com/0e7ub9Eb6Y
— takashicompany (@takashicompany) June 8, 2021
なるほど。
ジャンパを使うと、はんだ付けで使い分けができるのか。
OLED以外にもいろいろ使えそう。
キットを組み立てているときにもジャンパは見かけていたし、はんだ付けもしていたけど、こういう意味があったのか!と合点が行きました。
これは便利ですね。
回路図を書き直す
というわけで、回路図をこんな感じにしてみました。ジャンプの回路これであってるのか分からんけどw https://t.co/KlgzRHoWzD pic.twitter.com/hoWaHDRIkX
— takashicompany (@takashicompany) June 8, 2021
とりあえずそれっぽくはしたけど、うまくいくかは後でのお楽しみ。
「自作キーボードを始めたい」と思っているあなたへ
私が自作キーボードを始めて、もう少しで半年になります。
始める前は興味こそあったものの、電子工作をまったくやったことがなかった自分が作れるのか続くのか不安でなかなか手が伸びなかったのが思い出されます。
今では、自作キーボードのキットや部品を買い漁り、週末は組み立てやはんだ付けに勤しんでいます。
さらにのめり込む前に、初心を思い返し、葛藤や実際にやってみた体験を書くことで、半年前の私のような興味を持っているけど踏み出せない…といった方の後押しができれば幸いです。
私のきっかけ
仕事で使っているキーボード(FILCO Majestouch MINILA Air)が古くなってきたこともあり、 新調するためにいろいろ調べているうちに、自作キーボードという分野に出会ったのが始まりです。
結局はHHKB(Professional HYBRID Type-S)を購入したのですが、 自宅で使うキーボードも欲しくなってしまい、さらに探しているうちに自作キーボードへの興味が高まっていきました。
HHKB買ってからネットでキーボード見る癖がついてしまって、昨日に至っては自作キーボード調べてた
— takashicompany (@takashicompany) October 25, 2020
「好きなキースイッチを選んで、好みのタイピング感で文字が打てたら、さぞ楽しいだろう。」
思いも馳せつつも、電子工作の経験がまったくなく、工具も一切持っていなかったので、自分には関係ない世界だと思っていました。
しかし、日に日に思いは強くなり、自作キーボードの検索に費やす時間が日々増えつつありました。
自作キーボードやってみるぞ!とか思ったけど、もろもろ揃えようとすると結構お金かかって、もう一台キーボード買えちゃうくらいになりそう
— takashicompany (@takashicompany) December 7, 2020
「未経験の自分が完成させられるのか?工具とキットを買うお金があったら、既製品でもだいぶ良いものが買えるぞ」
そんなことを葛藤を抱きながら悩んだ末に、
- このまま悶々とするぐらいなら思い切って試してみよう。それで自分にあわなければ諦めがつく
- キットと部品、工具代(あわせて25000円ぐらい)は確かに安くはないが、人生で手に入れるお金の総額からしたら微々たるもの
と思い切って、工具一式とキットの購入を決断しました。
始めて買ったErgo42のマニュアルがとても丁寧だったこともあり、無事に完成させることができ、今ではどっぷりと浸かることとなりました笑
未経験者から見た自作キーボード制作
電子工作未経験だった私から見た、電子工作(自作キーボード)は
- 高度な専門知識が要求される
- 精密な作業が要求される
- 失敗するとビリビリする
というイメージでしたが、実際にやってみた所感としては
- 組み立ての手順書をしっかり読んだ上で取り組めば、素人でも完成する
- はんだで部品がくっついてさえすれば、意外と動いてくれる
- ビリビリしない。多分そこまで電気が流れていない気がする
といったような感じで、予想よりもはるかに手軽に楽しめることに驚きました。
自作キーボードを始める際の心がけ
以下は、半年間の経験を踏まえて、初めて自作キーボードを作る際に心がけたいポイントを簡潔にまとめました。
結論から言いますと、工具をちゃんとしたものを買って、手順書をしっかり読んで進めれば完成できます。
工具はケチらない
初心者なので、良い道具を揃えても使いこなせないのでは? と私が始める際に思ったりもしましたが、 初心者こそ良い道具を使ったほうが恩恵を受けやすいという別ジャンルでの経験上、 工具…特にはんだごて & こて台は先人達がオススメするものを買いました。
半年経ちましたが、↑は買って良かったと心から思います。
- 電源を入れてすぐに温度が上がる
- 温度調節が簡単にできる & 分かりやすい
- こて台が安定しているのではんだ付けをしていないときも安心感がある
といったところがメリットでしょうか。
道具の扱いに悩まされず、作業に集中できるということがとてもありがたい。
併せて、こて先も購入しました。
はんだづけをするためには、はんだも必要です。 様々な種類がありますが、ここもオススメされているものを購入しました。
goot(グット) 鉛入りはんだ Φ0.8mm スズ60%/鉛40% 100gリール巻 ヤニ入り SE-06008
- メディア: Tools & Hardware
ニッパーやドライバーも必須ですが、百均のものでも作業はできるかなと思うので、 こちらは本格的に取り組む際に良いものを買うと良いかなと思います。
加えてオススメしたいのは、はんだ吸い取り線。 これがあればはんだ付けを失敗してもやり直しができます。
goot(グット) はんだ吸取り線 3mm幅 1.5m巻き CP-3015 日本製
- メディア: Tools & Hardware
はんだごての温度を420度に設定し、はんだを取りたい場所にはんだ吸い取り線を乗せて、その上からはんだごてで熱すると、吸い取れます。 吸い取り線が熱されるので火傷にはご注意。
組み立ての手順書は何度も読む
組み立ての手順書(ビルドログ)は組み立てる前に一度目を通しましょう。
頭の中で実際の作業をイメージできるようになるまで何度も読むのが理想です。
分からないところを見つけたら、検索するなりして手順などを明確にしておきましょう。
組み立てる際も、都度確認しながら進めることで失敗をかなり抑えられるようになります。
はんだは温度の高いところに流れる
この特性を知っているだけでも、はんだ付けで困るケースが少なくなると思います。
私はこれを知ったことで少し気が楽になりました笑
はんだ吸い取り線を使う際も、この特性を知った上で作業をするとうまくいきます。
自作キーボードを始める上でオススメのキット
以下は自作キーボード未経験の方が始める際にオススメのキットです。
Ergo42 (Single Edition)
購入はこちら
入門的な位置づけながらも、自作キーボードの工程をフルに体験できるため、Ergo42が組めれば大抵の自作キーボードは組めると言っても良いでしょう。
キースイッチとキーキャップを別で揃える必要があるので、お忘れなく。
自作キーボード完成~。片手分しかないので、用途不明だけどw pic.twitter.com/MrTD07NUZE
— takashicompany (@takashicompany) January 2, 2021
Meishi2
購入はこちら
- 3000円程度で買えるお手頃さ
- キースイッチ・キーキャップ付きのセットなら、材料がまるっと手に入るのですぐに始められる
- ビルドログが初心者向けに分かりやすく書かれている biacco42.hatenablog.com
とにかく手軽に始めたい人向けのキット。
自作キーボードに入門する際の障壁の一つである、はんだ付けを学ぶのにオススメです。
#自作キーボード の練習ということで #meishi2 作りました。正月にErgo42(片方)作っててたので、今回はPro Microのもげ防止とスプリングピンヘッダのはんだ付け、QMK Firmwareでの書き込みにトライ〜。Windowsで環境作ろうと意気込んでたけど、msmy2の環境作りがどうも上手くいかず、結局Macでやった pic.twitter.com/msMQu8hsHa
— takashicompany (@takashicompany) January 17, 2021
Gherkin
購入はこちら
- シンプルな構造と手軽な値段ながらも、長く楽しめるキット
- 工程自体もシンプル
- 既製品にはないコンパクトさとキー配置を楽しめる
- キー数が少ない分、配置やレイヤーを考えて使いこなすところも含めて楽しめる
自作キーボードを始める人には一度は触って欲しいのが 、このGherkin。
そのサイズ感と配列は「自作キーボードならでは」を詰め込んだ一品ではないかなと。
キー数が少ないというところがネックにも見えますが、文字を打つだけなら一週間ぐらいで慣れます。
meishi2やErgo42に比べると、組み立ての説明書がやや専門的ですが、工程自体はErgo42とほぼ同じです。
今週は #Gherkin を作りました。USBが左側に欲しかったので、キーマップを逆さに作らないとならなくて大変w キー数が少ないので、実用するのは難しそうだけど、まー使いこなすところも含めて遊びかなーと。変な癖がつかないといいけど…笑 #自作キーボード pic.twitter.com/QbPynMs3OT
— takashicompany (@takashicompany) January 24, 2021
文字を打つのが楽しくなる
自作キーボードを作る理由や楽しみ方は様々ですが
共通しているのは「文字を打つのが楽しくなる」ことだと私は思います。
私は仕事柄キーボードを多用するのですが、手段だったタイピングに楽しさを見出せるようになり、仕事の楽しみ方が増えました。
この記事を読んで、自作キーボードを楽しむ人が増えれば幸いです。
この記事はMinidoxで書きました。
Minidox組み立てました。Pro MicroをPCBの裏につけるタイプなので、どーしても高さが出てしまう…10mmのスペーサーで組み立ててます。それ以外のところは気に入ってるんだけどね。10キーの配列なんかは個人的にはサイコー! pic.twitter.com/kPVJknHqM0
— takashicompany (@takashicompany) May 2, 2021
Git subtreeを楽に使えるシェルスクリプトを作った
以前書いたUnityでGit subtreeを導入する話の続き。
--prefix
でパスをしてるのが面倒くさくなったのでシェルスクリプトを作った。
repo
、remote
、branch
、path
を書き換えて使えばOK。
コマンドも下記の3つのみ
$ sh subtree-template.sh init # 初期化 $ sh subtree-template.sh pull # 変更を取り込む $ sh subtree-template.sh push # 変更を送信する
プレイヤーの見ている画面とは別視点からのリプレイ動画をお手軽に作れないか頑張った話【Unity Advent Calendar 2017】
この記事はUnity Advent Calendar 2017 2日目の記事です。
ゲームを作っていると、ハイライトやリプレイをリザルトで出したいなーと思うことが常々あるかと思います。
最近だとPS4やNintendo Switchでプレーの録画をSNSにアップロードできたりしますよね。
UnityだとEveryplay SDKで録画機能を実装できます。
ただ、上記の録画機能はプレイヤーの見ている画面を録画していますが、
プレイヤーの見ている画面とは別視点からのリプレイ動画を作れないかな
と思い、今回いろいろ試してみました。
イメージはこんな感じ(ちょっと違うかな?)
作り方
簡単に言うと
- ① カメラを2台用意する
- プレイヤーの見る画面を描画するカメラ
- リプレイの録画に使うカメラ
- ② 録画用のカメラにRenderTextureを設定する
- ③ RenderTextureの描画結果を動画ファイルに書き込む
という感じです。
(プレイヤー画面用のカメラと録画用のカメラの図)
①と②はUnityですぐにできますが、③が考えどころです。
今回はOpenCV for UnityのVideoWriterという機能を使って動画ファイルを生成したいと思います。
実装
実装の細かい話
- Unity Editor(Mac)と、iOSで動作を確認
- 上述した③ RenderTextureの描画結果を動画ファイルに書き込むは
OpenCVForUnity.Utils.textureToMat(Texture texture, Mat mat)
とOpenCVForUnity.VideoWriter.write(Mat image)
で実現したOpenCVForUnity.Utils.textureToMat
で録画カメラのRenderTexture
をMat
に変換。- ただ、
textureToMat(Texture texture, Mat mat)
がiOSでしか動作しない(([作者も確認済みとのこと] (https://forum.unity.com/threads/released-opencv-for-unity.277080/page-28#post-3261290)))ので、他の環境ではRenderTexture
を一旦Texture2D
に変換した上でMat
に変換している RenderTexture
をTexture2D
に変換する場合は内部でTexture2D.ReadPixels
を呼んでいるので処理に時間を要する
OpenCVForUnity.VideoWriter.write
で動画ファイルに書き込み- Androidも動画の拡張子とfourccの選択次第では動きそう(拡張子を
.avi
、fourccを`'M', 'J', 'P', 'G' (Motion JPEG)にしたら録画はできた。しかしVideoPlayerが再生に対応していなかったので今回のサンプルコードから外した) - iPhone SEで↑の動画と同じアプリを動かしたが処理落ちはそこまでなかった。解像度によっては処理落ちを招くケースがありそうなので、その辺は要調整
VideoWriter.write
を呼んでいるところは別スレッドに逃してもいいかも- iPad mini(4th gen)だと30FPSが15FPSまで下がった。おそらくだが
RenderTexture
の解像度を下げれば改善すると思う
- OpenCVのモバイル用のプラグインが結構なサイズ(.frameworkとかだと500MB超えてたり)なので、ビルド時に不要な機能を消したりする必要はありそう
おわりに
今回はOpenCVForUnity(OpenCV)を使って動画の生成を実装しました。
改善すべきポイントは諸々ありますが、手早く作れるのが良いかなと。
ゲーム側でリプレイ機能を自前で作るとなると、設計時点でしっかりやる必要がありますしね😃
やはり理想を言うならネイティブプラグインでしっかり作るのがベストですね。
外出先でiPadでキーボード打つのに良さそう!
タイムラインアニメーションで同じ階層に同じ名前のGameObjectがある時の話
- 警告が出る
- ヒエラルキービューで上のものにアニメーションが適用される