• Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • HOME
  • Arduino
    • Arduino初心者編
    • Arduino基礎編
    • Arduino応用編
    • Arduino実践編
  • Raspberry Pi
  • microbit
  • XBee
  • Scratch
  • Contact Us
  • Privacy Policy

STEMSHIP

ものづくりを通して、科学を学ぼう!

現在の場所:ホーム / Arduino / Arduino初心者編 / Arduino初心者編:スケッチ例を使用したハローワールド

Arduino初心者編:スケッチ例を使用したハローワールド

2020年7月3日 by STEMSHIP コメントを書く

はじめてArduinoを動かす場合、IDEのスケッチ例を使用すると簡単にプログラムが作れます。例えば、LEDの点滅・ボタン・シリアル通信など。Arduinoにはいくつかのモデルがあります。ここではUnoモデルとMegaモデルを取り上げます。両者の最大の違いは、速度、メモリ量、ピンの数と種類です。USBで接続するものはTypeBのUSB接続のものもあれば、TypeBのMicro-USB接続のものもあります。また、リセットボタンやLEDの位置もモデルやバージョンによって異なります。今回は、どのモデルにも共通するピンや機能を使用します。

Arduino Uno

  1. 電源および通信のための USBポート
  2. 代替電源(9V~12V、センターピンは+)
  3. 電源ピン(出力と入力)。
  4. アナログ入力端子(デジタルとして使用可能)
  5. デジタル入力/出力ピン(〜はPWMデジタル出力を意味します)
  6. プロセッサ。
  7. リセットボタン
  8. LED を表示します。RXとTXはシリアル通信(USBポート)、Lは13番ピンの値を示します。

ブレッドボード

ブレッドボードは、部品やジャンパー線を挿して、回路のプロトタイプを開発する時に使用します。

スケッチ例を使用したハローワールド

Arduino IDE(https://Arduino.CC/en/Main/Software)をインストールし、USBケーブルで接続したら、接続されているシリアルポートを選択することから始めます(通常は1つしかないでしょう)。

次に、Arduinoのモデルを選択します。場合によっては(Arduino Megaなど)、バージョンを選択する必要もあります。

Blink

Arduino IDEにはいくつかの例が付属しています。まずは、13番ピンに接続されているLED基板上の内蔵LED(L)を点滅させるBlinkの例から見ていきましょう。この例では、2つの関数を使用しています。

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Setup()
この関数では、使用しているハードウェアを初期化します。この関数はArduinoの電源が入っているときに一度実行されます。

Loop()
この関数には、目的の関数を実行するプログラムを入れます。この関数の最後には、再びこの関数が呼び出されます(つまり、無限に繰り返されます)。

プログラムを作成した後、プログラム記述の検証をしなければなりません。検証は、ツールバーのチェックマークのボタンを押すと実行されます。プログラムをArduinoに書き込むには、ツールバーの矢印マーク(→)のボタンを使います。書き込み中は、IDEの下部にいくつかのメッセージが表示され、ボード上のRXとTXのLEDが点滅します。アップロードが完了すると、プログラムは自動的に開始されます。この場合、ボード上のLED Lが点滅します。また、13番ピンGND間に、LEDと10kΩ抵抗を入れると、同様に点滅します。delay()を調整して、LEDの各状態(オン/オフ)の持続時間を変更することができます。delay()の単位はミリ秒です。

Button

ボタンを押してLEDを点灯させる回路を作ります。まず、ボタンと10kΩ抵抗で以下の回路を実装します。ボタンを押していないときは、2番ピンとGNDピンが10kΩ抵抗を通して接続されています(このような抵抗をプルダウン抵抗という)。ボタンが押されたときは、5Vラインと接続されます。

続いてButtonの例を開きます。アップロード後、ボタンが動作してLEDが点灯します。

// constants won't change. They're used here to set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
  } else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
}

DigitalReadSerial

先ほどの回路を使用して、USB / シリアル接続を介してボタンの状態をコンピュータに送信します。DigitalReadSerialの例を開きましょう。

// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2;

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  // make the pushbutton's pin an input:
  pinMode(pushButton, INPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input pin:
  int buttonState = digitalRead(pushButton);
  // print out the state of the button:
  Serial.println(buttonState);
  delay(1);        // delay in between reads for stability
}

Arduinoにプログラムを送った後、メニューのツール→シリアルポートを使ってUSB / シリアルポートに何が送られてくるか見てみましょう。

この機能は、プログラムをデバッグするときにも利用できます。デバッグテキストを送信する場合は、たとえば、次のような行を追加します(常に大文字と小文字を区別します)。

if ( buttonState ) Serial.println ( "ON" ); 
else Serial.println ( "OFF" );  
delay( 1 ); 

スイッチ

前の回路にリレー(外部機器を制御できるスイッチとして機能する)を追加してみましょう。

関数 setup() の後に追加します。

pinMode ( 12 , OUTPUT );

関数 loop() の後に追加します。

digitalWrite ( 12 , ! buttonState )
// constants won't change. They're used here to set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);

  // Relay
  pinMode ( 12 , OUTPUT );
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // Relay
  digitalWrite ( 12 , ! buttonState );
}

12番ピン(リレー)の値が逆になっているのはなぜでしょうか?これから使用するリレーは、信号ピンが0Vを受信するとアクティブになり、5Vを受信すると(または電源が入っていない)非アクティブになります。すべてのリレーがこのようになるわけではありませんので、使用する前にテストしてみてください。

センサ

前の回路を使用して、ピン A0 にアナログ温度センサーを追加します。次に、サンプルの AnalogReadSerial をロードします。センサーの値を見るために、再びシリアル・モニターを開きます。アナログ・ピンの読み取り(A0、A1など)は、0から1023の間の値を返します(つまり、0Vから5Vの間の直線的な値)。しかし、選択したセンサーは、この範囲の一部の値しか表示しない可能性があります。センサーの最小値と最大値を記録して、プログラムを調整してください。

前の回路を使って、リレーを作動させるためのルールを定義します。例えば、温度センサーを使用している場合、温度が高くなったときに、リレーを有効にしてランプを点灯させたいとします。関数loop()の最後に追加します。

if ( sensorValue > 500 || digitalRead ( 2 )) { // Relay On
 digitalWrite ( 12 , LOW ); 
}
else { // Relay Off
 digitalWrite ( 12 , HIGH ); 
} 
// constants won't change. They're used here to set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin

void setup() {
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);

  // Relay
  pinMode ( 12 , OUTPUT );
}

void loop() {
  int sensorValue = analogRead(A0);

  // Relay
  if ( sensorValue > 100 || digitalRead ( 2 )) { // Relay On
    digitalWrite ( 12 , LOW ); 
  }
  else { // Relay Off
    digitalWrite ( 12 , HIGH ); 
  }
}

閾値(ここでは100)と演算子( >or <)はセンサーによって異なる場合があります。期待した動作をしない場合は、センサーのデータシートで特性を確認し、プログラムを修正してください。

Filed Under: Arduino初心者編

Reader Interactions

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。

最初のサイドバー

CONTACT US

  • Facebook
  • Twitter
  • Youtube

More to See

Arduinoベースのセンサノード:XBeeデータ収集ノードの製作

2021年9月27日 By STEMSHIP

Arduinoベースのセンサノード:Arduinoを使った温度センサの作製

2021年9月21日 By STEMSHIP

XBeeモジュールとBMP280センサを使用してデータ収集する

2021年5月31日 By STEMSHIP

XBeeモジュールでMicroPythonを使ってセンサを読み取る

2021年5月24日 By STEMSHIP

XBeeモジュールでセンサを読み取る:センサノードの設定と測定

2021年5月17日 By STEMSHIP

カテゴリー

  • Arduino (44)
    • Arduino初心者編 (15)
    • Arduino基礎編 (11)
    • Arduino実践編 (4)
    • Arduino応用編 (11)
    • Arduino番外編 (3)
  • MakeyMakey (1)
  • microbit (11)
  • Raspberry Pi (13)
  • Scratch (6)
  • STEM教育 (5)
  • XBee (15)
  • ものづくり教育 (2)
  • 子供の教育 (2)
  • 科学 (6)
  • 算数 (5)

Tags

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Footer

最近の投稿

  • Arduinoベースのセンサノード:スケッチ(プログラム)の作製
  • Arduinoベースのセンサノード:XBeeデータ収集ノードの製作
  • Arduinoベースのセンサノード:Arduinoを使った温度センサの作製
  • XBeeモジュールとBMP280センサを使用してデータ収集する
  • XBeeモジュールでMicroPythonを使ってセンサを読み取る

タグ

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Search

2023年3月
月 火 水 木 金 土 日
 12345
6789101112
13141516171819
20212223242526
2728293031  
« 10月    

Copyright © 2023 · STEMSHIP.COM