Studuino ライブラリ
関数リファレンス
2014/11/01 作成
2018/08/03

改訂

改訂履歴

改訂日付

改訂内容

2014/11/01

初版発行

2017/01/16

Studuino web サイトリニューアルに伴う改訂

2017/8/16

プログラム例の”Stduino.h”を”Studuino.h”に修正

2018/02/01

誤記修正

2018/08/03

ライブラリ変更に伴う修正

1

内容
1.

はじめに ................................................................................................................ 32.

関数 ....................................................................................................................... 3
初期化関数 ............................................................................................................... 3
DC モーター制御系関数 .......................................................................................... 7
サーボモーター制御系関数.................................................................................... 10
ブザー制御系関数 .................................................................................................. 12
LED 制御系関数 ..................................................................................................... 14
入力系関数 ............................................................................................................. 15
タイマー関数.......................................................................................................... 22
Studuino mini 専用関数 .......................................................................................... 23
定数 ........................................................................................................................ 28

3.

プログラム ........................................................................................................... 31
Arduino 言語........................................................................................................... 31
Studuino オブジェクト .......................................................................................... 31
ヘッダファイルのインクルード ............................................................................ 31
プログラム例.......................................................................................................... 32
3.4.1.

DC モーターを制御するプログラム例 ........................................................... 32

3.4.2.

サーボモーターを制御するプログラム例 ...................................................... 33

3.4.3.

ブザーを制御するプログラム例 ..................................................................... 35

3.4.4.

LED を制御するプログラム例 ........................................................................ 36

3.4.5.

センサーを使用するプログラム例 ................................................................. 37

4.

Studuino 基板と DC モーターの接続.................................................................... 42

5.

お問い合わせ先 .................................................................................................... 43

2

1. はじめに本書は、Arduino IDE で Studuino を使った制御プログラムを記述するのに使用するライブ
ラリ「Studuino 関数ライブラリ」について記載しています。
本ライブラリでは、アーテックが提供する電子パーツ(DC モーターやサーボモーターなど)ごとの制御関数を提供しているため、容易にこれらのパーツを使ったプログラムを作成することができます。
本書の内容は製品の仕様変更などにより、加筆・修正が加えられることがあります。

2. 関数
各関数の説明は、下記のようなフォーマットの表になっています。
関数名

[関数名]

引数

[型]

[変数名]

戻り値

[型]

[説明]

[設定値]

[説明]

備考
以下に各関数について記します。

初期化関数
パーツを接続した Studuino のポートの初期化に使用する関数を記します。
関数名

SetDCMotorCalibration

引数

byte[2]

戻り値

なし

rate

0～100

オフセット値

DC モーターの速度の調整が不要の場合は、本関数を使用しなくても問題ありません。
DC モーターの速度を調整する関数です。引数 rate[0]には M1, rate[1]には M2 の DC モータ
ーの速度の割合を百分率で設定して下さい。
【使用例】// M1 に接続されている DC モーターの最大速度を 80%に抑え// M2 に接続されている DC モーターの最大速度を 100%に設定する
byte calib[] = { 80, 100 };SetDCMotorCalibration(calib); // DC モーターの速度校正を設定

3

関数名

SetServomotorCalibration

引数

char[8]

戻り値なし

offsets-15～15

オフセット値

サーボモーターの角度の調整が不要の場合は、本関数を使用しなくても問題ありません。
サーボモーターの角度を調整する関数です。引数 offsets[0]～[7]にサーボモーターの D2～
D12 に対する調整角度を設定して下さい。
【使用例】// D9～D12 に接続されているサーボモーターの調整角度を設定します
byte calib[] = { 0, 0, 0, 0, -6, 0, 12, 3 }; // 調整角度：D9(-6°), D10(0°), D11(12°), D12(3°)
SetServomotorCalibration(calib); // DC モーターの速度校正を設定
関数名

InitDCMotorPort

引数

byte

connector

PORT_M1

接続コネクター

PORT_M2
戻り値

なし

DC モーター ポートを初期化する関数です。DC モーターを制御する前に本関数で使用するポートを初期化して下さい。
【使用例】// Move 関数 / DCMotor 関数 / DCMotorPower 関数 / DCMotorControl 関数を実行する前に、使用しているポートを本関数で初期化して下さい
InitDCMotorPort(PORT_M1); // DC モーターを接続した M1 ポートを初期化
関数名

InitServomotorPort

引数

byte

戻り値

なし

connector*1 参照

接続コネクターサーボモーター ポートを初期化する関数です。サーボモーターを制御する前に本関数で使用するポートを初期化して下さい。
【使用例】// Servomotor 関数 /SyncServomotors 関数 / AsyncServomotors 関数を実行する前に、使用しているポートを本関数で初期化して下さい
InitServomotorPort(PORT_D2); // サーボモーターを接続した D2 ポートを初期化
4

関数名

InitServomotorPortForLED

引数

byte

connector

PORT_D9接続コネクター

PORT_D10
PORT_D11
戻り値なし

サーボモーターポートの D9, D10, D11 を LED 用に初期化する関数です。D9, D10, D11 を使用して LED の明るさを制御する前に本関数で使用するポートを初期化して下さい。
【使用例】// Gradation 関数を実行する前に、使用しているポートを本関数で初期化して下さい
InitServomotorPortForLED (PORT_D9);// LED を接続した D9 ポートを初期化

Gradation(PORT_D9, 128);
関数名

InitSensorPort

引数

byte

connector* 4 参照接続コネクターbytepid* 5 参照

接続パーツ

戻り値

なし

センサー/LED/ブザーを使用するポートを初期化する関数です。センサー/LED/ブザーを制御する前に本関数で使用するポートを初期化して下さい。
【使用例】// Buzzer 関数 / BuzzerControl 関数 / Melody 関数 / LED 関数 / Get*関数を実行する前に、使用しているポートを本関数で初期化して下さい
InitSensorPort(PORT_A0, PIDLED); // LED を接続した A0 ポートを初期化

5

関数名

InitSensorPort

引数

byte

connector1* 4 参照接続コネクターbyteconnector2* 4 参照接続コネクターbytepid* 5 参照

接続パーツ

戻り値

なし

超音波センサーを使用するポートを初期化する関数です。超音波センサーを制御する前に本関数で使用するポートを初期化して下さい。
【使用例】
InitSensorPort(PORT_A0, PORT_A1 ,PIDULTRASONICSENSOR); //超音波センサーを接続した A0, A1 ポートを初期化

関数名

InitI2CPort

引数

byte

戻り値

なし

pid

* 5 参照接続パーツ(I2C デバイスのみ)

I2C ポート(A4, A5)を初期化する関数です。I2C デバイスを制御する前に本関数で使用するポートを初期化して下さい。
【使用例】
InitI2CPort(PIDACCELEROMETER); // 加速度センサーを初期化
関数名

InitBluetooth

引数

なし

戻り値

なし

Bluetooth 経由でのシリアル通信を開始します。Baudrate 9600 で Serial ポートを初期化します。利用可能なブルートゥースモジュールは、以下の 2 種類です。
「ブルートゥースモジュール RBT-001（品番：86873）」「ロボット用ブルートゥースモジュール（品番：86876）」【使用例】
InitBluetooth(); // Bluetooth を初期化

6

DC モーター制御系関数
DC モーターを制御する関数を記します。
関数名

Move

引数

byte

戻り値

direct

FORWARD前進

BACKWARD

後退

FORWARD_RIGHT

右折(前)FORWARD_LEFT

左折(前)BACKWARD_RIGHT

右折(後)BACKWARD_LEFT

左折(後)CLOCKWISE

右回り

COUNTERCLOCKWISE

左回り

byte

pace

0～255

速さ(段階)

ulong

duration

0～2^32-1

時間（ミリ秒）

byte

brake

BRAKE

ブレーキありCOAST

ブレーキなしなし

DC モーターを２つ使用して車を作成した際に、車の移動を実行する関数です。本関数の制御は、DC モーターと基板の取り付け方に依存します。
「4.Studuino 基板と DC モーターの接続」を参考に車を作成してください。
【使用例】
Move (FORWARD, 10, 1000, BRAKE); // 速さ 10 で 1 秒間前進して停止します

7

関数名

DCMotor

引数

byte

connector

PORT_M1

接続コネクター

PORT_M2
byte

戻り値

rotation

NORMAL

正転

REVERSE

逆転

byte

pace

0～255

速さ(段階)

ulong

duration

0～2^32-1

時間（ミリ秒）

byte

brake

BRAKE

ブレーキありCOAST

ブレーキなしなし

DC モーターを制御する関数です。
【使用例】// M1 に接続している DC モーターを速さ 10 で 1 秒間回転して停止します
DCMotor (PORT_M1, NORMAL, 10, 1000, BRAKE);
関数名

DCMotorPower

引数

byte

connector

PORT_M1

接続コネクター

PORT_M2
byte
戻り値

pace

0～255

速さ(段階)なし

DC モーターの速度を制御する関数です。
【使用例】// M1 に接続している DC モーターを速さ 10 で 1 秒間回転して、その後速さ 100 で 1 秒間回転して、停止します
DCMotorPower(PORT_M1, 10); // M1 に接続した DC モーターの速度を設定
DCMotorControl(PORT_M1, CLOCKWISE); // M1 に接続した DC モーターを正転で動かす
Timer(1); // 1 秒間カウント
DCMotorPower(PORT_M1, 100); // M1 の DC モーターの速度を変更します
Timer(1); // 1 秒間カウント
DCMotorControl (PORT_M1, BRAKE); // M1 に接続した DC モーターを止める

8

関数名

DCMotorControl

引数

byte

connector

PORT_M1

接続コネクター

PORT_M2
byte

戻り値

rotation

NORMAL

正転

REVERSE

逆転

BRAKE

ブレーキありCOAST

ブレーキなしなし

DC モーターの回転を制御する関数です。
【使用例】// M1 に接続している DC モーターを速さ 10 で 1 秒間回転して停止します
DCMotorPower(PORT_M1, 10); // M1 に接続した DC モーターの速度を設定
DCMotorControl(PORT_M1, CLOCKWISE); // M1 に接続した DC モーターを正転で動かす
Timer(1000); // 1 秒間カウント
DCMotorControl (PORT_M1, BRAKE); // M1 に接続した DC モーターを止める9

サーボモーター制御系関数
サーボモーターを制御する関数を記します。
関数名

Servomotor

引数

byte

connector

bytedegree

戻り値

*1 参照
0～180

接続コネクターサーボモーターの角度なし

1 つのサーボモーターの角度を設定します。サーボモーターが指定角度に移動するのと並行して、次の処理が実行されます。
【使用例】// D2 に接続しているサーボモーターに 90 度を設定します
Servomotor (PORT_D2, 90);
関数名

AsyncServomotors

引数

byte[]

connectors

byte[]

degrees0～180

各サーボモーターの角度

byte

number

1～8

サーボモーターの数

戻り値

*1 参照

接続コネクターの配列

なし

複数のサーボモーターの角度を設定します。全サーボモーターが指定角度に移動するのと並行して、次の処理が実行されます。
【使用例】// D2, D9, D10 に接続しているサーボモーターに 90, 180, 45 度をそれぞれ設定します
byte myConectors[] = { PORT_D2, PORT_D9, PORT_D10 };byte myDegrees[] = { 90, 180, 45};
ASyncServomotor (myConectors, myDegrees, 3);

10

関数名

SyncServomotors

引数

byte[]

connector

byte[]

degree0～180

各サーボモーターの角度

byte

number

1～8

サーボモーターの数

byte

time

3～255

1 度当たりの移動時間（ミリ秒）

戻り値

*1 参照

接続コネクターの配列

なし

複数のサーボモーターの角度を設定します。全サーボモーターが指定角度に到達するまで
他の処理は実行されません。引数 time の値を大きくすることで、サーボモーターの移動速
度を遅くすることができます。
ただし、サーボモーターの 1 度当たりの最速移動時間が 3msのため、time 引数に 3 未満を設定してもサーボモーターの移動の速さは 3ms となります。
【使用例】// D2, D9, D10 に接続しているサーボモーターに 90, 180, 45 度をそれぞれ設定します
byte myConectors[] = { PORT_D2, PORT_D9, PORT_D10 };byte myDegrees[] = { 90, 180, 45};
SyncServomotor (myConectors, myDegrees, 3, 5);

11

ブザー制御系関数
ブザーを制御する関数を記します。
関数名

Buzzer

引数

byte

connector* 3 参照接続コネクター

word

pitch

* 6 参照

音の高さ

ulong

duration

0～2^32-1

出力時間（ミリ秒）

戻り値なし

ブザーから指定された高さの音を指定された時間出力します。
【使用例】
Buzzer (PORT_A0, BZR_C4, 1000); // A0 に接続されたブザーから”ド”を 1 秒出力します

関数名

BuzzerControl

引数

byte

connector* 3 参照接続コネクター

boolean

onoff

ON

音を鳴らす

OFF

音を止める

* 6 参照

音の高さ

byte
戻り値

pitch

なし

引数 onoff に ON を指定した場合、ブザーから指定された高さ(pitch)の音を出力します。
OFF を指定した場合、出力した音を停止します(引数 pitch の値は無視されます)。
【使用例】// A0 に接続されたブザーから”ド”を 1 秒出力します
BuzzerControl(PORT_A0, ON, BZR_C4);
Timer(1000);
BuzzerControl(PORT_A0, OFF, 0);

12

関数名

Melody引数

byte

connector* 3 参照接続コネクター

word[]

pitches* 6 参照音の高さ

float[]

beats

0～

拍

byte

number

メロディの数(0～255)

音符の数

byte

tempo

TEMPO60

テンポ

TEMPO90
TEMPO120
TEMPO150
戻り値なし

ブザーから指定されたメロディを出力します。
【使用例】// A0 に接続されたブザーから”ドレミファミレド”を出力します。
word myPitches[] = { BZR_C3, BZR_D3, BZR_E3, BZR_F3,
BZR_E3, BZR_D3, BZR_C3 };float myBeats[] = { 1, 1, 1, 1, 1, 1, 1 };byte num = 7; // 要素の数
Melody (PORT_A0, myPitches, myBeats, num, TEMPO90);

13

LED 制御系関数
LED を制御する関数を記します。
関数名

LED

引数

byte

connector* 3 参照接続コネクター

booleanonoff

ON

LED 点灯/消灯

OFF
戻り値

なし

LED を ON/OFF します。
【使用例】
LED (PORT_A0, ON); // A0 に接続された LED を ON します

関数名

Gradation

引数

byte

connector

PORT_D9接続コネクター

PORT_D10
PORT_D11
byte

ratio

0～255

明 る さ (値 が大 きい ほ
ど明るくなります)

戻り値なし

ポート D9, D10, D11 に接続した場合、LED の明るさを調節することができます。
【使用例】
Gradation (PORT_D9, 128); // D9 に接続された LED の明るさを指定します

14入力系関数
Studuino のプッシュボタンまたは、センサーを制御する関数を記します。
関数名

GetPushSwitchValue

引数

byte

connector

戻り値

byte

0:プッシュ時, 1:リリース時* 2 参照コネクター

プッシュスイッチの状態を取得します【使用例】// A0 に接続したプッシュスイッチの値を取得
byte val = GetPushSwitchValue (PORT_A0);
関数名

GetTouchSensorValue

引数

byte

connector

戻り値

byte

0:プッシュ時, 1:リリース時* 3 参照コネクター

タッチセンサーの状態を取得します【使用例】// A0 に接続したタッチセンサーの値を取得
byte val = GetTouchSensorValue (PORT_A0);
関数名

GetLightSensorValue

引数

byte

connector

戻り値

int

0～1023* 4 参照コネクター

光センサーの値を取得します【使用例】
int val = GetLightSensorValue (PORT_A0); // A0 に接続した光センサーの値を取得

関数名

GetSoundSensorValue

引数

byte

connector

戻り値

int

0～1023* 4 参照コネクター

音センサーの値を取得します【使用例】
int val = GetSoundSensorValue (PORT_A0); // A0 に接続した音センサーの値を取得
15

関数名

GetIRPhotoreflectorValue

引数

byte

connector

戻り値

int

0～1023* 4 参照コネクター

赤外線フォトリフレクタの値を取得します【使用例】// A0 に接続した赤外線フォトリフレクタの値を取得
int val = GetIRPhotoreflectorValue (PORT_A0);
関数名

GetAccelerometerValue

引数

byte

axis

X_AXIS

計測する加速度の方向

Y_AXIS
Z_AXIS
戻り値

int-128～127

加速度センサーの値を取得します。加速度センサーは、I2C を使用するので、A4,A5 のみ対応しています。
【使用例】
int val = GetAccelerometerValue (X_AXIS); //加速度センサーの X 軸方向の傾きを取得

関数名

GetTemperatureSensorValue

引数

byte

connector

戻り値

int

0~1023* 5 参照コネクター

温度センサーの値を取得します。
【使用例】
int val = GetTemperatureSensorValue(PORT_A0);// ポート A0 に接続された温度センサーの値を取得
double temperature = ((((val / 1024.0) * 3.3) - 0.5) / 0.01); // セ氏温度に変換

16

関数名

GetUltrasonicSensorValue

引数

byte

trigger* 4 参照

コネクター

byte

echo

* 4 参照コネクター

戻り値

unsigned long

超音波を受け取るまでの時間（マイクロ秒）

超音波センサーの値を取得します。triggerPin から発生した超音波を、echoPin が受け取るまでの時間(マイクロ秒)を返します。
【使用例】
unsigned long val = GetUltrasonicSensorValue(PORT_A0, PORT_A1); // 超音波センサーの値を取得
double dist = val / 58.0;// 距離[cm]に変換（58 = 29[us/cm] * 2: 音が 1cm 進むのに掛かる時間(マイクロ秒）の２倍(往復分)）

関数名

GetGyroscopeValue

引数

byte

axis

X_AXIS

計測する加速度の方向

Y_AXIS
Z_AXIS
GX_AXIS

計測する角速度の方向

GY_AXISGZ_AXIS
戻り値

int-32768~32767

ジャイロセンサーの加速度と角速度の値を取得します。
【使用例】
int val = GetGyroscopeValue(GX_AXIS); // ジャイロセンサーの X 軸周りの角速度を取得

関数名

GetIRReceiverValue

引数

なし

戻り値

unsigned long

赤外線信号値

赤外線受信センサーの値を取得します。
【使用例】
unsigned long val = GetIRReceiverValue(); // 赤外線受信センサーの値を取得

17

関数名

DisableIRReceiver

引数

なし

戻り値

なし

赤外線受信センサーを無効にします。DC モーターM1、ブザーと赤外線受信センサーを同時に使用する際、それぞれの処理を行う前に、本関数で赤外線受信センサーを無効にする必要があります。
【使用例】
board.DisableIRReceiver();// 赤外線受信を無効化
board.Move(BACKWARD, DCMPWR(10), 500, COAST); // 後退board.EnableIRReceiver();// 赤外線受信を有効化

関数名

EnableIRReceiver

引数

なし

戻り値

なし

赤外線受信センサーを有効にします。DisableIRReceiver で赤外線受信センサーを無効化した場合、再び使用する前に本関数で赤外線受信センサーを有効にする必要があります。
【使用例】
board.DisableIRReceiver();// 赤外線受信を無効化

board.Move(BACKWARD, DCMPWR(10), 500, COAST); // 後退board.EnableIRReceiver();// 赤外線受信を有効化

18

関数名

GetColorSensorValue

引数

byte

axis

VALUE_RED

計測する色の成分

VALUE_GREEN
VALUE_BLUE
VALUE_CLEAR
戻り値

Unsigned int

検出した色の成分

カラーセンサーの値を取得します。赤色フィルター、緑色フィルター、青色フィルター、
透明フィルター(フィルターなし)を通して検出された光の成分を数値で返します。
【使用例】
unsigned int sv = GetColorSensorValue(VALUE_RED); // カラーセンサーが検出した赤色
成分を取得

関数名

GetColorSensorXY

引数

double*x

色座標 X 格納用

double*y

色座標 Y 格納用

戻り値

なし

カラーセンサーが検出した色成分を、色座標に変換した結果を取得します。結果は x, y に格納されます。
【使用例】
double x, y;// 値を格納する変数を宣言

GetColorSensorXY(&x, &y); // 色座標を取得し、x, y に代入

19

関数名

GetColorCode

引数

なし

戻り値

byte

COLOR_UNDEF

判別不能

COLOR_RED

赤色

COLOR_GREEN

緑色

COLOR_BLUE

青色

COLOR_WHITE白色

COLOR_YELLOW黄色

COLOR_BROWN茶色COLOR_BLACK

黒色

赤、緑、青、白、黄、茶、黒のアーテックブロックを判別し、対応するコードを返します。
【使用例】
int sv = board.GetColorCode(); // アーテックブロックに対応するコードを返す

関数名

UpdateBluetooth

引数

なし

戻り値

boolean

データ受信状況

Bluetooth コントローラーアプリからデータの受信を行い、データが受信できた場合はTRUE を、できなかった場合は FALSE を返します。
【使用例】
board.UpdateBluetooth();boolean fID1 = board.GetBTCommandIDState(BT_ID_01); // アプリ内で、ID01 が割り当てられたボタンが押されているかどうかを判定
if(fID1 == true) {// ボタンが押されたときの処理
}

20

関数名

GetBTCommandIDState

引数

byte

id

戻り値

booleanId で指定したボタン、センサーの状態

BT_ID_01~BT_ID_10, BT_ID_ACC

UpdateBluetooth で受信した値から、指定したデバイスコマンド ID の状態を取得します。
id

対象
画面上のボタン

加速度センサー

戻り値

BT_ID_01

TRUE:ON～BT_ID_10

FALSE:OFF

BT_ID_ACC

TRUE:有効FALSE:無効【使用例】
board.UpdateBluetooth();boolean fID1 = board.GetBTCommandIDState(BT_ID_01); // アプリ内で、ID01 が割り当てられたボタンが押されているかどうかを判定
if(fID1 == true) {// ボタンが押されたときの処理}
関数名

GetBTAccelValue

引数

byte

axis

X_AXIS

計測する加速度の方向

Y_AXIS
Z_AXIS
戻り値

なし

UpdateBluetooth でデータ受信した後、加速度センサーの値を取得します。
【使用例】
board.UpdateBluetooth();boolean fAcc = board.GetBTCommandIDState(BT_ID_ACC); // アプリ内で、加速度センサ
ーが有効かどうかを判定
int sv = board.GetBTAccelValue(X_AXIS);// 端末の X 軸方向の加速度を取得
if(fAcc & (sv > 0)) {// 加速度センサーが有効で、X 軸方向の加速度が正の場合の処理}
21

タイマー関数
指定時間ウェイト処理する関数を記します。
関数名

Timer

引数

float

戻り値

なし

時間（秒）

指定時間処理を停止します。
【使用例】
Timer (1); // 1 秒間処理を停止します。

22

Studuino mini 専用関数
Studuino mini でのみ使用可能な関数を記します。
関数名

InitClock

引数

なし

戻り値

なし

カラフルクロック用接続ポートを初期化します。

関数名

setTime

引数

byte

hour

0~23

時間

byte

min

0~59

分

戻り値

なし

カラフルクロックの時刻を設定します。
【使用例】
board.setTime(9, 0);

関数名

setDate引数

unsigned int

year

2000~2040

年

byte

month

1~12

月

byte

day

1~31

日

戻り値

なし

カラフルクロックの日付を設定します。
【使用例】
board.setDate(2016, 4, 1);

関数名

setAlarm

引数

byte

hour

0~23

時間

byte

min

0~59

分

戻り値

なし

カラフルクロックのアラームの時刻を設定します。
【使用例】
board.setAlarm(9, 0);
23

関数名

setBackLight

引数

byte

red

0~15

0[暗]~15[明]の 16 段階

byte

green

0~15

0[暗]~15[明]の 16 段階

byte

blue

0~15

0[暗]~15[明]の 16 段階

戻り値

なし

カラフルクロックのバックライトの色を設定します。
【使用例】
board.setBackLight(15, 10, 5); // 赤 15 緑 10 青 5 の色を設定する。

関数名

backLight

引数

boolean

戻り値

on/offON

バックライトを点灯

OFF

バックライトを消灯

なし

カラフルクロックのバックライトを ON/OFF します。
【使用例】
board.setBackLight(15, 10, 5);// 赤 15 緑 10 青 5 の色を設定する。

board.backLight(ON);// バックライトを点灯

board.Timer(1);clock.backLight(OFF);// 1 秒待つ// バックライトを消灯※最後に setBackLight で指定された色で点灯します。
関数名

clockBuzzer

引数

word

pitch

unsigned long

duration

戻り値* 6 参照音の高さ
出力時間 （ミリ秒）なし

カラフルクロックのブザーから音を鳴らします。
【使用例】
board.clockBuzzer(BZR_CS4, 2000);

24

関数名

GetHour

引数

なし

戻り値

int

時間

カラフルクロックの時間を取得します。

関数名

GetMinute

引数

なし

戻り値

int

分

カラフルクロックの分を取得します。

関数名

GetYear

引数

なし

戻り値

int

年

カラフルクロックの年を取得します。

関数名

GetMonth

引数

なし

戻り値

int

月

カラフルクロックの月を取得します。

関数名

GetDay

引数

なし

戻り値

int

日

カラフルクロックの日を取得します。

関数名

GetTemperature

引数

なし

戻り値

float

温度 (℃)

カラフルクロックの温度を取得します。

25

関数名

GetAlarmHour

引数

なし

戻り値

int

アラームの時間

カラフルクロックのアラームの時間を取得します。

関数名

GetAlarmMinute

引数

なし

戻り値

int

アラームの分

カラフルクロックのアラームの分を取得します。

関数名

isAlarmTime

引数

なし

戻り値

boolean

現在時刻とアラーム時刻が一致するかどうか。

カラフルクロックの時刻がアラームの時刻と一致するかどうかを返します。この関数は、
カラフルクロック基板上の Alarm スイッチ、STOP ボタンと連動して値を返します。

TRUE
Off

・該当する条件なし

On・現在時刻がアラーム時刻と一致

・現在時刻がアラーム時刻と一致
Snooze・現在時刻がアラーム時刻+(5 の倍数)分の時
刻と一致

FALSE
・常に False
・現在時刻とアラーム時刻が一致しない
・True の状態で STOP ボタンが押された場合

・現在時刻がアラーム時刻と一致しない
・True の状態で STOP ボタンを押された場合【使用例】
for(;;) {if(board.isAlarmTime()) {board.clockBuzzer(BZR_CS4, 2000);
}
}

26

関数名

sleep

引数

なし

戻り値

なし

モード SLEEP_MODE_PWR_SAVE で省電力モードに移行します。

関数名

GetOnboardLightSensor

引数

なし

戻り値

int

0~1023

基板上の光センサーの値を取得します。

関数名

GetBatteryVoltage

引数

なし

戻り値

float

電圧値 [V]

基板に接続された電池の電圧を取得します。

27

定数* 1 サーボモーターのポート設定
設定値

ポート

PORT_D2

D2

PORT_D4

D4

PORT_D7

D7

PORT_D8

D8

PORT_D9

D9

PORT_D10

D10

PORT_D11

D11

PORT_D12

D12* 2 プッシュスイッチのポート設定値
設定値

ポート

PORT_A0

A0

PORT_A1

A1

PORT_A2

A2

PORT_A3A3* 3 Digital 入出力系の設定値
設定値

ポート

PORT_A0

A0

PORT_A1

A1

PORT_A2

A2

PORT_A3

A3

PORT_A4

A4

PORT_A5

A5

* 4 Analog 入出力系の設定値
設定値

ポート

PORT_A0

A0

PORT_A1

A1

PORT_A2

A2

PORT_A3

A3

PORT_A4

A4

PORT_A5

A5

PORT_A6

A6

PORT_A7

A7* 5 パーツ ID
設定値

パーツ

PIDOPEN

未接続

PIDLEDLEDPIDBUZZERブザー

PIDLIGHTSENSOR

光センサー

PIDSOUNDSENSOR

音センサー

PIDIRPHOTOREFLECTOR

赤外線フォトリフレクタ

PIDACCELEROMETER

加速度センサー(*)

PIDTOUCHSENSOR

タッチセンサーPIDPUSHSWITCH

プッシュスイッチ

PIDIRRECEIVER

赤外線リモコン受信センサー

PIDGYROSCOPE

ジャイロセンサー(*)

PIDTEMPERATURESENSOR

温度センサーPIDULTRASONICSENSOR

超音波センサーPIDCOLORSENSOR

カラーセンサー(*)(*): I2C デバイス29

* 6 音階の設定値
設定値

音階

Hz

設定値

音階

Hz

設定値

音階

Hz

BZR_C3

ド

130

BZR_C5

ド

523

BZR_C7

ド

2093

BZR_CS3

ド＃

139

BZR_CS5

ド＃

554

BZR_CS7

ド＃

2217

BZR_D3

レ

147

BZR_D5

レ

587

BZR_D7

レ

2349

BZR_DS3

レ＃

156

BZR_DS5

レ＃

622

BZR_DS7

レ＃

2489

BZR_E3

ミ

165

BZR_E5

ミ

659

BZR_E7

ミ

2637

BZR_F3

ファ

175

BZR_F5

ファ

698

BZR_F7

ファ

2794

BZR_FS3

ファ＃

185

BZR_FS5

ファ＃

740

BZR_FS7

ファ＃

2960

BZR_G3

ソ

196

BZR_G5

ソ

784

BZR_G7

ソ

3136

BZR_GS3

ソ＃208

BZR_GS5

ソ＃

831

BZR_GS7

ソ＃3322

BZR_A3ラ

220

BZR_A5

ラ

880

BZR_A7

ラ3520

BZR_AS3

ラ＃233

BZR_AS5ラ＃

932

BZR_AS7

ラ＃3729

BZR_B3

シ

247

BZR_B5シ

988

BZR_B7

シ

3951

BZR_C4

ド

262

BZR_C6

ド

1047

BZR_C8ド

4186

BZR_CS4

ド＃

277

BZR_CS6

ド＃

1109

BZR_S

無音

0

BZR_D4

レ

294

BZR_D6

レ

1175

BZR_DS4

レ＃

311

BZR_DS6

レ＃

1245

BZR_E4

ミ

330

BZR_E6

ミ

1319

BZR_F4

ファ

349

BZR_F6

ファ

1397

BZR_FS4

ファ＃

370

BZR_FS6

ファ＃

1480

BZR_G4

ソ

392

BZR_G6

ソ

1568

BZR_GS4

ソ＃415

BZR_GS6

ソ＃

1661

BZR_A4ラ

440

BZR_A6ラ

1760

BZR_AS4

ラ＃

466

BZR_AS6

ラ＃1865

BZR_B4

シ

494

BZR_B6

シ

1976

30

3. プログラム
以下に、Studuino ライブラリ関数を使用して Studuino 制御プログラムを作成する際の注意点を記します。

Arduino 言語
Arduino 言語では、setup 関数と loop 関数をユーザーが定義する必要があります。setup 関
数は最初に一度だけ実行される関数です。loop 関数は、関数に定義した処理が無限に繰り返されます。
// 最初に一度だけ実行される関数。主に初期化に使用。
void setup() {// 初期化関数を使用して、パーツを接続している Studuino のポートを初期化}// 無限に繰り返し実行される関数。メイン処理。
void loop() {}Studuino オブジェクト
Studuino ライブラリを使用する場合、Studuino 基板をイメージした Studuino オブジェクトをグローバル変数で一つ作成する必要があります。
// Studuino 基板をイメージ。基板なので 1 つのプログラムに 1 つのみ作成
Studuino board;※Studuino の場合
StuduinoMini board; ※Studuino mini の場合

ヘッダファイルのインクルード
Studuino ライブラリ関数は、サーボモーター、加速度センサー、ジャイロセンサー、赤外
線受信センサー、カラーセンサーを使用します。Studuino ヘッダファイル以外にもこれらのヘッダファイルをインクルードしなければなりません。
#include <Arduino.h >// 基本ヘッダファイル#include <Servo.h>// サーボモーター用ヘッダファイル#include <Wire.h>// I2C デバイス用ヘッダファイル#include <MMA8653.h>// 加速度センサー用ヘッダファイル#include <MPU6050.h>// ジャイロセンサー用ヘッダファイル#include <IRremoteForStuduino.h>// 赤外線受信センサー用ヘッダファイル#include <ColorSensor.h>// カラーセンサー用ヘッダファイル#include "Studuino.h"// Studuino 用ヘッダファイル

31

プログラム例
以下に各パーツを使用した際のプログラム例を記します。

3.4.1. DC モーターを制御するプログラム例
4.Studuino 基板と DC モーターの接続を参考に Studuino の M1、M2 ポートに DC モーターを接続し、Arduino IDE で下記のプログラムを Studuino に書き込んで下さい。
車が１秒前進した後に１秒後退し、M1 に接続した DC モーターが 1 秒間正転します。
#include <Arduino.h >// 基本ヘッダファイル#include <Servo.h>// サーボモーター用ヘッダファイル#include <Wire.h>// I2C デバイス用ヘッダファイル#include <MMA8653.h>// 加速度センサー用ヘッダファイル#include <MPU6050.h>// ジャイロセンサー用ヘッダファイル#include <IRremoteForStuduino.h>// 赤外線受信センサー用ヘッダファイル#include <ColorSensor.h>// カラーセンサー用ヘッダファイル#include "Studuino.h"// Studuino 用ヘッダファイル// Studuino 基板をイメージ。基板なので 1 つのプログラムに 1 つのみ作成
Studuino board;// 最初に一度だけ実行される関数。主に初期化に使用。
void setup() {// 初期化関数を使用して、パーツを接続している Studuino のポートを初期化
board.InitDCMotorPort(PORT_M1);// DC モーターが接続されている M1 ポートを初期化
board.InitDCMotorPort(PORT_M2);// DC モーターが接続されている M2 ポートを初期化}// 無限に繰り返し実行される関数。メイン処理。
void loop() {board.Move(FORWARD, 254, 1000, BRAKE);
board.Move(BACKWARD, 254, 1000, BRAKE);// 1 秒前進して停止// 1 秒後退して停止// M1 に接続された DC モーターを 1 秒間正転して停止
board.DCMotorPower(PORT_M1, 254);// M1 の DC モーターの回転の速さを設定
board.DCMotorControl(PORT_M1, NORMAL);// M1 の DC モーターを正転開始
board.Timer(1);// 1 秒間ウェイト
board.DCMotorControl(PORT_M1, BRAKE);// M1 の DC モーターを停止
for (;;) {}// 処理が先頭に戻らないように無限ループを入れています}32

3.4.2. サーボモーターを制御するプログラム例
Studuino の D10、D11、D12 ポートにサーボモーターを接続し、Arduino IDE で下記のプログラムを Studuino に書き込んで下さい。全サーボモーターを 90 度に初期化し、約 3 秒後に D10、D11、D12 ポートのサーボモーターがそれぞれ、90 度、180 度、0 度まで同時にゆっくり移動し、約 3 秒後に D10 ポートのサーボモーターが 180 度まで移動します。
#include <Arduino.h >// 基本ヘッダファイル#include <Servo.h>// サーボモーター用ヘッダファイル#include <Wire.h>// I2C デバイス用ヘッダファイル#include <MMA8653.h>// 加速度センサー用ヘッダファイル#include <MPU6050.h>// ジャイロセンサー用ヘッダファイル#include <IRremoteForStuduino.h>// 赤外線受信センサー用ヘッダファイル#include <ColorSensor.h>// カラーセンサー用ヘッダファイル#include "Studuino.h"// Studuino 用ヘッダファイル// Studuino 基板をイメージ。基板なので 1 つのプログラムに 1 つのみ作成
Studuino board;// 最初に一度だけ実行される関数。主に初期化に使用。
void setup() {// 初期化関数を使用して、パーツを接続している Studuino のポートを初期化
board.InitServomotorPort(PORT_D10);//サーボモーターが接続されている D10 ポートを初期化
board.InitServomotorPort(PORT_D11);//サーボモーターが接続されている D11 ポートを初期化
board.InitServomotorPort(PORT_D12);//サーボモーターが接続されている D12 ポートを初期化}// 無限に繰り返し実行される関数。メイン処理。
void loop() {//サーボモーターの角度を 90 度に初期化
byte connector[] = { PORT_D10, PORT_D11, PORT_D12 };byte degree[] = { 90, 90, 90 };byte number = sizeof(connector) / sizeof(byte); // 角度を設定するポートの数
board.AsyncServomotors(connector, degree, number);// 必要であれば、サーボモーターが目的角度に移動するまでユーザーが delay を入れる
board.Timer(1);board.Timer(3);// 3 秒待つ// D10, D11, D12 ポートに接続されているサーボモーターの角度を 90, 180, 0 度に設定
degree[0] = 90;
degree[1] = 180;
degree[2] = 0;// この関数が完了後は、サーボモーターは目的角度まで到達している
board. SyncServomotors(connector, degree, number, 10);
board.Timer(3);// 3 秒待つ// D10 ポートに接続されているサーボモーターの角度を 180 度に設定

33

board.Servomotor(PORT_D10, 180);// 必要であれば、サーボモーターが目的角度に移動するまでユーザーが delay を入れる
board.Timer(1);for (;;) {}// 処理が先頭に戻らないように無限ループを入れています}34

3.4.3. ブザーを制御するプログラム例
Studuino の A0 ポートにブザーを接続し、Arduino IDE で下記のプログラムを Studuino に書き込んで下さい。ドの音を１秒出力した後、ソの音を１秒出力した後、きらきらぼしを出力します。
#include <Arduino.h >// 基本ヘッダファイル#include <Servo.h>// サーボモーター用ヘッダファイル#include <Wire.h>// I2C デバイス用ヘッダファイル#include <MMA8653.h>// 加速度センサー用ヘッダファイル#include <MPU6050.h>// ジャイロセンサー用ヘッダファイル#include <IRremoteForStuduino.h>// 赤外線受信センサー用ヘッダファイル#include <ColorSensor.h>// カラーセンサー用ヘッダファイル#include "Studuino.h"// Studuino 用ヘッダファイル// Studuino 基板をイメージ。基板なので 1 つのプログラムに 1 つのみ作成
Studuino board;// 最初に一度だけ実行される関数。主に初期化に使用。
void setup() {// 初期化関数を使用して、パーツを接続している Studuino のポートを初期化
board.InitSensorPort(PORT_A0, PIDBUZZER);// ブザーが接続されている A0 ポートを初期化}// 無限に繰り返し実行される関数。メイン処理。
void loop() {// ブザーから 1 秒間音を出力して停止
board.Buzzer(PORT_A0, BZR_C5, 1000);board.Timer(1);// 1 秒待つ// ブザーから 1 秒間音を出力して停止
board.BuzzerControl(PORT_A0, ON, BZR_G5);
board.Timer(1);board.BuzzerControl(PORT_A0, OFF, 0); // OFF の場合は、最後の引数は無視されます
board.Timer(1);// 1 秒待つ// ブザーからメロディを出力します
word myPitches[] = { BZR_C5, BZR_C5, BZR_G5, BZR_G5, BZR_A5, BZR_A5, BZR_G5 };byte number = sizeof(myPitches) / sizeof(word); // 出力する音の数
float myBeats[] = { 1, 1, 1, 1, 1, 1, 1 };// 拍数
board.Melody (PORT_A0, myPitches, myBeats, number, TEMPO90);
for (;;) {}// 処理が先頭に戻らないように無限ループを入れています}35

3.4.4. LED を制御するプログラム例
Studuino の A1、D9 ポートに LED を接続し、Arduino IDE で下記のプログラムを Studuinoに書き込んで下さい。A1 の LED を３回点滅した後、D9 の LED をゆっくり点灯します。
#include <Arduino.h >// 基本ヘッダファイル#include <Servo.h>// サーボモーター用ヘッダファイル#include <Wire.h>// I2C デバイス用ヘッダファイル#include <MMA8653.h>// 加速度センサー用ヘッダファイル#include <MPU6050.h>// ジャイロセンサー用ヘッダファイル#include <IRremoteForStuduino.h>// 赤外線受信センサー用ヘッダファイル#include <ColorSensor.h>// カラーセンサー用ヘッダファイル#include "Studuino.h"// Studuino 用ヘッダファイル// Studuino 基板をイメージ。基板なので 1 つのプログラムに 1 つのみ作成
Studuino board;// 最初に一度だけ実行される関数。主に初期化に使用。
void setup() {// 初期化関数を使用して、パーツを接続している Studuino のポートを初期化
board.InitSensorPort(PORT_A1, PIDLED);// LED が接続されている A0 ポートを初期化
board.InitServomotorPortForLED(PORT_D9);// LED が接続されている D9 ポートを初期化}// 無限に繰り返し実行される関数。メイン処理。
void loop() {// A1 に接続された LED を 3 回点滅
for (int i = 0;i < 3;i++) {board.LED(PORT_A1, ON); // A1 の LED を点灯
board.Timer(1); // 1 秒間ウェイト
board.LED(PORT_A1, OFF); // A1 の LED を消灯
board.Timer(1); // 1 秒間ウェイト}// D9 に接続された LED をゆっくり点灯
board.Gradation(PORT_D9, 0);for (int i = 0;i < 255;i++) {board.Gradation(PORT_D9, i);board.Timer(0.1);}
for (;;) {}// 処理が先頭に戻らないように無限ループを入れています}36

3.4.5. センサーを使用するプログラム例① 通常のセンサー
Studuino の A1 にタッチセンサー、A2 に音センサー、A3 に赤外線反射センサー、A4/A5 に加速度センサー、A6 に光センサーを接続し、Arduino IDE で下記のプログラムを Studuinoに書き込んで下さい。書き込み完了後、Arduino IDE のメニューの[ツール] → [シリアルモニタ]を選択し、シリアルモニタを表示して下さい。シリアルモニタに各センサーの値が表示されます。
#include <Arduino.h >// 基本ヘッダファイル#include <Servo.h>// サーボモーター用ヘッダファイル#include <Wire.h>// I2C デバイス用ヘッダファイル#include <MMA8653.h>// 加速度センサー用ヘッダファイル#include <MPU6050.h>// ジャイロセンサー用ヘッダファイル#include <IRremoteForStuduino.h>// 赤外線受信センサー用ヘッダファイル#include <ColorSensor.h>// カラーセンサー用ヘッダファイル#include "Studuino.h"// Studuino 用ヘッダファイル// Studuino 基板をイメージ。基板なので 1 つのプログラムに 1 つのみ作成
Studuino board;// 最初に一度だけ実行される関数。主に初期化に使用。
void setup() {// 初期化関数を使用して、パーツを接続している Studuino のポートを初期化
board.InitSensorPort(PORT_A0, PIDPUSHSWITCH);
board.InitSensorPort(PORT_A1, PIDTOUCHSENSOR);
board.InitSensorPort(PORT_A2, PIDSOUNDSENSOR);
board.InitSensorPort(PORT_A3, PIDIRPHOTOREFLECTOR);
board.InitI2CPort(PIDACCELEROMETER);
board.InitSensorPort(PORT_A6, PIDLIGHTSENSOR);// シリアル出力の初期化
Serial.begin(9600);}// 無限に繰り返し実行される関数。メイン処理。
void loop() {// 100msec 単位で光センサーの値を取得し、シリアルモニターに出力する
for (;;) {byte pVal = board.GetPushSwitchValue(PORT_A0);
byte tVal = board.GetTouchSensorValue(PORT_A1);
int sVal = board.GetSoundSensorValue(PORT_A2);
int iVal = board.GetIRPhotoreflectorValue(PORT_A3);
int xVal = board.GetAccelerometerValue(X_AXIS);
int yVal = board.GetAccelerometerValue(Y_AXIS);
int zVal = board.GetAccelerometerValue(Z_AXIS);
int lVal = board.GetLightSensorValue(PORT_A6);
Serial.print("button:"); Serial.print(pVal);
Serial.print("\t");37Serial.print("touch:");Serial.print("sound:");Serial.print("ir:");Serial.print("x:");Serial.print("y:");Serial.print("z:");Serial.print("light:");board.Timer(0.1);

Serial.print(tVal);
Serial.print(sVal);
Serial.print(iVal);
Serial.print(xVal);
Serial.print(yVal);
Serial.print(zVal);
Serial.print(lVal);

Serial.print("\t");Serial.print("\t");Serial.print("\t");Serial.print("\t");Serial.print("\t");Serial.print("\t");Serial.println();}}② オプションパーツ: 超音波センサー、温度センサー、ジャイロセンサー
Studuino の A0/A1 に超音波センサー、A2 に温度センサー、A4/A5 にジャイロセンサーを接続し、Arduino IDE で下記のプログラムを Studuino に書き込んで下さい。書き込み完了後、Arduino IDE のメニューの[ツール] → [シリアルモニタ]を選択し、シリアルモニタを表示して下さい。シリアルモニタに各センサーの値が表示されます。
#include <Arduino.h >// 基本ヘッダファイル#include <Servo.h>// サーボモーター用ヘッダファイル#include <Wire.h>// I2C デバイス用ヘッダファイル#include <MMA8653.h>// 加速度センサー用ヘッダファイル#include <MPU6050.h>// ジャイロセンサー用ヘッダファイル#include <IRremoteForStuduino.h>// 赤外線受信センサー用ヘッダファイル#include <ColorSensor.h>// カラーセンサー用ヘッダファイル#include "Studuino.h"// Studuino 用ヘッダファイル// Studuino 基板をイメージ。基板なので 1 つのプログラムに 1 つのみ作成
Studuino board;// 最初に一度だけ実行される関数。主に初期化に使用。
void setup() {// 初期化関数を使用して、パーツを接続している Studuino のポートを初期化
board.InitSensorPort(PORT_A0, PORT_A1, PIDULTRASONICSENSOR);
board.InitSensorPort(PORT_A2, PIDTEMPERATURESENSOR);
board.InitI2CPort(PIDGYROSCOPE);// シリアル出力の初期化
Serial.begin(9600);}// 無限に繰り返し実行される関数。メイン処理。
void loop() {// 100msec 単位で光センサーの値を取得し、シリアルモニターに出力する
int uVal = board.GetUltrasonicSensorValue(PORT_A0, PORT_A1);
int tVal = board.GetTemperatureSensorValue(PORT_A2);
int xVal = board.GetGyroscopeValue(X_AXIS);
int yVal = board.GetGyroscopeValue(Y_AXIS);
int zVal = board.GetGyroscopeValue(Z_AXIS);
int gxVal = board.GetGyroscopeValue(GX_AXIS);

38

int gyVal = board.GetGyroscopeValue(GY_AXIS);
int gzVal = board.GetGyroscopeValue(GZ_AXIS);
Serial.print("ultrasonic:");Serial.print(uVal);
Serial.print("\t");Serial.print("temperature:");Serial.print(tVal);
Serial.print("\t");Serial.print("x:");Serial.print(xVal);
Serial.print("\t");Serial.print("y:");Serial.print(yVal);
Serial.print("\t");Serial.print("z:");Serial.print(zVal);
Serial.print("\t");Serial.print("gx:");Serial.print(gxVal);
Serial.print("\t");Serial.print("gy:");Serial.print(gyVal);
Serial.print("\t");Serial.print("gz:");Serial.print(gzVal);
Serial.println();;board.Timer(0.1);}③ オプションパーツ: 赤外線リモコン受信センサー
Studuino の A0 に赤外線受信センサーを接続し、Arduino IDE で下記のプログラムを
Studuino に書き込んで下さい。書き込み完了後、Arduino IDE のメニューの[ツール] → [シリアルモニタ]を選択し、シリアルモニタを表示して下さい。シリアルモニタに各センサーの値が表示されます。
#include <Arduino.h >// 基本ヘッダファイル#include <Servo.h>// サーボモーター用ヘッダファイル#include <Wire.h>// I2C デバイス用ヘッダファイル#include <MMA8653.h>// 加速度センサー用ヘッダファイル#include <MPU6050.h>// ジャイロセンサー用ヘッダファイル#include <IRremoteForStuduino.h>// 赤外線受信センサー用ヘッダファイル#include <ColorSensor.h>// カラーセンサー用ヘッダファイル#include "Studuino.h"// Studuino 用ヘッダファイル// Studuino 基板をイメージ。基板なので 1 つのプログラムに 1 つのみ作成
Studuino board;// 最初に一度だけ実行される関数。主に初期化に使用。
void setup() {// 初期化関数を使用して、パーツを接続している Studuino のポートを初期化
board.InitSensorPort(PORT_A0, PIDIRRECEIVER); // センサ入力の設定// シリアル出力の初期化
Serial.begin(9600);}// 無限に繰り返し実行される関数。メイン処理。
void loop() {// 100msec 単位で赤外線受信センサーの値を取得し、シリアルモニターに出力する
unsigned long ir = board.GetIRReceiverValue();if(ir != 0) {Serial.print("IR receive:");Serial.print(ir, HEX);
Serial.println();}board.Timer(0.1);}④ オプションパーツ: カラーセンサー
39

Studuino の A4/A5 にカラーセンサーを接続し、Arduino IDE で下記のプログラムを Studuinoに書き込んで下さい。書き込み完了後、Arduino IDE のメニューの[ツール] → [シリアルモニタ]を選択し、シリアルモニタを表示して下さい。シリアルモニタに各センサーの値が表示されます。
#include <Arduino.h >// 基本ヘッダファイル#include <Servo.h>// サーボモーター用ヘッダファイル#include <Wire.h>// I2C デバイス用ヘッダファイル#include <MMA8653.h>// 加速度センサー用ヘッダファイル#include <MPU6050.h>// ジャイロセンサー用ヘッダファイル#include <IRremoteForStuduino.h>// 赤外線受信センサー用ヘッダファイル#include <ColorSensor.h>// カラーセンサー用ヘッダファイル#include "Studuino.h"// Studuino 用ヘッダファイル// Studuino 基板をイメージ。基板なので 1 つのプログラムに 1 つのみ作成
Studuino board;// 最初に一度だけ実行される関数。主に初期化に使用。
void setup() {// 初期化関数を使用して、パーツを接続している Studuino のポートを初期化
board.InitI2CPort(PIDCOLORSENSOR); // カラーセンサー開始// シリアル出力の初期化
Serial.begin(9600);}// 無限に繰り返し実行される関数。メイン処理。
void loop() {// 100msec 単位でカラーセンサーの値を取得し、シリアルモニターに出力する
unsigned int rVal = board.GetColorSensorValue(VALUE_RED);
unsigned int gVal = board.GetColorSensorValue(VALUE_GREEN);
unsigned int bVal = board.GetColorSensorValue(VALUE_BLUE);
unsigned int cVal = board.GetColorSensorValue(VALUE_CLEAR);
double x, y;board.GetColorSensorXY(&x, &y);
Serial.print("red:");Serial.print("green:");Serial.print("blue:");Serial.print("clear:");Serial.print("X:");
Serial.print("Y:");board.Timer(0.1);

Serial.print(rVal);
Serial.print("\t");Serial.print(gVal);
Serial.print("\t");Serial.print(bVal);
Serial.print("\t");Serial.print(cVal);
Serial.print("\t");Serial.print(x); Serial.print("\t");Serial.print(y); Serial.println();}40

⑤ オプションパーツ: BluetoothStuduino には何も接続せず、Arduino IDE で下記のプログラムを Studuino に書き込んで下さい。書き込み完了後、D0/D1 に Bluetooth 通信用コネクターを、空いているセンサーポー
ト(A0~A7)に電源用コネクターを接続します。アプリを起動し、Studuino と接続し、値を送信すると、基板上の LED(13 番ピン)が点灯、消灯します。

#include <Arduino.h >// 基本ヘッダファイル#include <Servo.h>// サーボモーター用ヘッダファイル#include <Wire.h>// 加速度センサー用ヘッダファイル#include <MMA8653.h>// 加速度センサー用ヘッダファイル#include <MPU6050.h>// ジャイロセンサー用ヘッダファイル#include <IRremoteForStuduino.h>// 赤外線受信センサー用ヘッダファイル#include <ColorSensor.h>// カラーセンサー用ヘッダファイル#include "Studuino.h"// Studuino 用ヘッダファイル// Studuino 基板をイメージ。基板なので 1 つのプログラムに 1 つのみ作成
Studuino board;// 最初に一度だけ実行される関数。主に初期化に使用。
void setup() {// 初期化関数を使用して、パーツを接続している Studuino のポートを初期化
board.InitBluetooth();pinMode(13, OUTPUT);}// 無限に繰り返し実行される関数。メイン処理。
void loop() {// アプリから値を受信
board.UpdateBluetooth();// 受信した値に応じて LED を ON/OFF
if(board.GetBTCommandIDState(BT_ID_01)) {digitalWrite(13, HIGH);}
if(board.GetBTCommandIDState(BT_ID_02)) {digitalWrite(13, LOW);}
board.Timer(0.1);}

41

4. Studuino 基板と DC モーターの接続
以下の手順で車を組み立てます。
（１）DC モーターに以下のようにタイヤを取り付けます。
※左右対称に２つ作る。

（2）DC モーターを基板台座の裏面に取り付けます。

（３）ブロックで後輪を作ります。

（４）DC モーターおよび電池ボックスをそれぞれ Studuino 基板に接続します。
M1：右側の DC モーター
M2：左側の DC モーター
POWER：電池ボックス（５）電池ボックスを基板台座に固定します。

42

5. お問い合わせ先

株式会社アーテック

お客様相談窓口

お電話によるお問い合わせ 072-990-5656
E メールによるお問い合わせ support@artec-kk.co.jp

43