続) tinygo用「ナイトライダーのあれ」動かしてみた

GoConf2026badgeでも「あれ」が動くか調べてみようかな、みたいなことをちらっと書いたのですが、さっそく、師匠からヒントをもらい(!?)、というか、ほぼそのまま、いただきました。

あれのzero-kb02、今回はバブルソートを応用だそうです。
github.com

GoConf2026badgeは、zero-kb02と同じwaveshare-rp2040-zero、LEDも同じものを使っているので、上記のソースを少しだけ修正するだけで動きました。

goconf2026badgeでも

[修正箇所抜粋]

func main() {
    colors := []uint32{
        0x00800000, 0x00000000, 0x00000000, 0x00000000,
        0x00000000, 0x00000000, 0x00000000, 0x00000000,
        0x00000000, 0x00000000, 0x00000000, 0x00000000,
        0x00000000, 0x00000000, 0x00000000, 0x00000000,
    }

    //  time.Sleep(time.Millisecond * 5000)
    // 多連装フルカラーRGB LEDデバイスの初期化
    ws := NewWS2812B(machine.GPIO9)

1.colorsをgoconf2026badgeのLEDに合わせて16個に増やす
2.NewWS2812B()に渡すGPIOをGPIO1からGPIO9に修正

さてさて、次は何で動かそうかな...

続) tinygo用「ナイトライダーのあれ」動かしてみた

GoConf2026badgeでも「あれ」が動くかな、みたいなことをちらっと書いたら、さっそく、師匠からヒントをもらい、というか、ほぼそのまま、いただきました。

あれのzero-kb02バブルソート版
github.com

GoConf2026badgeは、zero-kb02と同じwaveshare-rp2040-zero、LEDも同じものを使っているので、上記のソースを少しだけ修正しました。

goconf2026badgeでも

tinygo用「ナイトライダーのあれ」動かしてみた

中四国_三輪さんが開発されているtinygo用「ナイトライダーのあれ」を、picoと自作LED基板で動かしてみた

github.com

picoと自作LED基板をつなぐジャンパー配線と連結コネクターの方が目立ってますが、メインはLEDの方です。

picoと自作LED基板で「ナイトライダーのあれ」

静止画ではわからないので、動画をあげておきます。

ナイトライダーのあれ

WioTerminalでも。GPIOの割り当てを変更するだけで動きました。

WioTerminalでも

LEDがたくさんついているGoConf2026badgeでも動くかなと思ってサンプルのソースみたら、GPIO割り当て変更ではすみそうにない、今度ひまを見てトライしてみようかな。

TinyGo-Keeb GoConf2025badgeのサブセット基板を作ってみた

JLCPCBに基板を発注、ものはすぐに届いたのに、半年近く、放置状態が続いて、今日、ようやく完成して動き始めた。

基板製作の学習を兼ねて、GoConf2025badgeを元に、液晶とGROVEコネクタだけにして、GROVE I2Cセンサーで取得したデータが表示できるものを作ってみた。カバーを作る余裕はないので、余った名刺ケースなどに入れられるサイズにした。
センサーがなくても、ヘッドレス運用のPCなどでUSB-Serial経由でメッセージが表示できるだけで何かの役に立つ、かな。

実際にI2Cセンサー(SHT3X)を接続して温度、湿度を表示させているところ

goconf2025badge_shrink_version+SHT3X

ブレッドボードとジャンパーで組むと、これだけでも配線だらけになるところ。 基板にはまだスペースがあるので、PWM信号が出せるように端子台つけるとか、スイッチ1つくらいつければよかったと思う。 改良版作ろうかな。格安で基板を作れるからこそ、その時に必要な機能だけに絞ったものが作れる、色々試すことができる。
その基板に合わせてTinyGoで必要最小限のプログラムを作ることができる。ありがたや。

元にしたGoConf2025badge はこちら
GitHub - tinygo-keeb/workshop-conf2025badge: conf2025badge を用いた workshop · GitHub

ファームウェアのコードやkicadデータが公開されている、感謝!!

Tinygo Conference 2026 参加

昨年に引き続き、Tinygo Conference 2026 に参加してきました

conf.tinygo-keeb.org

去年はワークショップに参加できなかったのですが、今年は運よく参加できてラッキーでした。
基板はんだごてのワークショップとしては2度目の参加ですが、前回よりも手間取ってしまい、逐一サポートしてもらって3時間くらいかかってしまった。手伝っていただいた皆さん、本当にありがとうございました。

ワークショップ 作業机

作業開始時はこんな感じ

完成した基板

tinygo_conf_2026 完成した基板

苦労しただけに、動作した時の感動もひとしおです。
今度参加する時までには、もう少し上達するようがんばらねば..

ちなみにこの基板はGoConference2026のために作成・配布されたもののようで、kicadデータも公開されています。
フルカラーのGopher デザインは公開されていないとのことで、上記と同じものの入手は難しそうです。
(もし基板発注するなら、基板だけでなくLED16個の取り付けも依頼したほうがいいと思います。)

ビルドガイドはこちら
github.com

ケースの3Dプリントのデータはこちら
gocon2026badge case - Free 3D Print Model - MakerWorld

LabVIEWCLIとTaskfileを使ってLabVIEWAppBuild on Ubuntu

LabVIEWCLIとTaskfileを使ってLabVIEWAppBuild on Ubuntu

LabVIEWCLIはLabVIEW Linux(Ubuntu)でも使えたので、そのメモ

Taskfileとは
Goで書かれたローカル環境で動作するTaskRunner、WindowsでもLinuxでも動作する。
おもにビルドやデプロイの自動化などに使う
設定をyamlで記述する。Makefileに比べると記述しやすい?

詳細は taskfile.dev

LabVIEWでTaskRunnuer的なものとして、最近、LabVIEW開発環境と一緒にインストールされるようになった「MGI Solution Explorer」があり、こちらは複数プロジェクトを一つのソリューション(一つの設定ファイル)にまとめて、プロジェクトに設定されているビルド情報を使って、まとめてビルドが実行できるようにするというツールです。デバッグ版とリリース版を切り替えたり、バージョンを指定できたりと、ほんのり便利そうな機能がついています。プロジェクト一つでも使えます。VI実行も登録できるようなので、決まった配布先があればデプロイなんかもできそうです。
普通にLabVIEW開発環境からプロジェクトファイルを開いてビルドすることが多いのですが、CI/CDで開発サイクルを少しでも自動化するのが良しとされる時流ですので、こうしたツールも取り入れていく必要があるのでしょう。
が、しかし、「MGI Solution Explorer」は、Windows版のみでLinux版はありません。 LabVIEW Linux(Ubuntu)で似たようなことをするには、ということでTaskfileの出番です。前置き長い。
LabVIEWアプリのビルドはLabVIEW開発環境(GUI)からでも実行できますが、コマンドラインからビルドするにはLabVIEWCLIを使います。
LabVIEWCLIのオプション指定が長いので、Taskfileの設定ファイルに保存しておくとオプション覚えたり調べる手間が省けます。

Taskfile.ymlが保存されているフォルダで、"task --list"とすると、定義されているタスクの一覧が表示されます。

$ task --list
task: Available tasks for this project:
* build:         Build LabVIEW App
* clean:         clean
* default:       task list

"task build"とすると、LabVIEWCLIでのビルドが実行されます。

LabVIEWCLI started logging in file:  /tmp/lvtemporary_901495.log
Using LabVIEW: "/usr/local/natinst/LabVIEW-2025-64/labview"
LabVIEW launched successfully.
Connection established with LabVIEW at port number 3363.

Operation output: 
Generated files are:
/home/<username>/LvMiniTimerApp/builds/exe/LvMiniTimerApp
/home/<username>/LvMiniTimerApp/builds/exe/LvMiniTimerApp.aliases
/home/<username>/LvMiniTimerApp/builds/exe/LvMiniTimerApp.conf

ExecuteBuildSpec operation succeeded.

[Taskfile.yaml]

# yaml-language-server: $schema=https://taskfile.dev/schema.json

version: '3'

vars:
  LABVIEW_BIN_PATH: "/usr/local/natinst/LabVIEW-2025-64/labview"

  PWD_PATH: 
    sh: pwd

  PARENT_PATH:
    sh: dirname $(pwd)

  PROJECT_PATH: "{{.PWD_PATH}}/LvMiniTimerApp.lvproj"
  EXEFOLDER_PATH: "{{.PARENT_PATH}}/builds/exe"

tasks:
  default:
    desc: task list
    cmds:
      - task -l 
    silent: true
  build:
    desc: Build LabVIEW App 
    cmds:
      - task: clean
      - LabVIEWCLI -LabVIEWPath {{.LABVIEW_BIN_PATH}} -OperationName ExecuteBuildSpec -ProjectPath {{.PROJECT_PATH}}
      - LabVIEWCLI -LabVIEWPath {{.LABVIEW_BIN_PATH}} -OperationName CloseLabVIEW 
      - ls -l {{.EXEFOLDER_PATH}}
    silent: true
  clean:
    desc: clean
    cmds:
      - rm -f {{.EXEFOLDER_PATH}}/*
    silent: true

[ファイルフォルダ構成]

example treeview

LabVIEWCLIでビルドするには、まずビルドに使用するLabVIEWの実行ファイルのフルパスが必要なため、変数定義で”vars: LABVIEW_BIN_PATH"で定義しています。
LabVIEWCLIでのビルド指定には、"-OperationName ExecuteBuildSpec"という長いパラメータ指定が必要です。
ターゲット名やビルド名も指定できますが、それぞれ1つしかないなら省略してもビルドできます。
あとは、LabVIEWプロジェクトファイルのパスをフルパスで指定する必要があります。(LabVIEWCLIはカレントディレクトリからの指定ができない)
環境や配置したフォルダに合わせて変えるのは面倒なので、"pwd"コマンドを使ってカレントディレクトリを取得してパスを合成しています。
変数定義の"PROJECT_PATH: "{{.PWD_PATH}}/LvMiniTimerApp.lvproj""がそれです。
LabVIEWビルドは、すでに実行ファイルがあるとビルド実行してくれないので、ビルドする前に古いファイルを削除するように仕掛けています。
"silent:true"にしていると実行中の表示がされませんが、これをfalseにすると実行経過が確認できます。

使ってみるとなかなか便利です。今後はDockerコンテナでLabVIEWアプリのビルドする機会があるかもしれないので、その時には役に立つかも。

Window版Taskfile使用時の注意
TaskfileはWindows版もありますので、Windows環境でも使えます。ですが、taskfile.yamlはutf8で記述しますのでファイルパスの指定もutf8になります。このため、Windows環境でビルド対象のパスに日本語があると文字コードが合わないためエラーになります。
フォルダ名やファイル名にすべて英語になっていれば(日本語文字がなければ)使えるはずです。
ちなみに「MGI Solution Explorer」は日本語がパスに含まれていてもビルドできた。

GWDSが2027/12/1に発売終了

GWDS(G Web Development Software)が2027/12/1に発売終了するとの告知がNIの掲示板に掲載されていました。

G Web Development Software: Compliance Driven Lifecycle Update
https://forums.ni.com/t5/G-Web-Development-Software/G-Web-Development-Software-Compliance-Driven-Lifecycle-Update/td-p/4483530

リモートパネルの代替として検討していたのですが、ついに使うことなく消えていくことに。。。
終了時期からすると、とどめを刺したのは例のサイバーレジリエンス法でしょうか。
(2027/12/11が完全適合の期限となっていて、違反時の制裁金が最大1500万ユーロ)

その影響なのか、「FPGA Compile Cloud」のサービスも終了するようです。

https://forums.ni.com/t5/LabVIEW/FPGA-Compile-Cloud-Service-End-of-Life-Feedback-and-Transition/td-p/4476184

こちらはかなり差し迫っていて、2026/10/30終了となっています。
古いFPGAのコンパイル環境としてWindows7が必要なんですが、さすがにその環境は無いので、このサービスを使っていたのですが、
今更ながら、どうにか環境を作っておかないと 。。

しかし、発売終了、サービス終了の告知がディスカッションフォーラムだけというのはちょっとフェアじゃないよね。