MCU Gearの各プログラムをダウンロードしてmain.cppに以下のように記述すれば動きます。
サンプルプログラムの回路は以下のような物を想定しています。
LEDの回路などを接続し、スイッチに連動して任意のLEDを光らせます。
main.cは以下のように構成されています。
1、実際に関数の使い方
2、マイコンのピン設定(入出力設定など)
3、マイコンからモジュールに接続する配線情報の関数
#include "mbed.h"
//各種ファイルをインクルード
#include "MCUGearBase.h"
#include "MCUGear.h"
#include "common.h"//このファイルの中にある#define LPC1768_mbedを有効、//#define FS_KL25Zを無効にする
MCUGear Uni2M(p28, p27, N_VDD_VDD_VDD,8);//モジュールの定義をUni2Mという名前にし、I2Cピン番号、基板裏面に設定したアドレス、モジュールで使用したい端子数今回は8。II2Cでデジタルスイッチ群を操作しデジタル配線を再構築しています。
//IOの設定を記述
DigitalOut Dout1(p16);
DigitalOut Dout2(p21);
DigitalOut Dout3(p22);
DigitalOut Dout4(p23);
DigitalOut Dout5(p24);
DigitalIn Din1(p9);
DigitalIn Din2(p10);
//使用する関数をあらかじめ宣言
void IOUni2M(MCUGear *mcugear); //IO setting for 2 Connector Universal module
int main() {
int SW1,SW2;//スイッチ入力の状態を一旦保存する変数
initBase(); //ベースボードの初期化
IOUni2M(&Uni2M);//ユニバーサルモジュールのIO情報を保存
while(1) {//以下、ループ
//2 connector universal module ------------------------------
//あらかじめ出力端子をHighにしておく
Dout = 1;
Dout1 = 1;
Dout2 = 1;
Dout3 = 1;
Dout4 = 1;
Dout5 = 1;
Uni2M.connectModule(); //connect---//ユニバーサルモジュールに動的に配線します
//後は普通のデジタル回路として使えます。
SW1 = Din1.read();//スイッチの状態を読みます。
SW2 = Din2.read();
if(SW1 == 1){//スイッチの状態に合わせて出力を変化させ、LEDをONOFFします。
Dout = 1;
Dout2 = 1;
Dout3 = 1;
}else{
Dout = 0;
Dout2 = 0;
Dout3 = 0;
}
if(SW2 == 1){
Dout1 = 1;
Dout4 = 1;
Dout5 = 1;
}else{
Dout1 = 0;
Dout4 = 0;
Dout5 = 0;
}
Uni2M.disconnectModule(); //disconnect---//ユニバーサルモジュールとの配線を切断します。
}
}
//マイコンのどの端子をどのモジュールに当てはめるかを定義し、保存します。
void IOUni2M(MCUGear *mcugear){
uint8_t fio[12];
mcugear->detect_module(fio);//モジュールの取り付け位置を把握します
mcugear->savePinSetting(0, IO_MBED_P9, IO_REG_IN_DIR, fio[0]); //input
//ここでは「モジュールの0番端子に、mbedのP9番端子をmbedから見て入力方向に設定する」という意味です
//同様に以下のように設定していきます
mcugear->savePinSetting(1, IO_MBED_P10, IO_REG_IN_DIR, fio[1]); //input
mcugear->savePinSetting(2, IO_MBED_P15, IO_REG_OUT_DIR, fio[2]);
mcugear->savePinSetting(3, IO_MBED_P16, IO_REG_OUT_DIR, fio[3]);
mcugear->savePinSetting(4, IO_MBED_P21, IO_REG_OUT_DIR, fio[4]);
mcugear->savePinSetting(5, IO_MBED_P22, IO_REG_OUT_DIR, fio[5]);
mcugear->savePinSetting(6, IO_MBED_P23, IO_REG_OUT_DIR, fio[6]);
mcugear->savePinSetting(7, IO_MBED_P24, IO_REG_OUT_DIR, fio[7]);
#ifdef BOOST_MODE
mcugear->makeCircuit();//これは再構築をショートカットするためにベースボードに配線情報を保存する関数です。追々説明していきます。
#endif
}
0 件のコメント:
コメントを投稿