慣れてきたらArduinoに切り変えたいと思います。せっかく使いなれたStuduinoのハードが有るのでこれを利用したいと思います。
関数リファレンスも活用しましょう。
マニュアルの通りに行えば簡単にできます。
アーテックのHPから
に入って
Studuinoライブラリセットとハードウェア設定ファイルArduino IDE用をダウンロードして解凍します。
使用しているArduinoのフォルダーに,ダウンロードして解凍した,hardwareの情報とライブラリを入れてやればStuduinoを認識するようになります。
詳しくはアーテックの「Arduino環境設定手順書」をご覧ください
Studuino
ソフトウエアダウンロード
Arduino IDEご利用の方
Brink Studuino01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <Servo.h>//サーボ使用
#include <Wire.h>//I2C使用
#include <MMA8653.h>//加速度センサー使用
#include <Clock.h>//プログラムカラフルクロック使用
#include <Studuino.h>//Studuino使用
Studuino board;//boardとしてStuduinoを生成
void setup() {//初期設定
board.InitSensorPort(PORT_A0, PIDLED);//初期化
}
void loop() {//繰り返し
board.LED(PORT_A0, ON);//LED点灯
board.Timer(1000);//1秒待機
board.LED(PORT_A0, OFF);//LED消灯
board.Timer(1000);//1秒待機
}
インスタンスを作って命令を書きます。
Studuino board;//Studuinoを生成
スケッチ例を見ればすぐにできます。1~4行はこのスケッチでは必要ありません。
Studuinoのスクラッチで同じプログラムを書いてArduino言語に訳すと541行になってしまいます。いろいろなインクルードファイルも描かれていてArduino言語で動かすことはできませんでした。後ほど検討します。
Brink Studuino02
1
2
3
4
5
6
7
8
9
10
11
12
void setup() {
Serial.begin(9600);//serial初期化
pinMode(4, OUTPUT);//D4 LED出力
}
void loop() {
Serial.println(analogRead(0));//A0にフォトセンサ
digitalWrite(4, HIGH);//D4点灯
delay(1000);//1秒待機
digitalWrite(4, LOW);//D4消灯
delay(1000);//1秒待機
}
シリアル通信ができるか試してみたところ,上のスケッチでも動作することがわかりました。
ヘッダファイル
Arduinoですので当然ですがセンサやアクチュエータを使う時は上のスケッチのインクルードファイル(ヘッダ)が必要です。
Brink Studuino01の1~5行の他に
#include <MPU6050.h>
// ジャイロセンサー使用時
#include <IRremoteForStuduino.h>
// 赤外線受信センサー使用時
#include <ColorSensor.h>
// カラーセンサー使用時
その他にもヘッダが必要になりますが
StuduinoのボードはArduino Pro 3.3V 8MHzと構造が似ているようです。tkamadaさんのページで2015年6月に発信しています。
miniの場合はポートを使わずにプログラムの転送をするので設定の変更が必要となります。Arduino IDE 環境 設定手順書のP9
以降に従って
①file→環境設定→コンパイル,書き込みにチェックを入れます。
②ボードをStuduino miniに設定します。
③書き込み装置もStuduino miniにします。
④書き込みアイコンをクリックして書き込みが表示されている間にminiのResetボタンを押します。
設定することができても,元に戻せなくてはいけません。
①file→環境設定→書き込みにチェックを外します。
②使用するボードにします。
③書き込み装置はUSBtinyispに戻します。
④は必要ありません。
プログラムを試す
プログラムを試すだけであれば,上のようなArduinoのプログラムであっても動作(コンパイル)します。
D5,D6,D9は初期では内蔵LEDに設定されています。
A6は初期では内蔵の光センサに設定されています。
photo TR0
1
2
3
4
5
6
7
8
9
10
11
12
void setup() {
pinMode(5, OUTPUT);//D5 LED出力
}
void loop() {
int a;
a=analogRead(6);
digitalWrite(5, HIGH);
delay(a*10);
digitalWrite(5, LOW);
delay(a*10);
}
内蔵のディバイスだけでこのようなプログラムを書くことができます。
miniのpin切り替え
miniは内蔵のLEDを持っていますがセンサpinが少ないので,外付けの部品を使うために切り替える命令が有ります。
miniのpin内蔵LED
5pin 内蔵LED赤
board.InitDigitalPort(PORT_D5, PIDLED);
6pin 内蔵LED黄色
board.InitDigitalPort(PORT_D6, PIDLED);
9pin 内蔵LED緑
board.InitDigitalPort(PORT_D9, PIDLED);
miniのpin外付けLED
board.InitSensorPort(PORT_D5, PIDLED);
board.InitSensorPort(PORT_D6, PIDLED);
board.InitSensorPort(PORT_D9, PIDLED);
とすると
5pin 外付けLED
6pin 外付けLED
9pin 外付けLED
StuduinoMini board;
必要なインクルードファイル(ヘッダ)も事前に読み込みます。
StuduinoMini board;
等とインスタンスを作成します。
bord.xxx のようにminiのボードに対する命令が使えるようになります。
Clockは
InitClock();
で初期化しないと命令を受け付けません。
clock0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <Clock.h>
#include <Studuino.h>//Studuinoを使う
StuduinoMini board;
void setup() {
board.InitSensorPort(PORT_A0, PIDLED);//A0を外付けLEDとする
board.InitDigitalPort(PORT_D5, PIDLED);//A5を外付けLEDとする
board.InitDigitalPort(PORT_D6, PIDLED);//A6を外付けLEDとする
board.InitDigitalPort(PORT_D9, PIDLED);//A9を外付けLEDとする
board.InitClock();//Clockの初期化
//board.setTime(9, 0);//時刻の設定
board.setBackLight(15, 10, 5); // 赤 15 緑 10 青 5 の色を設定する。
}
void loop() {
board.backLight(ON);
board.LED(PORT_A0, ON);
board.LED(PORT_D5, ON);
board.Timer(1000);
board.backLight(OFF);
board.LED(PORT_A0, OFF);
board.LED(PORT_D5, OFF);
board.Timer(1000);
}
バックライトの色を指定して,ブリンクさせるプログラムです。