Arduino IDE setup関数とは?

AruduinoIDE関数
Arduino
記事内には広告が含まれています。

Arduino IDE setup関数とは?

setup関数は、Arduinoプログラム(スケッチ)の開始時に一度だけ実行される特別な関数です。主に初期設定(ピンモードの指定やシリアル通信の開始など)を行うために使用されます。以下に、setup関数の役割や使い方について、サンプルスケッチと共に詳しく説明します。


基本的な構造

Arduinoプログラムには必ずsetup()loop()の2つの関数が必要です。setup関数は、プログラム開始時に一度だけ実行され、loop関数はその後繰り返し実行されます。

void setup() {
  // 初期設定を行うコード
}

void loop() {
  // 繰り返し実行するコード
}

setup関数の役割

setup関数の主な役割は次の通りです。

  1. ピンモードの設定
  • pinMode()関数を使用して、デジタルピンを入力または出力として設定します。
  1. シリアル通信の開始
  • Serial.begin()でシリアル通信を設定することで、ArduinoとPC間でのデータの送受信が可能になります。
  1. 外部機器やセンサーの初期化
  • 使用するセンサーやディスプレイなどのデバイスの初期設定を行います。

サンプルスケッチ 1: LEDの初期設定

以下は、内蔵LEDを使った簡単なサンプルです。このスケッチでは、setup関数でLEDピンを出力モードに設定し、loop関数で点滅させます。

const int ledPin = 13; // LED接続ピン(Arduinoの内蔵LEDはピン13)

void setup() {
  pinMode(ledPin, OUTPUT); // LEDピンを出力モードに設定
}

void loop() {
  digitalWrite(ledPin, HIGH); // LEDを点灯
  delay(500);                 // 0.5秒待機
  digitalWrite(ledPin, LOW);  // LEDを消灯
  delay(500);                 // 0.5秒待機
}

説明

  • pinMode(ledPin, OUTPUT); によって、ledPin(ピン13)を出力ピンとして設定します。
  • loop関数では、500ミリ秒ごとにLEDを点滅させています。

サンプルスケッチ 2: シリアル通信の初期化

次に、シリアルモニタを使ってArduinoのデータをPCに表示するサンプルです。setup関数でシリアル通信を初期化し、センサーのデータを表示します。

const int sensorPin = A0; // センサーの接続ピン(アナログ0)

void setup() {
  Serial.begin(9600); // シリアル通信を9600bpsで開始
  pinMode(sensorPin, INPUT); // センサーを接続するピンを入力モードに設定
}

void loop() {
  int sensorValue = analogRead(sensorPin); // センサーの値を読み取る
  Serial.println(sensorValue); // 読み取った値をシリアルモニタに出力
  delay(1000); // 1秒ごとにデータを送信
}

説明

  • Serial.begin(9600); により、9600bpsの速度でシリアル通信が開始されます。
  • analogRead(sensorPin); でセンサーの値を読み取り、Serial.println(sensorValue); でその値をシリアルモニタに表示します。

サンプルスケッチ 3: ボタンの初期設定

次の例では、ボタンが押されたかどうかをチェックし、押されたらLEDを点灯させるプログラムです。setup関数でLEDピンを出力、ボタンピンを入力モードに設定します。

const int ledPin = 13;     // LEDのピン
const int buttonPin = 7;   // ボタンのピン

void setup() {
  pinMode(ledPin, OUTPUT);      // LEDピンを出力モードに設定
  pinMode(buttonPin, INPUT_PULLUP); // ボタンピンをプルアップ付き入力モードに設定
}

void loop() {
  int buttonState = digitalRead(buttonPin); // ボタンの状態を読み取る

  if (buttonState == LOW) { // ボタンが押されたら
    digitalWrite(ledPin, HIGH); // LEDを点灯
  } else {
    digitalWrite(ledPin, LOW); // ボタンが押されていなければLEDを消灯
  }
}

説明

  • pinMode(buttonPin, INPUT_PULLUP); は、ボタンピンをプルアップ付き入力モードに設定します。これにより、ボタンが押されていないときはHIGH、押されたときはLOWになります。
  • loop関数でボタンの状態を読み取り、押された場合のみLEDを点灯させます。

サンプルスケッチ 4: 複数のセンサーやデバイスの初期化

複数のデバイス(例えば、温度センサーとLCDディスプレイ)を使用する場合も、setup関数でそれぞれの初期設定を行います。

#include <LiquidCrystal.h> // LCDディスプレイ用のライブラリ

const int tempSensorPin = A1;   // 温度センサーのピン
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // LCDディスプレイのピン接続

void setup() {
  Serial.begin(9600);           // シリアル通信を開始
  pinMode(tempSensorPin, INPUT); // 温度センサーを入力モードに設定
  lcd.begin(16, 2);             // LCDディスプレイのサイズを設定(16x2)
  lcd.print("Temp Sensor Test"); // LCDに初期メッセージを表示
}

void loop() {
  int sensorValue = analogRead(tempSensorPin); // 温度センサーの値を読み取る
  float temperature = (sensorValue * 5.0 / 1023.0) * 100; // 温度に変換

  lcd.setCursor(0, 1);            // LCDの2行目にカーソルを移動
  lcd.print("Temp: ");
  lcd.print(temperature);         // 温度を表示
  lcd.print(" C");

  Serial.print("Temperature: ");   // 温度データをシリアルモニタにも表示
  Serial.print(temperature);
  Serial.println(" C");

  delay(1000); // 1秒ごとにデータを更新
}

説明

  • Serial.begin(9600); でシリアル通信を開始し、lcd.begin(16, 2); でLCDディスプレイのサイズを設定します。
  • 温度センサーからのデータを読み取って温度に変換し、LCDとシリアルモニタに表示します。

まとめ

setup関数はプログラム開始時に一度だけ実行され、主にハードウェアの初期設定を行います。これにより、loop関数でデバイスを正常に操作できるようになります。各種ピンモードの設定やデバイスの初期化は、必要に応じてsetup関数内で行いましょう。

コメント

タイトルとURLをコピーしました