Arduinoの開発環境の作り方とスケッチ例の使い方

組み込みエンジニア

こんにちは、ENGかぴです。

Arduinoの開発環境であるArduino IDEのダウンロードとインストールの手順をまとめました。開発環境を構築した後はライブラリに対するスケッチ例を使いながら開発する方法をソフトウェアシリアルのライブラリを使って動作確認しています。

ArduinoUNOを対象にしていますが、Arduino環境下においては種類を問わず同じ考え方でソフト開発を行うことができます。

Arduino UNOを使って動作確認を行ったことを下記リンクにまとめています。

Arduinoで学べるマイコンのソフト開発と標準ライブラリの使い方

Arduino開発環境を作る

Arduinoの開発環境であるArduino IDEのダウンロードからインストールまでの手順をまとめていきます。対象OSはWindows10です。

ダウンロード

ダウンロード手順1
ダウンロード手順1

Arduino IDEは下記のリンクから取得できます。

Arduino IDEのダウンロードーDownload the Arduino IDE

Download the Arduino IDEのページから「Windows」を選択します。クリックするとContribute to the Arduino Softwareのページに遷移します。寄付する場合は「CONTRIBUTE&DOWNLOAD」を選択します。ダウンロードだけの場合は「JUST DOWNLOAD」を選択します。

ダウンロード手順2
ダウンロード手順2

ダウンロードが終わったら「arduino-1.8.16-windows.exe」をクリックしてインストールを開始します。(1.8.16は2021年9月時点のバージョンです。)

インストール

インストールは基本的になにも設定することなくNextを選択しても問題なく行えます。

インストール手順1
インストール手順1

「I Agree」をクリックします。

インストール手順2
インストール手順2

特に変更せずに「Next」をクリックします。

インストール手順3
インストール手順3

インストール先のフォルダーを選択して「Install」をクリックします。(特に設定する必要はありません)

インストール手順4
インストール手順4

インストールが終わったら「Close」をクリックして終了です。

USBドライバーがインストールされていない場合インストールの途中にUSBドライバーをインストールするかを問われることがあります。ArduinoボードをUSBで接続して開発を行うためUSBドライバーも迷わずインストールしましょう。

Arduino IDEを起動する

初期スケッチの画面
初期スケッチの画面

Arduino IDEを起動すると初期画面にからのスケッチが表示されます。setup()関数内に各種機能の初期化処理を記述します。loop()関数には処理内容を記述します。

初期起動時はボードとしてArduino Unoが選択されています。他のシリーズを開発する際はボードを対象のシリーズを選択します。ボード選択は「ツール」内のボードからArduino AVRの中から選択します。

初心者でもライブラリーの使い方が分かるようにスケッチ例が準備されています。

スケッチ例を確認する

// 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環境におけるコーディングの仕方を学習することができます。スケッチ例から使えそうなコマンドをコピーしながら実際にマイコンで動作させることで効率よく学習できます。

スケッチ例はファイル内にあるスケッチ例の欄に各種ライブラリを使用したスケッチ例を選択することができます。今回はスケッチ例である「DigitalReadSerial」の動作確認を行います。

7行目のSerial.Begin(9600)でシリアル通信のボーレートを9600bpsに設定しています。8行目のpinMode(pushButton,INPUT)で2ピンがINPUT(入力ピン)に設定されます。

15行目のdigitalRead(pushButton)で2ピンの状態をリードしています。17行目のSerial.println(buttonState)で読み込んだ2ピンの状態を文字列として改行コードをつけてシリアルモニタに表示します。

スケッチ例を確認しながら動作目的に合うライブラリのAPIを探しながらソフト開発を行うことができます。

自分で探して確かめてみる!これが一番の勉強法だと思います。

シリアル通信をシリアルモニターで確認する

シリアル通信の動作確認

DigitalReadSerialのスケッチ例とSoftwareSerialのスケッチ例を少し改造してシリアル通信をシリアルモニタを確認します。シリアルモニタの「送信ボタン」でUNOのRXに受信データが転送されます。そのデータをSoftwareSerialのRX(10:RX)に送信します。

DI7はプルアップされた入力ピン設定としポートの状態がLOWレベルになったとき、準備したデータをシリアルモニタ上に表示するようにしています。

シリアルモニタは文字列を表示するのでバイナリーデータを送信すると文字コードに置き換えた時文字化けしたような表示になることがあります。

準備したデータはバイナリーデータで「0x30、0x31、0x32、0x33」としています。(全体コードのbuf[]の部分)これらのバイナリーデータは文字コードの「0123」に相当するものであるためモニタ上で確認しやすくなります。

シリアルモニタはエディターの右上のマークをクリックするかツール欄からシリアルモニタを選択することで表示できます。

シリアルモニタの表示
シリアルモニタの表示

通常のSerialをシリアルモニタ用の表示に特化して使用するとデバッグしやすい開発になると思います。今回はボーレートを115200bpsにしましたが、ソフトウェアによるシリアル通信であるためシリアル通信専用のポートではありません。

SoftwareSerialを使用する場合はボーレートを高くしすぎないように注意してください。ボーレートが早くなるほどデータの取りこぼしが発生します。経験上9600bpsもしくは19200bps程度がよさそうです。

上記の例では115200bpsでも行けましたが、複数バイトになると頻繁にデータを取りこぼす現象が発生しやすくなります。

Arduino UNOはシリアル通信専用ポートが1つしかないので複数使用したい場合はボーレートを高くしすぎない設定でSoftwareSerialを使用するしかなさそうです。

全体ソースコード

以下のソースコードはコンパイルして動作確認をしております。チェックはしておりますがコメントなど細かな部分で間違っている可能性があります。参考としてお使いいただければと思います。

#include <SoftwareSerial.h>

#define PIN_DI1 7

bool flg= false;
uint8_t buf[]={0x30,0x31,0x32,0x33};

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {

    Serial.begin(115200);
    mySerial.begin(115200);
    pinMode(PIN_DI1,INPUT_PULLUP);
}

void loop() {

    if( !digitalRead(PIN_DI1)){
        if(flg ){
            flg = false;

            for(uint8_t i = 0; i < sizeof(buf);i++ ){
                mySerial.write(buf[i]);
                Serial.write(buf[i]);
            }
            Serial.println();
        }
    }
    else{
        flg = true;
    }

    if(mySerial.available()){
        Serial.println("mySerial-read");
        Serial.println(mySerial.read());
    }

    if( Serial.available()){
        mySerial.write(Serial.read());
    }
}

関連リンク

Arduinoのライブラリを使って動作確認を行ったことを下記リンクにまとめています。

Arduinoで学べるマイコンのソフト開発と標準ライブラリの使い方

Seeeduino XIAOで学べるソフト開発と標準ライブラリの使い方

ESP32-WROOM-32Eで学べるソフト開発と標準ライブラリの使い方

GEEKJOB-未経験からITエンジニアに【オンライン無料体験】

最後まで、読んできただきありがとうございました。

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