goo blog サービス終了のお知らせ 

酒と薔薇の日々(その2)

好きなことだけ求めて生きるアスペ気味のINTJ人

ゲーム用スイッチを2個作ってみた

2024年09月08日 20時49分36秒 | マイコン(ESP32・Arduino等)
■■■まずは卓上型の改造から■■■
5年ぐらい前に車泊室内用に買ったが使い勝手悪く投げていたダイソーのLEDライト



LEDは白色だったので赤色に換装
4月にAliExで1個25円だったLEDが現在は41年位に爆上がり!
個人的には1個数円でもOKに感じるのはアナクロニズムか。
素人なんで回路が全くわからん。
micro:bitからLEDをの電源を引っ張って光らせてそれを検知できる・・みたいな感じで何となく作り出したが・・・???に陥る。



ググった際にフォトカプラを使った別件改造記事があったのを思い出して、カプラを使ってみることにした。
10年前に秋付きで買ってた8個で100円



1回目の試作、配線誤りで元からあったほっそいケーブルから煙が・・・
多分カプラーもメゲたでしょうね、確認も面倒なので速攻廃棄



LED3個が接地する間にカプラーを割り込ませる。



今度はちゃんと動いたっぽい。
ちなみに元からあったLED3個の制限抵抗は12Ωでした。(そのまま使用)



micro:bit側のプログラム作成
Pin1をプルアップして、Pin1とGNDに作成した結線、Pin2がLOWになったら押されたと判断する。これはちゃんと動いた。

が、Aボタン代わりに使おうとPin5につなぐと全然ダメ
極性誤りなのかと思ったがそうでもない。
単なるスイッチをPin5とGNDに繋いだのであればちゃんと動作する。
ということは、カプラを使ったこのスイッチではAボタンの代わりは出来ないということになる。
残念私レベルではお手上げです。
それかPin割り込みでプログラムを書き換える?(micro:bitにPin割り込みな無さそうです)

■■■ 大型飛び降りフットスイッチを作る ■■■



フレンドパークのゲームを秋プラでやることにして昨日はずっと調査・プログラム作成に没頭していた。
「NeverWipeOut」をやろうかと思ってたのだが「フラッシュザウルス」を発見
自分でやってみてわかったがゲームとしては非常に楽しいのだ。
しかもLEDテープにぴったりな内容。

本日は、お中元の箱を使って大型のスイッチを作ってみる。


ちょうど人一人が飛び乗れるサイズ


この下側をLEDをテープを通すのでもう少し嵩上げが要るな。


開いた様子
きれいにアルミ箔を貼るのは難しい。


2枚の端子が常時接触しないようにクッション材を挟んでおきます。
ネットでは100均で隙間テープを買えとあったが手持ちで代用
挟みで切るがなかなか均一には行きませぬ。
ま、どうせ踏んだり蹴ったりされる運命なのでテキトーでOK



アルミ箔と電線ははんだ付けできそうにないのでテープでベッタリ固定
できるだけ銅線が多いケーブルを選んで広げて張ってあります。
測定したらこのスイッチは16Ωでした。
まあ、接触抵抗ってこんなもんでしょうね。

実験開始
Aボタンと並列にPin5・GNDに繋ぐ
はぁ???
軽く足でポンと押せばちゃんと検知して停止する。
が、ドガッと乗ってしまうと全然検知されない。
全然理由がわからん。

理由がわかった。
盤上のAボタンも同じだった。手を離さなければ検知されなかったのだ。
フォトカプラ版も同じこと。スイッチがONになりっぱになる種類だからだ。
micro:bitの「Aが押されたとき」ってのは実は
「OFFになって初めて”押された”と通知される」仕組みだから。

こりゃプログラムを変更せざるを得ないな。
=====書き換えてみた======

これ難儀しました。はい

以前はAボタンで停止だったがこれはボタンを離した段階でキー検知通知が働く仕様であった。(外部ボタン割り込み機能がない)
これでは困る。

対策としてP1に外部ボタンを取り付けた。
「最初だけ」で、P1をプルアップとした。
「ずっと」でP1を監視しLowになっていたら「停止命令を1」にセットした。
が、これでは上手く動かなかった。

原因はどうも割り込みにあるらしい(かなり遅れてデータがセットされていた)
そこで「ずっと」の中にDeley0を入れた。がこれでもダメ
止むえず「Delay1」とした。
がこれでもダメ
更にボタンBの中にあるDelay0をDelay1に書き換えた。
これで動き出しました。
問題点はDelay0ではダメってこと。Delay1になってやっと有効に動作する。

外部ボタンになって、Aでは速攻止められなかったところが、数LEDの差でピシッと止まるようになったのには驚き。
Aボタンは何だったんか?

外部ボタンの接触不良も重なってほんま苦労したよ。

改良版プログラムは こちら



その他、作ったり試してみた奴ら


ハンダ下敷きへ書いたメモ
micro:bitの内蔵スピーカではあまりにも音が情けないので外部SPへ接続するためのケーブル作成
こういうチョコチョコしたハンダ付けが多いのよ・・・
実際、机上片付け、ハンダ作業、机上片付けと、すごい手間になっています。
簡単なことなんだけど、かなりの資機材が必要なんだわ。


micro:bit NeoPxcelでホタル実験

2024年09月06日 14時47分57秒 | マイコン(ESP32・Arduino等)
micro:bitのMakeCodeEditorを使って NeoPxcelでホタル実験をやった。
人間の目の特性もあってか、それっぽく見せるのは難しい。
プログラムは こちら
A/Bのプログラムの差は、暗くなった時のDelay時間の違いだけ。

最大輝度は64程度にする。
64-255の間は輝度変化が私の眼には定かではない。
最後の10以下辺りは変化が分かりやすいのだが、急に輝度0になったように感じる。
そこでDelayを長めに取ると、今度はパラパラ感が出てしまう。





micro:bitのブロックエディタ上でNeoPxcelを扱う(まとめ)

2024年09月04日 23時23分17秒 | マイコン(ESP32・Arduino等)
ここ1週間、かなり悩まされました。NeoPxcelの日本語化がちんぷんかんぷんで。
特に "strip set pixcel white LED at 0 to 0" どんなに探してもハンガリー語のPDF1枚しか見つからんかったし、結局解説されていなかった。
世界中みんなこの辺りは避けて通っている。サイテー

■LED番号指定
 0..nの配列として扱う。
 「n番目からm個の」とあるが、n番目ではなく
 「配列 [n]から始まるm個の・・」 と読み解くべし!

■一部指定とか輝度変更とか

輝度設定は「色再指定が必要」というのが落とし穴ですからね!

レインボーとかローテート・シフト


はい、これに沿って書いてちょ。(この書き方以外は知らん!)
HSL形式でやってもいいが、結局使える”輝度指定”はRGBでも同じ程度の手間なので面倒くさい。



1週間作った膨大なメモブログは迷走ゆえ非公開にせざるを得ない。
疲れたわ!

micro:bit NeoPxcel を自身で動かす前にHSL色空間を勉強

2024年08月27日 17時53分47秒 | マイコン(ESP32・Arduino等)


・NeoPxcelの色をmicro:bitから扱うにはライブラリを使用する。
・色指定はRGBではなくHSL色空間を使うのが直感的で合理的
・( [0..359],100,32)(色相,彩度,輝度)辺りが見た目に適切かな。

 
とか
 
同時点灯するLEDの数を考慮しつつ全体の明るさをセットし
それに応じたLumを加減しないと、思った色が出ない点に注意(白っぽくなる)

・和色大辞典 こちら 重ね方は こちら
・配色大図鑑 パステルはこちら

カラーピッカーは こちら 
(画面上部のリンクからいろんなサービスに飛べます)
この方、いろんなサービスを無料で提供されています こちら

micro:bit実験プログラムは こちら 

==============
以下はこれに至った経過記事です。

昨晩の「Shiftで流れるレインボーカラー」
今回は「Range」を使ったブロックを動かすのをやってみます。
======参考サイト======
Youtubeでオサレなエフェクトを探してみた。

https://www.youtube.com/watch?v=R6SNH-d03lc
https://www.youtube.com/watch?v=vH2QmrpCJuw
https://www.youtube.com/watch?v=PHchQdvZqhk 
https://www.youtube.com/watch?v=EEgnUY8vTmU
https://www.youtube.com/watch?v=xKSfsO9PCuU
https://www.youtube.com/watch?v=3R7z-UroxjU

左右に動かすのではなく、上下に動かすほうが楽しそうだ。
重力に逆らって動くと躍動感・生命感があるように感じるのかも。

======自習======
とはいえ、先達に追いつくには・・
 Hue(色相):hue
 Sat(彩度):saturation
 Lum(輝度):Luminosity
がmicro:bitライブラリの基本となってる。
色指定、RGBしかわからんので、まずは「HSL色空間」をお勉強
以下の記事の参考はこちら からです。

色をデジタル(数値)で表すには
RGB、CMYK、HSV(HSB)、HSL(HLS) などが使われる。
(CMYKは印刷系で光の3原色ではない)
RGBを直感的に扱いやすくしたのがHSV(HSB)、HSL(HLS)

・HSV(HSB)カラーモデルは
 Hue(色相)、Saturation(彩度)、Value/Brightness(明度)の頭文字
 明度を上げるためには彩度を下げないといけない、という問題点がある。
・HSL
 HSVをより簡易的に計算できるようにしたモデル
 上記問題点を解決した。
 輝度50%が一番鮮やかな色で、輝度0%は黒、輝度100%が白
 50%を境に1つの値で明暗を制御できる

画像はリトルヒーローさんから借用(感謝)

なるほど、昨日HSLパラメータ設定が(RGBの時と違って)なんか変だなと感じたのはこれか。納得


micro:bit NeoPxcel 結線状況と電流

2024年08月27日 17時44分36秒 | マイコン(ESP32・Arduino等)
リールで1m(LEDの144個)購入したLEDテープ
同梱されていた説明書には電圧オーバーの警告紙しか入ってないので接続は慎重に。
赤色が多分+で白がー
3本ソケットが信号線と +/- なんだろうな~
中央の緑色が多分信号なんだろう。
テスターで当たってみた。
内部で赤系は結線、白と水色のGND(と思ってる)も結線されていた。
ということで、ミドリが信号線なんだろうね。
赤・茶色は3.3V、水色はGND、ミドリはmicro:bitの2番ピンへ繋ぎました。


あれこれやってる写真
今回は電源ラインは使わずmicro:bitからの給電だけで動かしている。
最高輝度にすると眩しいし給電オーバーになる。

非点灯で0.02A
明るさ4で電流:0.02A
  明るさ8:0.04~0.05A 16:0.07A)
 明るさ16の場合は、5V*0.07A=0.35A

micro:bitV2の電流Max最大値は0.3A
少々オーバーしています。
なので「明るさ8」で運用するが吉のようです。
実験の「流れる」の場合、それで十分です。




micro:bit上でのIRセンサはクセが悪いわ!(AnalogRead使うべし)

2024年08月17日 12時38分52秒 | マイコン(ESP32・Arduino等)
ゴミ箱プロジェクトにて、センサー基盤繋いで使ってみて解ったこと
結論:アナログReadで使わないと動作がおかしい
   値は500を境でいいです。(1021/18でした)

とりあえずIRセンサーで開閉できるプログラム こちら
micro:bitはサーボを使うとリリースできなくて常時0.02mAを使います。
micro:bit本体だけでは0.00mAでモバイルバッテリー側が勝手にシャットダウンするんだけどね。
IRセンサーは手の場合5cm程度までしか検知できないのがちょっとアレです。
次回の課題は落下音のキックをどうするか(検出)






================
経過
とにかく単純に繋いで検知実験から再スタートした。
この基盤は中央のPinにHI / LO信号が出るという簡単なもの
測定距離は可変抵抗で調整できるものの、このままでは数十センチまでしか検知できない。

とりあえずはデジタルでしょう。


だが、一回▢を表示したらそれ以降Xには決して変わらない。

これでも、一回0になったら表示が0から変わらなくなる。
はぁ???

Analogに変えてみた。

AnalogReadを使うと値は1021 / 18が切り替わって表示される。
これが当たり前の動作じゃろうが!

当然同じAnalogReadであるので期待通り動作する。

意味わからん。
=================
意味わからんのはこっちも
MSのWindowsアプデでEdgeのクッキーが消滅
全プロジェクトが消えた。講座最中でなくてよかったわ
今後はジャンジャン共有かけてやるw


クソMS やりゃあがったな

ゴミ箱ポイ・プロジェクト始動

2024年08月16日 01時27分56秒 | マイコン(ESP32・Arduino等)
夕方いつものお散歩コースでダイソーに寄る。
くす玉を割る台を物色していたのだが、micro:bit版ゴミ箱の蓋を開閉システムを作ることを思い出して、家事コーナーへ。
100円の茶色小型のゴミ箱と300円の実用ゴミ箱の2種類がノミネート
ちょっと悩んだ。
小さい方は実用性がゼロ。しかも工作が難しそうだ。
大きい方は失敗しても車載ゴミ箱にでも転用すればいいか・・・と考え購入

やっぱ大きいと工作がたやすい。



速攻で台を作って取り付けてみた。



まだ試作段階なので穴を開けたくない。強力HDDのネオジム4枚で表裏からガチガチに引っ付けているだけ。
全体的にはマイコン工作っぽくても、センスは良いと思う。


初期案では写真のようなアームをつければ良いと思ってたが、全然ダメw
動かん。アホの考え休むに似たりとはこのこと。



結局現場合わせで解ったことは、軸から約15mm離れた位置にサーボ軸を置くが吉ということ。


この位置でサーボホーンが回れば蓋を90度に立てる位置まで開かせることができる。
蓋が軽いのでなんとか上手くいきそうな予感がしていたが、今回はバッチシだった。


micro:bit開発環境としてクロームOSも試しては見るが・・・

2024年08月13日 15時05分25秒 | マイコン(ESP32・Arduino等)
クロームOSも試しては見るが
https://gigazine.net/news/20240216-windows-10-devices-to-chromeos-flex/

継続性に良くないとの噂もあるな。



SG90サーボで重力場ドライブ装置の基礎実験

2024年08月10日 14時59分55秒 | マイコン(ESP32・Arduino等)
先輩宅訪問が1日延びたので重力場ドライブの基礎部分を作ってみた。
地球の重力場を使用し、ポテンショナルエネルギーを空間から吸い上げるための発射装置



右側に円形の射出装置。ここに200gの質量を持った射出物体を置く。
発射台の下には直径5cm程度の特殊鋼コイル
コイルは2枚の段ボールL字型台座に挟まれ
SG90サーボのホーンに結ばれた紐で、固定ピンを引っ張る



サーボによってピンが抜ければ、コイルに蓄積されたエネルギーが開放され
射出装置に乗ったペットボトルが右に転げ落ち、地球重力場に落ち込むという寸法
素晴らしい!


今回は一発で実験成功
これとダイソー製「おめでとう」や「クラッカー」と組み合わせれば完成だ。

プログラムは こちら







「重力場エンジン」応用でくす玉を割るプロジェクト開始

2024年08月09日 09時06分35秒 | マイコン(ESP32・Arduino等)
クラッカー点火は失敗に終わったが、さらなる高みを目指してGo!
今回は「重力場エンジン」を使った装置に挑戦!!!

これをmicro:bitで制御するw
ところが、これをくす玉の中にきれいに格納し、確実に展開させる技術が非常に高度なことに気がついた。
作ってる工場ではきちっとしたマニュアルがあるんだろうがこちらは試行錯誤
そもそも動作原理すらわからないw

秋プラでサポータの人にも手伝ってもらわねばならないので、きちっとした手順書が必要
正直、ここまで確立するの大変でした。
吹き流しの癖が強すぎて上手く入らないのだ。
どうせもう一個買う必要があるので、その時にはいの一番で開腹手術・観察じゃ。

数十回の展開試験をした結果、200g程度の重しを投身自殺させればOKなことが判明
(こうでもしないと年金暮らしはやることがない)
テロとか投身自殺とか穏やかでないなぁ・・・
ネット検疫に引っかるぞ。
スカイダイビングにしておこう。