はじめに
この記事はこれからArduinoをつかった電子工作を始めたいという方や, プログラミングを始めてみたいけど 漫然と言語の勉強をするのは嫌だ という方向けに書いております.
プログラミングを目的に据えてしまって, 途中で挫折してしまうような後輩や友人を何人か見てきたので, 「Arduinoを動かす」という目的に対する, 手段としてのプログラミングを紹介できたらいいかな なんて考えて書いてます.
この記事では環境構築をメインにしています.言語編は完成次第公開します.
環境
- Arch Linux(スクリーンショット等は著者環境のものです.Windowsのものも追加しました.)
- Visual Studio Code
- Arduino Nano(ここでは互換品についても触れます.また,プログラムについてはArduino Uno等でもある程度共通です)
- Platform IO(VSCode拡張機能)
用意するもの
インストールするもの
Visual Studio Code
公式サイトで自分の使っているOSにあったものをダウンロードし,インストーラに従ってインストールを進めてください. もしくは,Linuxのパッケージマネージャを使い,
yay -S visual-studio-code-bin
というふうにインストールしても良いでしょう.(例はArchLinuxの場合)
日本語化については, 他記事で詳細に解説されているでしょうから, ここでは省きます.
PlatformIO
VSCodeの拡張機能よりインストールします.
四角が集まったような, 上から5つめの赤丸で囲まれたアイコンで「拡張機能」タブを開き, 黄色い矢印で示された検索窓に platformio と入力します.
おそらく上の方にPlatformIO IDEと書かれた拡張機能が出てくるかと思うので, そちらをインストールします.
インストールすると, 右下にぴょこって下の画像のようなメッセージが出てくると思います.これは「Pythonのポータブルインタプリタをダウンロードしています」となっていますが, いくつか必要なものをダウンロードしてインストールするようです.PlatformIOを導入したあとはしばらくオンラインに保ってこれらのパッケージが揃うまで待ちましょう.
必要なものが揃うと,次の画像のような表示がでてきます. 「Reload Now」をクリックするとVSCodeが再起動します.

これで, PlatformIOはインストールできました. 再起動後, VSCodeの左下に家のアイコンがあり, それをクリックすると下のようなPlatformIOのホーム画面が開くかと思います.
これでPlatformIOのインストールはOKです.
シリアルドライバ
こちらの項は, 安い互換品のArduino Nanoなどを買ったときに, CH340という安いUSBシリアルチップが載っている場合の手順です.
純正品をご購入の方は読み飛ばしてください.
Windowsの場合
Windowsの場合は,互換Arduinoをつなぐと, デバイスマネージャー(左下のWindowsアイコンを右クリック→"デバイスマネージャー")に画像のようにでてくると思います.("COM3"の部分は環境によって違うかもしれません)
ドライバを入れないと, Arduinoとのデータのやり取りができないので, ドライバをインストールします. "CH340" でググってみると,
天下の秋月電子通商さんのページがトップにでてきました. このページ にある"ドライバーソフト"のリンクからzipファイルをダウンロードします.
ダウンロード後, 解凍すると,CH341SER と INSTALLの2つのディレクトリがあります.このうち, CH341SERの中にある SETUP.EXEファイルを実行し, でてきた画像のようなウィンドウでINSTALLをクリックすることでドライバのインストールが完了します.
Linuxの場合
Linuxを使っている場合, ググって出てくるインストール用のドライバソースファイルのアーカイブでは上手にビルド出来ず, インストール出来ないという沼に陥ります. 公式にドライバのソースコードが作られたときのヘッダファイルが, 新しい現在のバージョンのLinuxカーネルには無いようなのです.
それでも, 諦めが悪くて貧乏で純正が買えない僕は, LinuxでなんとしてもやっすいArduino互換を使いたかったので探し回りました. ありました. すばらしき人類の英知 OSSの宝庫, GitHubに.
https://github.com/juliagoda/CH341SER
これがあればあとは早いです. ターミナル上で
sudo pacman -S arduino arduino-docs avr-binutils avr-gcc avr-libc avrdude #必要なパッケージをインストール
git clone https://github.com/juliagoda/CH341SER #Gitレポジトリをクローン
cd CH341SER #クローンしたディレクトリに移動
make #コンパイル
sudo make install #インストール
で使えるようになります.
Arduinoを動かそう
プロジェクトの作成
先程のPlatformIOのホーム画面の右側に, Quick Accessと大きく書いてある下, New Projectとあります. 新しいプロジェクトはここをクリックして作成できます.
クリックすると, Project Wizardが立ち上がり,この中でプロジェクト名, 使うArduinoの種類, フレームワークを指定して, プロジェクトの保存先を指定します.
Boardは使うマイコンボードの種類で, 今回僕はArduino Nano(安い互換品)を使うので画像のように指定しています.各自使うものに合わせて設定してください.
LocationのUse default locationのチェックを外すと, 自分のPC内の好きなところにプロジェクトを保存できます.
それぞれ指定したあと, 右下のFinishでプロジェクトのディレクトリが作られ, VSCodeで開きます.
最初はしばらく待たされるかもしれません. プロジェクトのディレクトリが開かれたら,左側にプロジェクトディレクトリの中身が表示されています.プロジェクトのディレクトリには,
- .pio/ - 隠れて表示されないかも
- .vscode/ - これも隠れて表示されないかも
- include/ - 重要 意図して含むインクルードファイルが置かれる
- lib/ - 重要 自分でプライベートなヘッダファイルとかを記述したときにここに置く
- src/ - 重要
main.cpp(一番メインのファイル)がここにある - test/ - ユニットテストやプロジェクトテストのためのディレクトリ
- .gitignore - Git(バージョン管理システム)の追跡対象外を定義するファイル.
- platformio.ini - PlatformIOの設定を記述するファイル.後で編集します
があります.まずはsrc/main.cppを開いてみましょう.(>srcのようになっているときはクリックすると展開されてvsrcのようになります)
# include <Arduino.h>
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
といった風になっているかと思います.ここに次のように書き加えてみましょう.
# include <Arduino.h>
void setup() {
// put your setup code here, to run once:
//ここに設定を書きます.
pinMode(13,OUTPUT);//基板の上にあるLのLEDにつながっている13番ピンを出力にします
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13,HIGH); //13番のピンの出力をHIGH(5V)にします
delay(1000); // 1000ms そのまま待機します
digitalWrite(13,LOW); //先程HIGHにした13番のピンをLOW(GND)にします
delay(1000);
}
コピペせずに打っていると,次のような補完が出てくることに気づくでしょう. 頭のいいVSCodeくんは途中まで書かれた内容から「これかな〜」ってのを出してくれるんですね.
Enterで青く選択されている候補が入力されます.べんりですね. 便利な機能を使いこなしながら入力したら,次はコンパイルします.
左下の家のマークで先程はHOMEを呼び出しましたが,その隣にチェックマークと右矢印が出ていますね.
これらのマークはそれぞれ,「コンパイル」と「書き込み」です.まずはチェックマークでコンパイルをします.文字が流れて,
===== [SUCCESS] Took X.XX seconds ===
Terminal will be reused by tasks, press any key to close it.
というような表示が下に出たら成功です.あなたの書いたプログラムはその通りにコンパイルされました.
コンパイルの次は書き込みですが, 書き込みの際にWindowsとLinuxでPlatformIOの設定が違います.
Windowsの場合
複数のArduinoをつないでいなければ, 単に右矢印をクリックで書き込みができると思います.
avrdude done. Thank you.
===== [SUCCESS] Took X.XX seconds =====
となれば書き込み成功です.
Linuxの場合
まず, LinuxのなかでArduinoがどこに置かれているか確認します.そして, 書き込みの許可を与えます.
ls -la /dev/serial/by-id #これでデバイスが表示されます.
# lrwxrwxrwx usb-XXXX_USB2.0-Serial-XXXX-port0 -> ../../ttyUSB0 というふうに表示がされると思います
sudo chmod 666 /dev/ttyUSB0 #ttyUSB0の部分は表示によって変えてください.書き込み許可を与えています
先程説明したplatformio.iniファイルを開いてください.
[env:nanoatmega328]
platform = atmelavr
board = nanoatmega328
framework = arduino
となっていると思います.このファイルの末尾に先程のchmod 666 XXXXXのXXXXXを思い出して,
[env:nanoatmega328]
platform = atmelavr
board = nanoatmega328
framework = arduino
upload_port = /dev/ttyUSB0
というふうに付け加えます. これでPlatformIOに「ここにArduinoがつないであるから書き込んでね」と伝えるわけです.
編集して保存したら, Windowsと同様に右矢印で書き込みが出来ます.
書き込みが出来たら,Lと書いてある端っこのチップLEDが1秒間隔で点滅を始めます.
おわりに
実はこのページの内容は, PlatformIOの公式チュートリアルの内容ほぼそのままなんです.より詳しい解説はこちらで見ることが出来ます.
「かさごでもわかる Arduinoで始めるプログラミング」は執筆中です. 完成したら公開します.
この記事は初心者が書いているので, ご意見, ご指摘等ありましたらコメントいただけると幸いです. 読んでくださりありがとうございました.









