にわか大学生の技術ノート

「そうだ、グーグル先生に聞いてみよう」

Arduino,始めました

久しぶりの投稿

今回はO'REILLY社の「Arduinoをはじめよう」の中で,Windowsユーザーにはやさしくない説明があったのと単純に自分がミスって解決に時間を有したものがあったので,その備忘録。

 1. Processingのスケッチ?

Arduinoをはじめよう」第2版の第6章で,makezein.comから「peace」「love」「Arduino」の単語をカウントするスケッチとcdsセルやLEDを制御するArduinoのスケッチを書きます。

 このとき,単語をカウントする方のスケッチは「Processing言語を使います」と書かれています。ここで,書籍のサンプルコード(Example 08A)をArduino IDEにタイプしてもコンパイルエラーになります。

 そう,Processing言語はProcessing IDEに打ち込まないとダメなんです。

 まあ,「計画を立てる」ってところのProcessingの説明をよく読んでたら間違えることはないんでしょうけど,「Arduinoのインストール」みたいにURLと「ダウンロードしてね」を一言書いてくれていれば誰も悩まずにできるのになぁ。
 同じ場所で躓いた方は↓のURLから自分にあったファイルをダウンロードしてください。

 Download Processing - http://processing.org/download/

 

2. indexOf

 またまたProcessingについてですが,サンプルコードの終盤
 
 
 //フィードを1行ずつ読む
    while *1 != null)
    {
      StringTokenizer st = new StringTokenizer(data, "\"<>,.()[] ");  //それを分解
      while (st.hasMoreTokens ())
      {
        chunk= st.nextToken().toLowerCase() ;  //小文字に変換
 
        if (chunk.indexOf("love") >= 0 )   //"love"を見つけた?
          love++;                          //loveに1を加える
        if (chunk.indexOf("peace") >= 0)   //"peace"を見つけた?
          peace++;                         //peaceに1を加える
        if (chunk.indexOf("arduino") >= 0) //"arduino"を見つけた?
          arduino++;                       //arduinoに1を加える
      }
    }
 
で,赤でハイライトしている部分。
index0f(インデックス,ゼロ,エフ)ではなく,indexOf'(インデックス,オー,エフ)です。
 プログラムを打ち慣れていない自分は,この違いに気づくのにかなり時間が掛かりました。
 

3.HelveticaNeue-Bold-32.vlw

 これもProcessingについてですが,スケッチを書いた後にフォント生成する作業があります。書籍では,
フォント名「HelveticaNeue-Bold」,フォントサイズは「32」を指定して「OK」をクリックする。

と書いてあります。で,実際にフォントを作成しようとすると,Windowsユーザーは指定されたフォントが無いことに気づくはずです。
 調べてみると「HelveticaNeue-Bold」というのはMacにインストールされているフォントだそうです。そして,この筆者も当然ながらマカー。Macの素晴らしいフォントを使いたいに違いない。

 じゃあ,Windowsユーザーはどうするか?
 適当にインストールされているフォントに置き換えてください。Windowsにも「Swiss721BT-Bold」という似たフォントがあるので,それを使うのもいいと思います。
 使うフォントが決まりフォントを生成したら,プログラムの

font = loadFont("Swiss721BT-Bold-32.vlw");

の部分も忘れずに変更します。そうすると,問題なく実行出来るはずです。


 以上の3つが,私の躓いた部分です。他のプログラムは問題なくスラスラ出来ました。
 書籍の半分が「Arduino公式リファレンス」だったり,巻末に切り離して使えるリファレンスカードがあったりとArduino初心者でも十分に遊べる情報が書かれているので,これから色々作っていこうと思います。願わくば,今年の電子工作コンテストに出品を…


 

*1:data = in.readLine (