🗐 電装工芸日記 - 舞台照明機器の製作とか -

今年は開発案件を進めたい

or 管理画面へ

全年6月10日の投稿[8件]

2026年 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 Nim のことを少しかじってみましたがイイですね。
 普及率が低い言語なので情報が少ないですし、個人レベルのコミュニティで開発されているので配布やメンテが突然終わってしまうかもしれませんが、C言語に変換してから gcc でコンパイルするってのがいいですね。Nim で書けなくなってもC言語としては残るのです。今やC言語は古代語みたいな存在感ですが、私が生きている間に消え去ることは無いでしょう。使える言語として残せるなら問題なかろうと思います。
 それにも増して、初めて眺めた Nim のコードが何となく理解出来ることがイイです。自分が勉強したのは Python3、C言語(ANSI)、Rust ですが、Pythonに他の言語の方言が少しずつ混じったと思えば済んでしまいそうです。変数の型指定が必須の Python と思えばいいようです。
 コード書きで飯を食おうなんて思っていませんし、自分で組んだハードウェアを動かすことが目的ですので、Nim の普及率が低くても問題はありません。少ない学習コストで短期間で書けるならそちらの方にメリットがあります。もちろん、RaspberryPi でも使えます。
 AI/Geminiさんにお聞きしたところ、コンパイルには注意が必要っぽいです。コンパイルにはデバックレベルとリリースレベルがありますが、リリースレベルは最適化が強いので、デバックレベルでは動いたコードが動かなくなることがあるそうです。これはメモリキャッシュに代表される挙動の違いらしいので、この辺りをキチンと追い込む必要はありそうです。
 何にしても、Python 並みに書きやすく読みやすく、C言語で出来ることはほぼ100%実現可能で、C言語やC++並みの速度で動くなら願ったり叶ったりです。

#Nim #C言語
Icon of admin
 「Nim(ニム)」と呼ばれるプログラム言語があるそうな。
 Python に近い書き方でC言語並みの速度が出るそうな。
 Nim のコードをC言語に変換してから gcc でコンパイルする構成で、Python をC言語に変換する Cython が進化したような立ち位置らしい。
 Rust の勉強をしていますが自分の中に妙な違和感があります。嫌いって程じゃないのですがナンか違うなと。
 面白そうなので Nim の勉強もしてみます。

#Nim #C言語
Icon of admin
 客席テーブルを加工するための治具を3Dプリンタで作ってみました。
 3種類です。本体の脚を切断する物、本体の脚に穴を空ける物、伸縮脚に穴を空ける物です。
 本体の脚は組み付いているので手持ち工具での加工になりますが、組み付いている物をフリーハンドで加工するのは難しいし取り付けられる汎用のクランプやガイドはありません。
 伸縮脚は材料から加工しますが、多数の穴を空けますのでケガいてポンチ打ちしてたらもの凄く時間がかかります。
 これらがあれば比較的短時間で加工出来るかなと。

 本体脚を切断する治具です。
 セーバーソーをあてがうためのガイドです。
 木目で描いてあるのが治具でダークグレーが相手物の脚です。
202606100621141-admin.png
 本体脚に穴を空けるための治具です。
 キャップとしてはめて側面の穴からドリル歯を入れます。
202606100621142-admin.png
 伸縮脚の穴を空けるための治具です。
 角パイプに乗せ、穴に合わせてドリル歯を入れます。
20260610062114-admin.png
 このところ3Dプリンタでの製作が多いので大量に在庫してあったフィラメントが無くなりそうです。今装着している1巻が最後です。
 落ち着いたら新型の間数マーカーを作ろうと思っているのでフィラメントを発注したところ納期が7月だそうな。ちょっと困った。

追記
 10日くらいで入荷するフィラメントがありました。少し高いですがつなぎで2巻購入。
 フィラメントは「PolyLite ABS」を常用しています。仕上がりがキレイ(特に反りが少ない)で途中で止まることもないので結果的に安く済んでいます。

#ガチ工作 #器具の製作

2025年 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 C言語のポインタには面白い機能(使い方?)がありました。
 関数の呼び出しをポインタ化するのです。なんのこっちゃ?って話ですねぇ~。
 ソースコードの大半はそのままに、条件分岐で関数を差し替えるイメージです。オブジェクト指向の一歩手前?
 もちろん、構造体を含む変数もポインタを介して差し替えられます。
 DMXの場合、受信中のスタックから読み出すことは避けなければなりません。パケットの中身に不整合が起こるからです。例えばアドレス100までは最新の受信内容、101以降は1フレーム前の受信内容や全てゼロになるのです。2スロット構成のアトリビュートがアドレス100と101にまたがったらよろしくないことが起こります。リトルエンディアンだったら目も当てられません。
 この対策は2つのスタックを交代しながら使います。片方は受信に、1フレーム前のデータを持ったもう片方を出力処理に使い、条件が整えば役割を交代するのです。この場合どちらをどちらに使うかをポインタで指定出来れば全体の処理はスマートになります。ピンと来る方が少ないのはわかっていますが、ソースコードを書く上ではとても合理的な方法です。今の常識からしたら万分の一の処理能力のハードウェアしかなかった時代にC言語をデザインした人は本当の天才だと思います。勉強すればするほど「天才」って言葉が身に沁みます。自分はその成果に甘えるだけで感謝々々です。

 C言語を学ぶ上でポインタは難解な要素の筆頭ですが、自分の様にアタマの半分がPICマイコンのアセンブラで占められている者には案外すんなりと理解出来ました。メモリのアドレスを直接扱う方法だからです。当初は高級言語でメモリのアドレスを直接扱うなんてイメージはありませんでしたので躓きましたが、C言語が値渡ししか出来ない(参照渡しが出来ない)ことも含めるとポインタは合理的であり、C言語は高級言語ではなく汎用化を目指したアセンブラ言語と思えばイイらしいと思った次第。正しくはなくても私にはこの理解が自然でした。

 自分は PC8001(PC6001)-BASIC → Z80アセンブラ(当時小学生、挫折しました) → (20年空いて) → PICアセンブラ → Python → C言語(今) と進んできました。小学生の時分に論理演算、16進数、2進数を本能に焼き付け、成果は出せずともZ80アセンブラに挑んだことが今に活きているようです。小学生当時、戦前産まれの父母は数百円の漫画本は買ってくれませんでしたが高価な技術書やその筋の雑誌(月刊マイコンやBASICマガジンなど)は買ってくれました。100歳まであと数年のカウントダウンなのに林業を生業とし登山やスキーを楽しむ父と米寿間近で父の3倍は元気な母に絶大な感謝をする今日この頃。
 自分の今の最大の不安は三途の川の向こう岸で父母をお迎えすることです。あと100年くらいは部下や後輩に迷惑をかけずに現役をやってやろうと思っていますけど(笑

#C言語 #雑記
Icon of admin
 現場ですが、簡単なひな壇を組むだけの現地道具なので終演までヒマです。
 ArtNetPatch の ap_transmitter の構造を構造体配列を元に整理したのですが、割り切って構成したら案外軽い処理になりました。メモリの節約など考えず、条件分岐や計算を出来るだけ減らし繰り返しをヒトまとめにする方針だからでしょうか。
 実際に組んで実行時間を計測しなければなりませんが、パッチ処理の後にもディレイやプロファイルカーブの処理を入れられそうな予感がします。

 receive(受信)、bind(入力ユニバースを内部Bus(ユニバース)にパッチ、ここで数値をマージしてHTPミキサーとします)、pre-delay、pre-profile-curve、patch、post-delay、post-profile-curve、transmit といった流れで考えています。

 ついてはモジュール構成を少し変えます。
 ap_transmitter の中の数値操作と Art-net の出力を分割します。
 fps はともかく、すべてのユニバースを連続して送るのは避けた方がいいかなと思うので、ユニバース毎にインターバルを持たせるためです。

1)アプリの起動部とし、共有物を設定して以下のモジュールを呼ぶ「ap_main」
2)画面表示やユーザー操作を司る「ap_console」
3)Art-Netを受信する「ap_receiver」
4)受信値や設定値から出力値をまとめる「ap_effect」
5)Art-Net を出力する「ap_transmitter」
6)データのタイムアウト管理をする「ap_timeout」

 今後はタイムラグを減らす工夫を考えてみましょう。
 出力の目標は 30fps 以上、出来れば 36fps ですが、1/36秒以内に処理を一巡出来るなら遅れても1フレームとなります。無理ならスレッド的なアプローチで考えて出来るだけ遅れを少なくしましょう。
 何にしても、試作をして処理時間と処理負荷の計測が必要です。
 こんな複雑なシステムは10回くらい書き直すつもりで試すしかありません。素人の私が結果を完全に予測するなんで無理ですもん。

#[Art-Net] #器具の製作 #C言語
Icon of admin
 子プロセスを使う場合は親プロセスが落ちたらこれらも落とさないといけません。ゾンビとして残ってしまうからです。
 一般的にはメインから「終わりにしなさい」って指示を受けて落としますが、開発途中ではそうもいかないことがあります。
 ならば、「続けなさい」って指令が無ければタイムアウトすることにしましょう。親の存在確認をする方法もありますが、この方法なら管理が楽かも。

#C言語
Icon of admin
 ArtNetPatch の構成イメージが見えてきました。
 この後は「ap_transmitter」の具体化でしょうか。これが ArtNetPatch の核であり一番重い処理です。
 モジュール間を繋ぐ構造体配列が見えればその他のモジュールを作ることは可能ですし、画面表示とか作って手ごたえを感じたいってのはありますが、最終的にデータを取りまとめる「ap_transmitter」が見えませんと構造体配列を決めることが出来ません。

#[Art-Net] #器具の製作

2024年 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 ウシオさんの1kwクセノンピンが不調であります。
 常にではないのですが、濁った#18というか茶色っぽくなったり光量が落ちたりスパークすらしなくなったりします。
 電源条件が悪いとか球の劣化とかってのが普通の疑いだと思いますが、条件の良い100vでも200vでも、新しい球でも古い球でも不規則に発生します。
 数年前から稀に起こっていたので球を新しくしたりしたのですが、頻度が増しているので流石にヤバイ。。。
 自力はムリなのでメーカーさんに修理を依頼します。ウシオさんのテクニカルセンターは茨城県つくば市にありますのである意味近所。来週直に持ち込みの予定。
 にして、原因を知りたい・・・。どちらかと言えば興味として。
 状況を鑑みるに、電路のどこかが腐食しているか緩んでいると予想。それが本体なのかケーブルなのか整流器なのかはわかりませんが、整流器の回路は正しい電流を出しているのにランプまで届いていないのではないか?というのが今のところの疑い。
 興味はともかく、このままでは夏から冬のディナーショーがヤバイ。
 湿度100%とか降雨の野外現場でも使ってきましたので湿気にやられたんかなぁ~。そんな現場の後に必ずしも天日干ししなかったこともありますし。

#器具の修理

■思ってみた

陽が伸びて暑さを感じるようになってきました。

編集

■全文検索:

複合検索窓に切り替える

■複合検索:

  • 投稿者名:
  • 投稿年月:
  • #タグ:
  • カテゴリ:
  • 出力順序:

■日付検索:

■カレンダー:

2026年6月
123456
78910111213
14151617181920
21222324252627
282930

■カテゴリ:

■最近の投稿:

最終更新日時:
2026年6月10日(水) 16時00分03秒