2026年の投稿[80件]
2026年5月 この範囲を時系列順で読む この範囲をファイルに出力する
Art-Net 関連機器の製作についてAI/Geminiさんとやりとりをしました。相談出来る達人が近くに居ないので助かります。
大きなヒントを一つもらいました。ブロッキングの活用です。
キーボード入力においてもEtnerの受信においても入力や受信があるまで一時停止して待つ設定です。処理が一時停止しますが、イベントが発生した時に速やかに処理出来ます。他の処理はスレッドを分けておけば大丈夫です。スレッドとは処理を並列化させる(疑似的に複数の処理を同時進行させる)方法です。止まらせることなく延々と回したい処理とブロッキングしたい処理を別スレッドにすれば全体としては止まることがありません。PICマイコンでやってきた「ひたすら回してフラグで分岐する」って感覚がアタマに固着していたようで、スレッドを分けてブロッキングを最大活用するって発想がありませんでした。ただ、無制限のブロッキングをしますと都合が悪いこともあるので0.1~0.5秒ごとにブロッキングを外して周囲を伺うのが良さそうです。
#Rust
大きなヒントを一つもらいました。ブロッキングの活用です。
キーボード入力においてもEtnerの受信においても入力や受信があるまで一時停止して待つ設定です。処理が一時停止しますが、イベントが発生した時に速やかに処理出来ます。他の処理はスレッドを分けておけば大丈夫です。スレッドとは処理を並列化させる(疑似的に複数の処理を同時進行させる)方法です。止まらせることなく延々と回したい処理とブロッキングしたい処理を別スレッドにすれば全体としては止まることがありません。PICマイコンでやってきた「ひたすら回してフラグで分岐する」って感覚がアタマに固着していたようで、スレッドを分けてブロッキングを最大活用するって発想がありませんでした。ただ、無制限のブロッキングをしますと都合が悪いこともあるので0.1~0.5秒ごとにブロッキングを外して周囲を伺うのが良さそうです。
#Rust
Art-Net 関連機器は RaspberryPi_CM4 を母体に Rust でコードを書きます。Rust を使うのはこの件が初めてなので無謀な気もしますが、C言語で動いたモノを Rust で書き直す感じなので大丈夫っしょ。C言語で書いたモノもメモリ構成を大変更するために全部書き直すつもりだったので作業量は大差ありません。
使ってみないとわかりませんが、C言語で出来ることは Rust でも出来るそうです。これを信じて取り組んでいきましょう。
#[Art-Net] #Rust
使ってみないとわかりませんが、C言語で出来ることは Rust でも出来るそうです。これを信じて取り組んでいきましょう。
#[Art-Net] #Rust
Rust のことは随分わかってきました。大雑把に括るとC言語と同じです。Python や .NET 系のようにマネージが強くて自由度が狭いってことは無いっぽいです。
「所有権」や「ライフタイム」は方言程度の違いでした。両方ともC言語ではコードを書く側が注意を払ってきたことを自動的にアシストしてくれる機能です。アルゴリズムの中に埋もれるバグを予防出来るので、難しいというより手間をかけるのが先か後かってだけでした。
「所有権」は変数の読み書きの不整合や二重処理を防止するための対策です。その対策の意味を理解するには変数の処理構造を知っていた方がいいと思うのですが、その説明をすっ飛ばして「所有権がぁ~」と話をする教科書が多くて読んでいるこちらが混乱します。C言語におけるポインタが理解出来ていればそれほど難しいことではないので、ポインタがわかっている前提で説明をしてくれる教科書があってもいいんぢゃないのかなぁ~って思います。「所有権」によって制限されることはC言語のコードを書く上でも注意しなければならないことなので、だったら前提として管理・制限しときゃいいんぢゃね?ってことなのでしょう。C言語のポインタは自由度が高い反面コードを書く側が管理・制限してきましたが、これをコンパイラが厳密にチェックしてくれるのですからある意味楽です。
「ライフタイム」は変数のコード上での有効範囲のことです。変数の有効時間の設定・管理ではありません。変数の有効範囲はC言語とほぼ同じですが、変数の有効無効をコード上でチェックで出来ます。関数で用いる変数が有効かをチェックしたり、この関数の処理が済むまで変数を維持するように指示をする機能が追加されたと思えばよさそうです。
どちらも、ややこしさを追加して意地悪しているのではありません。
#Rust
「所有権」や「ライフタイム」は方言程度の違いでした。両方ともC言語ではコードを書く側が注意を払ってきたことを自動的にアシストしてくれる機能です。アルゴリズムの中に埋もれるバグを予防出来るので、難しいというより手間をかけるのが先か後かってだけでした。
「所有権」は変数の読み書きの不整合や二重処理を防止するための対策です。その対策の意味を理解するには変数の処理構造を知っていた方がいいと思うのですが、その説明をすっ飛ばして「所有権がぁ~」と話をする教科書が多くて読んでいるこちらが混乱します。C言語におけるポインタが理解出来ていればそれほど難しいことではないので、ポインタがわかっている前提で説明をしてくれる教科書があってもいいんぢゃないのかなぁ~って思います。「所有権」によって制限されることはC言語のコードを書く上でも注意しなければならないことなので、だったら前提として管理・制限しときゃいいんぢゃね?ってことなのでしょう。C言語のポインタは自由度が高い反面コードを書く側が管理・制限してきましたが、これをコンパイラが厳密にチェックしてくれるのですからある意味楽です。
「ライフタイム」は変数のコード上での有効範囲のことです。変数の有効時間の設定・管理ではありません。変数の有効範囲はC言語とほぼ同じですが、変数の有効無効をコード上でチェックで出来ます。関数で用いる変数が有効かをチェックしたり、この関数の処理が済むまで変数を維持するように指示をする機能が追加されたと思えばよさそうです。
どちらも、ややこしさを追加して意地悪しているのではありません。
#Rust
C言語での ncurses みたいに、Rust で画面にテキスト表示するなら crossterm だそうです。キーボード操作も扱えます。
あるのか無いのかの確認をしただけですが、あるなら問題ありません。
C言語ベースで処理段取りの整理を随分やってきましたので、Rust の勉強が進めば Art-Net 関連を書き始められそうです。
#Rust #[Art-Net]
あるのか無いのかの確認をしただけですが、あるなら問題ありません。
C言語ベースで処理段取りの整理を随分やってきましたので、Rust の勉強が進めば Art-Net 関連を書き始められそうです。
#Rust #[Art-Net]
合間に Rust の勉強をしています。
今は「所有権」について整理していますが、変数は内容を保存するメモリ、そのアドレスとメタデータを保存するインデックスで構成されていると捉えれば自然に理解出来ます。ソースコード上での使い方は別問題ですが、「所有権」の譲渡と貸出はこの構成から見ればいいだけでした。挙動の表面だけで理解しようとすると何がどうなっているか、どうしてこんなことをするのか理解し難いようですけど。
ただ、「所有権」という言葉には疑問があります。私の理解では「変数へのアクセス権限」となりました。この言葉のまんまですが、「所有権」は変数の内容にアクセスできるかどうかですから、持っているかより権限があるかが重要だと思うのです。この場合の「所有権」はこういう意味の言葉だと扱えばいいだけですが、「所有権」と言われると「所有者」は?と聞きたくなり、「所有物」は何?とも聞きたくなります。「所有権」の説明では「所有者」も「所有物」も変数だとする物が多く、当初は何のこっちゃいと感じたものです。「所有者」は変数であり、「所有物」は変数の内容が書かれたメモリとなります。あくまでイメージですけど、「変数の内容が格納されたメモリのパーミッション」だとも思えます。
#Rust
今は「所有権」について整理していますが、変数は内容を保存するメモリ、そのアドレスとメタデータを保存するインデックスで構成されていると捉えれば自然に理解出来ます。ソースコード上での使い方は別問題ですが、「所有権」の譲渡と貸出はこの構成から見ればいいだけでした。挙動の表面だけで理解しようとすると何がどうなっているか、どうしてこんなことをするのか理解し難いようですけど。
ただ、「所有権」という言葉には疑問があります。私の理解では「変数へのアクセス権限」となりました。この言葉のまんまですが、「所有権」は変数の内容にアクセスできるかどうかですから、持っているかより権限があるかが重要だと思うのです。この場合の「所有権」はこういう意味の言葉だと扱えばいいだけですが、「所有権」と言われると「所有者」は?と聞きたくなり、「所有物」は何?とも聞きたくなります。「所有権」の説明では「所有者」も「所有物」も変数だとする物が多く、当初は何のこっちゃいと感じたものです。「所有者」は変数であり、「所有物」は変数の内容が書かれたメモリとなります。あくまでイメージですけど、「変数の内容が格納されたメモリのパーミッション」だとも思えます。
#Rust
磁気ホールセンサには次のような種類があるそうです。
Google/AIからのコピペですが自分のメモとして転載。
1.リニアホールセンサ (リニア出力)
特徴: 磁束密度(磁石の強さ)に比例した電圧を出力。
2.デジタルホールセンサ (ホールIC)
特徴: 磁気の有無(しきい値)で出力をON/OFFする。
・片極検知(単極): N極またはS極のどちらか一方のみを検知。
・両極検知: N極・S極両方に対応。磁極に関わらず検知。
・交番検知(ラッチ): S極→N極、N極→S極と磁極が切り替わるたびに出力が反転。
今回の修理で用いるのは「デジタルホールセンサ:片極検知(S極)」です。
#電子工作 #器具の修理
Google/AIからのコピペですが自分のメモとして転載。
1.リニアホールセンサ (リニア出力)
特徴: 磁束密度(磁石の強さ)に比例した電圧を出力。
2.デジタルホールセンサ (ホールIC)
特徴: 磁気の有無(しきい値)で出力をON/OFFする。
・片極検知(単極): N極またはS極のどちらか一方のみを検知。
・両極検知: N極・S極両方に対応。磁極に関わらず検知。
・交番検知(ラッチ): S極→N極、N極→S極と磁極が切り替わるたびに出力が反転。
今回の修理で用いるのは「デジタルホールセンサ:片極検知(S極)」です。
#電子工作 #器具の修理
元々の磁気ホールセンサを調べたところ「A1104」らしいです。刻印は「A452」ですが、そういうこともあるんだとか。AI/Geminiさんに聞いたところ判明しました。代替で手配した「A3144」でも動作するだろうとのことですが、感度が少し違うらしいので「A1104」の到着を待ちましょう。中国からですが、早ければ来週半ばには入荷です。
#器具の修理
#器具の修理
秋月電子さんで扱っている磁気ホールセンサで形状が同じで在庫が豊富な物は2種あります。
ホールIC(ホールラッチ) SK1816G-G03
ホールIC(ホールラッチ) US1881LUA
違いは「磁束密度しきい値」です。
磁気に対する反応が違うのだろうと思いますが、元々付いているセンサのデータシートが手に入りませんのでどちらがいいのかわかりません。
とりあえず前者を頼んでみました。
追記
磁気ホールセンサには「両極検知」と「交番検知」があるそうです。
前者はS極でもN極でも磁気を受けたらスイッチが入るもの、後者はどちらかの極性を受けたらスイッチが入り反対の極性を受けたら切れるものらしいです。
オーダーしたのは後者なのでダメですね。
探しなおして発注しないと。
追記の2
求めるのは「両極検知」ですが、秋月さんでは欠品していますので、amazonさんに「A3144」を発注しました。これが「両極検知」なのかわからんのですが、試してみるしかありません。
本体の基板をあたったところ、電源5v、プルアップ抵抗1kΩでした。スイッチ特性が不明な以外はA3144で問題無さそうです。
#器具の修理
ホールIC(ホールラッチ) SK1816G-G03
ホールIC(ホールラッチ) US1881LUA
違いは「磁束密度しきい値」です。
磁気に対する反応が違うのだろうと思いますが、元々付いているセンサのデータシートが手に入りませんのでどちらがいいのかわかりません。
とりあえず前者を頼んでみました。
追記
磁気ホールセンサには「両極検知」と「交番検知」があるそうです。
前者はS極でもN極でも磁気を受けたらスイッチが入るもの、後者はどちらかの極性を受けたらスイッチが入り反対の極性を受けたら切れるものらしいです。
オーダーしたのは後者なのでダメですね。
探しなおして発注しないと。
追記の2
求めるのは「両極検知」ですが、秋月さんでは欠品していますので、amazonさんに「A3144」を発注しました。これが「両極検知」なのかわからんのですが、試してみるしかありません。
本体の基板をあたったところ、電源5v、プルアップ抵抗1kΩでした。スイッチ特性が不明な以外はA3144で問題無さそうです。
#器具の修理