PR

【mBotプログラミング例④】変数を使おう(Arduino編)|C言語

Arduino(C/C++)
この記事は約6分で読めます。

今回は、mBotプログラミングシリーズ(Arduino編)の第4回です。

この回では、「変数」について学びます。
変数は、プログラム内でデータを一時的に保存し、必要なときにそのデータを活用するために欠かせないものです。
mBotのようなロボットを制御する際、センサーの値を読み取ったり、モーターの速度を調整したりするために変数が大いに役立ちます。

これから、変数の定義と使い方について詳しく学び、実際にmBotでプログラムを作成してみましょう。

目標

  • 変数とは何かを理解する
  • 変数の型を理解する
  • 変数を使ってプログラムする

Arduinoプログラムファイルの作成

ここでは、プログラムファイルをイチから作成していきます。
Arduino IDEを立ち上げ、ファイル -> 新規スケッチで真っ新なプロジェクトを用意しましょう。

事前にmBotのArduinoライブラリを導入しておいてください。
ライブラリの導入に関しては、次の記事を参考にしてください。

変数の基礎

変数とは

変数は、プログラム内で値を保存するための名前付きのメモリ領域です。
数値や文字列などのデータを保存できます。

変数宣言

変数を使う際は、変数の型変数名を「宣言」する必要があります。
Arduino(C++)では次のように変数宣言を行います。

int speed = 100;  // 速度を表す変数speedを定義し、値を100に設定
char grade = 'A'; // 評価を表す変数gradeを定義し、値を'A'に設定

変数の宣言は通常、ファイルや関数の一番最初で行います。
変数宣言の時に値を代入することにより、変数の初期化を行うこともできます。

上記の例では、int型のspeedという名前の変数に数値の100を、char型のgradeという名前の変数に文字’A’をそれぞれ保存しています。

記述の意味は次の通りです。

記述内容意味
int、char変数の型詳細は後述
speed、grade変数変数名は任意に記述可能です。
一部制限は後述
=代入右の値を左の変数へ代入します
(数学の「=」とは意味が異なります)
100、’A’変数へ代入する「数値」や「文字列」

変数の型

変数には、保存するデータの種類(型)があり、それに応じて宣言の仕方が異なります。
以下に主な型をいくつか紹介します。

説明
int整数型整数42
uint8_t符号無し8ビット整数型0~255の符号無し整数200
uint16_t符号無し16ビット整数型0~65535の符号無し整数3000
float浮動小数点型小数3.14
char文字型1つの文字’A’
String文字列型文字列’Hello’

「int」は32ビット符号あり整数型で、-2,147,483,648から2,147,483,647までの範囲の数値を扱えます。
「uint8_t」は8ビット符号無し整数型で、0から255までの範囲です。メモリ使用量が少なく、限られた範囲の数値を扱う場合に便利です。

変数名のルール

変数名は、分かりやすく、意味のある名前を付けることが重要ですが、つけ方には制限があります。

  • アルファベット(A〜Z,a〜z)、数字(0〜9)、アンダーバー(_)のみ
  • すべて半角(全角は不可)
  • 第1文字目は必ずアルファベットまたはアンダーバー(数字は不可)
  • if、else、intなどの予約語は使用できない
autobreakcasecharconst
continuedefaultdodoubleelse
enumexternfloatforgoto
ifinlineintlongregister
restrictreturnshortsignedsizeof
staticstructswitchtypedefunion
unsignedvoidvolatilewhile_Alignas
_Alignof_Atomic_Bool_Complex_Generic
_Imaginary_Noreturn_Static_assert_Thread_local
予約語一覧

変数を作ってみよう

実際に変数を使ったプログラムを書いてみましょう。
ここでは、mBotのモーターの速度を変数で制御するプログラムを作成します。

#include <MeMCore.h>

MeDCMotor motorL(M1); // 左モーターを初期化
MeDCMotor motorR(M2); // 右モーターを初期化

void setup() {}

void loop() {
  int speed = 100;    // 変数speedを定義し、速度を100に設定
  motorL.run(-speed); // 左モーターを設定した速度で動かす
  motorR.run(speed);  // 右モーターを設定した速度で動かす
  delay(2000);        // 2秒間待つ

  speed = -100;       // 速度を-100に変更
  motorL.run(-speed); // 左モーターを設定した速度で動かす
  motorR.run(speed);  // 左モーターを設定した速度で動かす
  delay(2000);        // 2秒間待つ
}

Arduino IDEからmBotへ書き込みして、動作を確認してみましょう。

最初にint型のspeedという変数に100を代入しています。
変数speedrun関数の引数に設定することで、mBotを速度100で前進させます。

次に、変数speedに-100を代入して、同様にrun関数の引数に設定します。
その結果は、mBotを速度100で後退させることになります。

まとめ

今回は、プログラミングの基本である変数の定義と使い方について学びました。
変数は、プログラム内でデータを一時的に保存し、必要な時にそのデータを使って計算や処理を行うために重要です。

次回は、条件分岐繰り返し処理演算について学びます。

mBlockを使ったmBotのプログラミング方法を丁寧に解説していておススメです。

mBotを使用した拡張的な遊びは『mBotでものづくりをはじめよう』が参考になります。mBotのパーツを段ボールと組み合わせてオリジナルのロボットを作るといったような拡張的な遊びが楽しめます。

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