Arduinoに興味があったので...

こんにちは。ゴルフおじさんです。

前からArduinoというものに興味があったので、シルバーウィークに買ってみました。こういった電子工作については中学の授業でやったなーくらいの素人なのですが、環境がすごく整っておりとてもわかりやすく進めることができました。

Arduinoとは?

マイコンボードの1種なのですが、オープンソースハードウェアという考えで作られておりArduinoで作成された回路や基盤の設計は公開され、だれでもそれらを流用して使うことができます。

Arduino - Wikipedia

Arduinoで何ができるの?

通常のマイコンボードと同様に、入力と出力をマイコンボード上に組み込まれたプログラムで制御し、様々な動作を実現することができます。ボタンを押したらブザーが鳴るとか単純なものから、各種センサーを付けてモニタリング装置やロボットなどの複雑なものなど、もう色々できます。

f:id:apollo_13:20150930121703p:plain

Arduinoを調達

早速Amazonさんで物色。で購入したものがこちら。 ArduinoUnoの他、LEDやら色々入っていてまさにエントリーキット。

f:id:apollo_13:20150930224630j:plain f:id:apollo_13:20150930224625j:plain

開発環境

Arduinoにはプログラムを開発するIDEArduinoから無償で提供されています。

ArduinoのサイトからソフトをダウンロードしてPCにインストールします。

https://www.arduino.cc/

Windows,Mac,Linuxとそれぞれそろっています。 今回はWindowsなのでインストーラーを使って簡単にインストールできました。ArduinoをUSBで繋ぐドライバもこの時に入れてくれます。

インストールが終わったら早速起動してみます。開発環境の起動画面はこんな感じ。 f:id:apollo_13:20150920131717j:plain

メニューの意味はこんな感じです。

f:id:apollo_13:20150920132939j:plain

Arduinoのプログラムのことをスケッチといいます。言語はC/C++で記述します。

動かしてみる

環境も整ったところで、 今回は細かな説明は後にして早速Arduinoを動かしてみましょう。 まずはArduinoでLEDを点滅させてみます。(電子工作のHelloWorld的な?)

Arduino

ArduinoにLEDを取り付けます。 LEDの長いピンの方をデジタル入出力ポートの13に、短い方をGNDに差し込みます。長い方をアノード、短い方をカソードといいます。アノードの方が+となります。へぇ ※本来は接続される機器を壊さないよう抵抗を使って電圧を制御してあげる必要があります。 f:id:apollo_13:20150920141425j:plain

USBケーブルを使いPCとArduinoを繋ぎます。

IDE上からもArduinoが接続されていることが確認できます。 f:id:apollo_13:20150920134405j:plain

スケッチを作成

LEDを点滅させるというスケッチを記述するのですが、スケッチの例のBlinkというサンプルをそのまま使います。 ファイル>スケッチの例>Basic>Blinkを選択します。エディタ上にはLEDを点滅させるBlinkというスケッチが呼び出されます。

f:id:apollo_13:20150920133951j:plain スケッチの例の中にはサンプルがたくさんあり、何かを作る時の参考にできます。こういうのはありがたいですね。

読み込んだスケッチの内容を少し読んでいきます。

スケッチの中にはsetup()とloop()が2つ記述されており。まずsetup()の方ですが、

void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}

と書かれています。setup()は初期化の処理にあたり、どの関数よりも先に1度だけ実行される関数です。この中にあるpinMode()という処理でデジタル入出力ポートの13番から出力するよということを表しています。なぜ13かというと、さっきArduninoにLEDを取り付けたときに13に刺したからです。

次にloop()の方ですが、

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

loop()は中に書かれた内容を繰り返し実行し続けます。

degitalWrhite(13, HIGH);でデジタル入出力ポート13に対して電圧をかけLEDを点灯させ、逆にdegitalWrhite(13, LOW);ではデジタル入出力ポート13にかけた電圧を落としてLEDを消灯させています。 そしてdelay()でこの2つの処理の間にインターバルを作りLEDを点滅させています。delay()の単位はミリ秒です。

setup()とloop()は必須関数となっており使わない場合でも、必ずスケッチの中に記述しておく必要があります。

Arduinoの実行

このスケッチをコンパイルしてArduinoに送り動かしてみます。

IDEのメニューにある「マイコンボードに書き込む」ボタンをクリックします。コンパイルマイコンボードに書き込みが行われ、、、

LEDが付きました!!

f:id:apollo_13:20150920140950j:plain

delay(1000)の所を下のように少しいじって。再度マイコンボードに書き込んでみます。

  delay(500);              // wait for a second

点滅が早くなりました。プログラムに書いた処理がArduino上で正しく動作していますね。

f:id:apollo_13:20150528133236p:plain:w200

ちなみにArduinoで終了という概念はないそうです。止めたい時はUSBから抜いて電源の共有を断ってやれば止まります。今回の動きはArduinoのメモリ上に書き込まれていて、USBに再度つないで電源が入ると自動的に処理が開始されます。

今回はサンプルでしたが、とても簡単にArduinoを動かすことができました。今後はArduinoや電子工作の基本について勉強しつつ色々なものを試したいと思います。

ゴルフおじさんスタンプも絶賛販売中です!!

line.me