Arduinoを用意して簡単なプログラミングをはじめよう

2013年2月12日(火)
藤原 敬弘

プログラムの解説(1)

続いて、先ほどのプログラムを解説していきます。まずは、Hello Worldプログラムから解説します。このプログラムを理解するには、ArduinoとPCの関係とArduinoにおけるプログラムの書き方を理解する必要があります。

初めに、ArduinoとPCの関係について解説します。次の図を見てください。

ArduinoとPCの接続イメージ(クリックで拡大)

ArduinoとPCはUSBケーブルで接続されています。このUSBケーブルを使って、ArduinoとPCは通信を行うことが出来ます。今回のプログラムを実行するにあたり、このUSBケーブルを通じて2種類のデータが転送されます。一つはプログラム本体、もう一つはHello Worldです。プログラムはPCからArduinoに送られ、ArduinoのCPUによって実行されます。Hello WorldはArudinoからPCに送られ、PCで実行しているIDEで画面に表示されます。Hello Worldの通信は、RS232C準拠のシリアル通信で行われるため、ArduinoのIDEでなくとも受け取ることが可能です。

続いて、Arduinoにおけるプログラムの解説です。

  // 初期化関数
  // プログラムが起動した時に、一度だけ呼ばれる。
  // ここで各ピンの設定や、シリアル通信の初期化などを行う。
  // 変数の初期化などもここで。
  void setup()
  {
  }
 
  // ループ関数
  // プログラムが実行中、繰り返し呼ばれる
  void loop()
  {
  }

Arduinoのプログラムは、大きく2つのブロックに分けることが出来ます。一つはsetup関数、もう一つはloop関数です。setup関数はプログラムが初めて実行された時に、一度だけ呼ばれます。loop関数はsetup関数の後に呼ばれ、この関数は繰り返し実行されます。Python(スクリプト言語)で書くと理解しやすいと思います。

  from time import sleep
  
  def setup():
    print 'called setup'
 
  i = 0
  def loop():
    global i
    i += 1
    print 'loop is called %i times.' % i
    sleep(1)
 
  if __name__ == '__main__':
    setup()
    while True:
      loop()

Arduinoのプログラムでは、setup関数で変数の初期化や、ライブラリの初期設定を行い、loop関数で入力のチェックや文字列の出力を行います。loop関数は繰り返し実行されるので、プログラムを書く際は一工夫必要です。

これら概要を把握した上で、プログラムを読むと簡単に理解出来ます。

  // 初期化関数
  void setup()
  {
    // PCとシリアル通信を行うための宣言。
    // 9800は通信のビットレート、通信相手によって設定を変更する。
    Serial.begin(9800);
  }
 
  // ループ関数
  void loop()
  {
    // シリアル通信を使って、Hello Worldという文字列をPCに送る。
    Serial.println("Hello, World");
 
    // 1000ms秒待つ。
    // これを入れないと、ものすごいスピードでHello Worldが送られてくる。
    delay(1000);
  }
FULLER株式会社

1986年生まれ。北海道苫小牧市出身。苫小牧工業高等専門学校卒業。
Fuller, Inc. CTO
Webプログラマ、よく利用する言語はPython。Pythonコミュニティによく出没する。
趣味でArduinoやRaspberry Piなどを使って、便利なものを自作する。

twitter: @wutali / github: https://github.com/wutali

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています