tinygo build -target=wioterminal -o wioterminal_blink.uf2 main.go flashうまくいかん
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
UbuntuでWio Terminalをブートローダーモード(リセット2回)にした際、ポート(シリアル)としては認識されるものの「Arduino」という名前のマスストレージ(UF2書き込み用フォルダ)が自動で開かない・マウントされない原因は、Ubuntu側の自動マウント設定やファイルマネージャー(Nautilusなど)の挙動、あるいは権限の問題であることが多いです。 [
1,
2]
この問題を解決するための具体的な手順は以下の通りです。
1. 手動でマウント状況を確認・実行する
自動でウィンドウが開かない場合でも、OS側ではドライブとして認識されている可能性があります。
- 端末(ターミナル)を開き、デバイスが認識されているか確認します。
- リストの中に
Arduino というラベルや、FAT16/FAT32の小さなドライブ(数MB程度)が見つかるか確認します。 - マウントされていない場合は、手動でマウントを試します(例として
/media/arduino にマウントする場合)。sudo mkdir -p /media/arduino
sudo mount /dev/sdX1 /media/arduino # /dev/sdX1はlsblkで確認したデバイス名に変更
マウントできたら、ファイルマネージャーで /media/arduino を開いて .uf2 ファイルをドラッグ&ドロップまたはコピーします。
2. パッケージの追加(gvfs-backends 等)
Ubuntuの環境によっては、FATファイルシステムの自動マウントに必要なパッケージが不足している場合があります。
sudo apt update
sudo apt install gvfs-backends udisks2
インストール後、再度Wio Terminalをリセット2回(青いLEDが呼吸するように明滅するモード)にして、ファイルマネージャーにアイコンが出るか確認してください。 [
1]
3. 別解:コマンドライン(dd または cp)で直接書き込む
フォルダが開かなくても、デバイスとして認識されていればコマンドラインから直接書き込むことができます。
lsblk または dmesg コマンドで、接続されたストレージのパス(例: /dev/sdb や /media/...)を確認します。- マウントポイントが
/media/username/Arduino のように自動割当てされているが中身が見えない場合は、直接 cp コマンドで転送を試します。cp firmware.uf2 /media/username/Arduino/
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
まずはblinkから行ってみる
import (
"machine"
"time"
)
func main() {
// 内蔵LEDのピン(LED_BUILTIN)を出力モードに設定
led := machine.LED
led.Configure(machine.PinConfig{Mode: machine.PinOutput})
for {
// LEDを点灯
led.High()
time.Sleep(time.Millisecond * 500)
// LEDを消灯
led.Low()
time.Sleep(time.Millisecond * 500)
}
}
----------------------------------------------
package main
import(
"machine"
"time"
)
func main(){
button1 := machine.BUTTON_1
button1.Configure(machine.PinConfig{Mode: machine.PinInput})
led := machine.LED
led.Configure(machine.PinConfig{Mode: machine.PinOutput})
button1.SetInterrupt(machine.PinToggle, func(machine.Pin){
// button1が変化したときledを操作する
led.Set(button1.Get())
})
for {
// simulate heavy work
time.Sleep(1*time.Second)
}
}
--------------------------------------------------------
package main
import (
"bufio"
"fmt"
"os"
"time"
)
func main(){
time.Sleep(2 * time.Second)
fmt.Printf("hello tinygo\r\n")
msg := ""
fmt.Scanf("%s\r\n", &msg)
fmt.Printf("msg: %q\r\n",msg)
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan(){
fmt.Printf("you typed: %s\r\n",scanner.Text())
}
}