その際のサンプルプログラムについて説明します。
C言語はwiringpiを使います。
//各種ファイルをインクルード
#include "common.h"
#include "MCUGear.h"
#include "MCUGearBase.h"
#include <wiringPi.h>
#include <wiringPiI2C.h>
#include <stdio.h>
//使う関数の宣言
void IOUni2M(MCUGear *mcugear);
int main(void){
int pin = 0; //IO 0//LED
int sw = 1; //IO 1//スイッチ
int sw_data = 0;//スイッチの状態を一時的に格納する変数(今回は使用しなくても良いです)
if(wiringPiSetup() == -1)//wiringpiを設定
return 1;
pinMode(pin, OUTPUT);//IO0を出力に設定
pinMode(sw, INPUT);//IO1を入力に設定
initBase(); //initialize Baseboard //ベースボードの初期化
MCUGear Uni2M = MCUGear(N_VDD_VDD_VDD, 2); //モジュールの任意名称をUni2Mとして、基板の裏面に設定したアドレス、モジュールの端子を2つ使うこととする。
IOUni2M(&Uni2M);//GPIOとモジュール端子の割り当て方を定義
while(1){//以下、ループさせます
printf("Alive\n");//動作中かをターミナルに表示している
//Universal module
digitalWrite(pin,1); //動的に再配線する前に念のため初期化
Uni2M.connectModule(); //動的に再配線する
if(digitalRead(sw)==1){//スイッチの状態でLEDのONOFFをします。
digitalWrite(pin,1); //LED off
sw_data = 1;
}else{
digitalWrite(pin,0); //LED on
sw_data = 0;
}
delay(100); //set your favorite time//今回は無くても確認できます
Uni2M.disconnectModule(); //再配線を切断します
}
return 0;
}
void IOUni2M(MCUGear *mcugear){
unsigned char fio[12];
// detect
mcugear->detect_module(fio); //モジュールの取り付けられた位置を把握します
delay(100);
printf("fio[0] = %d",fio[0]);
mcugear->savePinSetting(0, IO_0, IO_REG_OUT_DIR, fio[0]); //output//モジュールの0番端子にGPIOのIO0番を割り当て、GPIOから見て出力端子としています。
mcugear->savePinSetting(1, IO_1, IO_REG_IN_DIR, fio[1]); //input
#ifdef BOOST_MODE
mcugear->makeCircuit();//モジュールの切り替え動作を短縮し高速化する関数ですが、追々ほど説明します。
#endif
}
0 件のコメント:
コメントを投稿