Soraken’s Style

つれづれ

8pino - Arduino お作法の習得

さて、Arduino IDEがなんとかインストールできたので、これでプログラムを書いて目標へ近づきたいと思います。

(その前に、この記事は2ヶ月ほど前から書き始めてましたが、途中、いろいろとつまずいて、今に至る感じでした。読んでくれている方は少ないと思いますが、誰にともなく、遅くなってごめんなさい)

 

当面の目標: 基板上のLEDを点滅させる

 

 目標に向かってまったりやります。

ここで、改めてArduino IDEを立ち上げます。

f:id:soraken:20140817123701p:plain

ちょっと画面サイズ変えました。

これから何をすれば、LEDを点滅させるプログラムが書けるのか、さっぱり。なので、ちょっとIDEをいぢってみます。メニューバーの「ツール」のところに、「マイコンボード」というのがあったので、これを開いてみると、

f:id:soraken:20140817123902p:plain

どうやらターゲットになるボードの選択をするようになっているみたい。確か、8pinoのWebsiteに、8pinoはAdafroitのTrinket 8MHzと互換と書いてあったので、それを選んでみます。まぁ、これだけではIDE自体に何も変化がないようです。

 

他に何か使えそうなものはないかなとIDEのメニューを探していると、ファイルメニューの中に、「スケッチの例」というのがあって、その中を見てみると、「01.Basics」→「Blink」というのがありました。

f:id:soraken:20140817124340p:plain

ほう、これは使えそうだなぁ。ということで、早速選択してみると、こんな感じのウィンドウが開きます。

f:id:soraken:20140817124818p:plain

このサンプルコードを見ると、まず最初にLEDのPin番号を指定しています。LEDを点ける端子番号ですが、8pinoだと確か出力端子が4つしかなかった気が。つまり、このサンプルコードは8pino(少なくともTrinket 8MHz)用に作成されてはいないということですね。

 

サンプルコード全体を見渡してみて、まず、C言語と似ていると感じます。ただ、C言語でありがちな"main"関数ってないんですね。代わりに、"setup"関数と"loop"関数があるようです。この2つ以外にこの2つの関数を呼び出しているところがないので、おそらくこの2つは8pinoにアップロードすると、(リセット後に)自動的に動作するものだろうと思います。(よくわからないので、ということにしておこう)

 

コード自体は詳しく知らなくても何となくわかる感じでいいですね。setup関数内で、出力端子の設定をやっているようですし、loop関数は名前からして実際の動作(Sequence)を書いておく場所だろうと思います。実際、"digitalWrite"と"delay"の2つの関数で、間隔を置いて出力ピンをOn/Offしているように見えます。loop関数内にwhile、forなどのループを示すようなコードがないので、おそらくloop関数自体が繰り返されるのだと思います。

 

特に怪しい(というか訳の分からない)コードはなさそうなので、またまた乱暴にこのまま使って、これを8pinoにアップロードしたいと思います。ただし、先程も書いたように、8pinoにはpin13なんてありません。一方、8pinoの回路図を見ると、GPIO#1に基板上のLEDがつながっている事がわかりましたので、これを使うことにしたいと思います。先程のコードを1カ所だけ書き換えて、

 int led = 1;

ってして、コンパイルしてみましょう。

Arduino IDEのメニューから「スケッチ」→「検証・コンパイル」を選択してみました。すると、思惑通り、コンパイルが始まって、うまくコンパイルができたみたいです。

f:id:soraken:20140817142741p:plain

 では、このまませっかくですので、書き込んでしまいましょう。

ここで8pinoをUSBケーブルでMacに接続します。8pinoは接続してすぐがリセット状態になるらしく、その状態だとボード上の赤色LEDがゆっくり点滅しています。この状態なら書き込めそうだと思ったので、Blinkのウィンドウの左上にある「→」ボタンを押してみると、下のログメッセージにいろいろと表示されて、何となく書き込み作業が行われているように見えます。

が、、、。

メッセージをよく見ると、無茶苦茶errorが発生しています。

f:id:soraken:20141004235609p:plain

ふむ。何か設定が悪いのかしら。。。IDEについてほとんど調べもせずにいきなり書き込もうとしたのが無謀だったようです。

 

Arduino IDEのメニューを見てみると「ツール」というところがこんな感じになってます。

 

ほうほう。先程設定した「マイコンボード」の他に、「シリアルポート」、「書込装置」なども選択するようになっていますよ。まぁ、確かに、書込み手段やデバイスの設定等があってもおかしくないですね、っていうか普通はありますよね。

 

ところで、ここでふと思いました。「あれ、USB経由で書き込むってことは、何かデバイスドライバみたいな物を選択したりとかないのかな?」そういう目で「ツール」→「シリアルポート」を選択してみると、「/dev/ttyほにゃらら」みたいなリストが出てきます。これって、、、、Macのデバイスマウントみたいね、、、、」

ってことは、8pinoをMacに接続する時に使用されるなにかのデバイスがあるべきですね。これを見る方法は、と。。。ネットをググってみてわかりました。Mac標準で使える「ターミナル」を起動して、「ls /dev/tty*」とコマンドを実行してみます。

f:id:soraken:20141006225500p:plain

こんな感じで、デバイスのリストが表示されます。ネットによると、「/dev/usb〜」とかいうのが8pinoになりそうなんですけど、残念ながら見つかりません。

 

ここまでの方法を、Macのポートを変えたり、途中にUSB2.0 Hubを挟んだりして試してみましたが、結局だめ。

 

う〜ん、Mac Proだとこの辺がうまく接続されないのかなぁ。謎ですが、一度、ここでMacは諦めて、Windowsでやってみることにしました。

 

改めて、AdafruitのサイトからArduino IDE(ただし今度はWindowsバージョン)をダウンロードし、ついでにWindows特有のデバイスドライバもダウンロードしてインストールしてみました。この辺の事はAdafruitのサイトに書いてあったので、特につまずく事なく進めました。

 

で、先程と同じように、Arduino IDEでBlinkサンプルプログラムを作成して、8pinoを(USB2.0 Hubを介して)接続して、書き込むと、、、、。成功!! 

f:id:soraken:20141007225624p:plain

調子に乗って、"SOS"のモールス信号で光らせてみました。(上の図のプログラムにはオシロにトリガをかけるためにGPIO#2を使ったりしてますが、基本的にはBlinkとほぼ同等です。)

f:id:soraken:20141007231629p:plain

 という訳で、「Macで」という点ではまだ課題が残りましたが、とりあえず、当初の目的通り、「LEDを点滅させる」まではできました。一息です。