keiske-hongyo が 2021年11月27日13時28分11秒 に編集
初版
タイトルの変更
Seeed Xiaoを使用したTinyGoプログラミング~Lチカ編~
タグの変更
tinygo
Golang
XIAO
メイン画像の変更
記事種類の変更
セットアップや使用方法
本文の変更
## 1.はじめに マイコンを使用するときにライブラリが豊富なArduinoやC言語、最近ではMicropythonの等、マイコンを使用した回路に様々なプログラミング言語が使用されています。 私がマイコンを使用するときにはC言語を中心にプログラムをするのですが、最近ではライブラリが充実しているArduino(ほぼほぼ、C言語ですが・・・)や言語もわかりやすく近年、ライブラリが充実しているMicropythonも使用する頻度も高くなっています。 簡単に作りたいときには、ArduinoやMicropythonを使うことが多いのですが、ネットでマイコン開発用にRustやGo言語などが使われている例もあるので、自分の勉強のためにtinygoに取り組んでみました。 ## 2.tinygoとは tinygoはGo言語をマイコン開発向けにしたものです。現在の最新版は0.21.0です。 ## 3.開発環境 私は開発環境にJetBrain社のGolandを使用しているのですが、有料ソフトなので同じ環境の人はあまりいないと思うのでVisual Studio Codeを使用した開発について説明します。また、今回は、Windowsを使用した開発を説明しています。mac osやlinux等を使用する場合は若干異なるところがあると思います。 ### 3.1 tinygoのインストール tinygoのサイトへ行き、インストールしてください。インストールについては、[公式サイト](https://tinygo.org/)のページを参照してください。 ### 3.2 Visual Code Studioでの開発環境 まず、初めにtinygoが使用できるように拡張機能をインストールします。拡張機能を検索して、インストールしてください。 ![拡張機能のインストール](https://camo.elchika.com/7cddb171e8292a2efdf420b2b17ba3b9c64c28f3/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33646164353039642d616133622d343132302d616433622d6638623565376137366139332f66623261623336662d313931372d346131332d383232662d353864653164363531613762/) ## 4.プログラムの開発 開発環境が整ったら、プログラムの作成を行います。今回はSeeed XiaoのLEDを100ms間隔で点灯させます。 ```golang:Lチカプログラム package main import ( "machine" "time" ) func main() { led := machine.LED // LEDピンの設定 ピンを出力に設定 led.Configure(machine.PinConfig{Mode: machine.PinOutput}) for { led.High() // 出力をHighに設定 time.Sleep(100 * time.Millisecond) // 100ms待ち led.Low() // 出力をLowに設定 time.Sleep(100 * time.Millisecond) // 100ms待ち } } ``` ## 5.書き込み Visual Stduio Codeからターミナルを表示して、以下のコマンドを入力してください。 ```cmd:書き込み tinygo flash -target xiao -port com9 main.go ``` -target はマイコンの種類、-portはSeeedXiaoのcomポート番号を指定します。最後のmain.goは作成したプログラムのファイル名です。書き込みが終了すると、Seeed XaioのLEDが100ms間隔で点滅します。 ## 6.最後に 今回はtinygoの開発について紹介しました。tinygoも開発が進んでおり、XaioだけでなくRaspberry PI PicoやESP8266等様々なマイコンに対応しています。しかし、開発進度はマイコンによって異なっており、SPIやI2C、Wifiなどは使えない機能もあります。しかし、C言語以外で開発でき、モダンな言語に触れるのも楽しいと思います。この記事で少しでもGo言語を使用したマイコン開発に興味を持ってもらえたらうれしいです。