プログラムの解説(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);
  }
この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30