2026年8月29日土曜日

tinygo wioterminal(blink,button interrup,usb cdc)

tinygo build -target=wioterminal -o wioterminal_blink.uf2 main.go flashうまくいかん

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

UbuntuでWio Terminalをブートローダーモード(リセット2回)にした際、ポート(シリアル)としては認識されるものの「Arduino」という名前のマスストレージ(UF2書き込み用フォルダ)が自動で開かない・マウントされない原因は、Ubuntu側の自動マウント設定やファイルマネージャー(Nautilusなど)の挙動、あるいは権限の問題であることが多いです。 [1, 2]
この問題を解決するための具体的な手順は以下の通りです。
1. 手動でマウント状況を確認・実行する
自動でウィンドウが開かない場合でも、OS側ではドライブとして認識されている可能性があります。
  1. 端末(ターミナル)を開き、デバイスが認識されているか確認します。
    bash
    lsblk
    
    コードは注意してご使用ください。
  2. リストの中に Arduino というラベルや、FAT16/FAT32の小さなドライブ(数MB程度)が見つかるか確認します。
  3. マウントされていない場合は、手動でマウントを試します(例として /media/arduino にマウントする場合)。
    bash
    sudo mkdir -p /media/arduino
    sudo mount /dev/sdX1 /media/arduino  # /dev/sdX1はlsblkで確認したデバイス名に変更
    
    コードは注意してご使用ください。
    マウントできたら、ファイルマネージャーで /media/arduino を開いて .uf2 ファイルをドラッグ&ドロップまたはコピーします。
2. パッケージの追加(gvfs-backends 等)
Ubuntuの環境によっては、FATファイルシステムの自動マウントに必要なパッケージが不足している場合があります。
bash
sudo apt update
sudo apt install gvfs-backends udisks2
コードは注意してご使用ください。
インストール後、再度Wio Terminalをリセット2回(青いLEDが呼吸するように明滅するモード)にして、ファイルマネージャーにアイコンが出るか確認してください。 [1]
3. 別解:コマンドライン(dd または cp)で直接書き込む
フォルダが開かなくても、デバイスとして認識されていればコマンドラインから直接書き込むことができます。
  1. lsblk または dmesg コマンドで、接続されたストレージのパス(例: /dev/sdb/media/...)を確認します。
  2. マウントポイントが /media/username/Arduino のように自動割当てされているが中身が見えない場合は、直接 cp コマンドで転送を試します。
    bash
    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())
    }
}

0 件のコメント:

コメントを投稿