すずけんメモ

技術メモです

Arduinoをはじめよう、をやってみた

GWだし普段やってないことをやってみよう、ということでArduinoを触ってみた。Arduinoをはじめようという本と、それに合わさったキットをつかっている。*1

  • Arduinoをひとまず起動する
  • LEDをつけてみる
  • スイッチをon/offしてLEDをつけたり消したりしてみる
  • Cdsセルをつかって、LEDをつけたり消したりする
  • Cdsセルをつかって、LEDの光る強さを変えてみる
  • ブログから本文読み取って、単語数をもとに3つのLEDの光る強さを変える

ということをした。所要時間5時間くらい。組み立てつつ、写経しつつ進めた。たぶんProcessingとかこういう部品組むのとか慣れてる人だったらもっと早く終わると思う。

つかったもの

環境はOSX 10.9.5のMBP。

Arduinoをはじめようキット

Arduinoをはじめようキット

Arduinoをはじめよう 第2版 (Make:PROJECTS)

Arduinoをはじめよう 第2版 (Make:PROJECTS)

ここからIDEを落とす。Processingで書けるらしい。Cに変換されるとのこと。

Arduino - Software http://www.arduino.cc/en/main/Software

ArduinoIDEが付属している。こんな感じ。

f:id:suzu_v:20150504185604p:plain

ArduinoをはじめようキットだとArduino Unoというボードがついている。これをPCとUSBでつなぐと、Arduinoに電力が供給されて動くようになっている。ちなみに本には設定が必要だと書いてあったんだけど、USBでつないでArduinoIDEを起動したら勝手に設定が終わっていた。簡単。接続されているデバイスの中からArduinoを勝手に認識してくれているらしい。

f:id:suzu_v:20150504190012p:plain

コード書いてチェックボタンでverify、→ボタンでコンパイルとデプロイされる。便利。

まずLEDをつけたりスイッチをつけたり

Arduino IDEで新規ファイルを作成するとSTUBの手続きが生成される。

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

setup()マイコンボードに書き込まれた際に実行される処理。 loop() はその後繰り返し呼び出される。LEDをつけるには

void setup(){
  pinMode(13, OUTPUT); // LEDのポート番号
}

void loop(){
  digitalWrite(13, HIGH);
}

これだけでいい。ちなみに読み込みはINPUT用のpinをつくって、digitalRead()すればいい。するとボタンを押してLEDをつけたり消したりするのは以下のようにかける。

int val = 0;

void setup(){
  pinMode(13, OUTPUT); // LEDのポート番号
  pinMode(7, OUTPUT); // 例えば、ボタンのポート番号
}

void loop(){
  val = digitalRead(7); // ボタンの値を読み込む
  if (val == HIGH) {
    digitalWrite(13, HIGH); // LED on
  }
  else {
    digitalWrite(13, LOW); // LED off
  }
}

といったような感じでコードを書いていく。だいたいArduino側がapiを用意してくれているので、単純なdigitalRead()digitalWrite()だとさくさく書けるようだ。

こういった例がいくつかあって、以下の様に部品を組んで動かしていく。

f:id:suzu_v:20150504190456j:plain

f:id:suzu_v:20150504190506j:plain

微妙にはまったところ

6章にクラウドとの会話という章がある。ここで、ブログのフィードからテキストをもってきて、LEDライトのそれぞれの明るさに反映するという例になっている。

ブログのフィードを持ってきてシリアル通信でボードに送るところはProcessingで書かれている。ただこのままだと動かない。

  • そもそも http://blog.makezine.com/index.xml が403
  • Processingをインストールしてもそのままでは動かない。processing-java を入れる必要があり、それらの import 宣言が抜けている。

ということでちゃちゃっと直した。https://processing.org/download/からProcessingを落としてきてインストール。Tools -> Install "processing-java" でprocessing-javaをインストール。あとは以下のimport文をスケッチに足す。

import java.net.*;
import java.io.*;
import java.util.*;

あとはURLを適当に変えてあげる。私は代わりに String feed = "http://blog.arduino.cc"; とした。また、ここで例にあげられているlove, peace, arduinoの単語はブログによって頻度が違うので適当に選ぶといい。私はそれぞれwindows, make, arduinoとした。

で結果として以下のようになった。

f:id:suzu_v:20150504192155j:plain

ちゃんと光った。

感想

面白かった。シリアル通信できればProcessingで処理した部分は他の言語でも書けるだろうし、もっといろいろできそう。あと色んなセンサーを集めて遊んでみたくなった。

*1:2つともwishlistからプレゼントとしてもらったもの。harukasan, amacbeeありがとう!