Fan練習問題集
[FAN練習問題1]
センサに反応したら即座に首振り方向を変化させて反応あった方向に風を送る
※サンプルプログラムはwait(1000);の命令があるため一度90度まで行ききらないと戻ってこない。それを改善し途中からでも反応できるようにする。
※サンプルプログラムはwait(1000);の命令があるため一度90度まで行ききらないと戻ってこない。それを改善し途中からでも反応できるようにする。
[解答例]
#include "DSP28x_Project.h" // Device Headerfile and Examples Include File
#include "NolibM.h"
// Watch Viewでの値表示用にglobal変数として宣言
Uint16 sen1;
Uint16 sen2;
volatile struct EPWM_REGS *ePWM[] =
{ &EPwm1Regs, //intentional: (ePWM[0] not used)
&EPwm1Regs,
&EPwm2Regs,
&EPwm3Regs,
&EPwm4Regs,
&EPwm5Regs,
&EPwm6Regs,
&EPwm7Regs,
};
void main(void)
{
int tgt=0;
initNolibM(); //初期化
servo(tgt,D4);
ledFlash(ON,1);
ledFlash(ON,2);
ledFlash(ON,3);
ledFlash(ON,4);
wait(500);
ledFlash(OFF,1);
ledFlash(OFF,2);
ledFlash(OFF,3);
ledFlash(OFF,4);
for(;;) // 無限ループ
{/*------------------↓↓↓ここから書き換える↓↓↓--------------------*/
sen1 = sensor(A1); // CN5に接続されたセンサの値を読み取り,sen1に代入する
sen2 = sensor(A2); // CN6に接続されたセンサの値を読み取り,sen2に代入する
if(sw1(ON)){ //スイッチ1がONならば,以下を実行(センサに反応した首振り機能ON)
if(sen1 > 1500 && sen2 > 1500){ // 左右両方の測距センサが反応した
motor(-30,MotCN3); // DCモータ(CN3)を-30の速度で回転
ledFlash(ON,1); // LED1を光らせる
}
else if(sen1 > 1500 && sen2 <= 1500){ // 向かって右(CN5)の測距センサが反応した場合
motor(+15,MotCN3); //DCモータ(CN3)を+15の速度で回転
ledFlash(ON,2); // LED2を光らせる
if(tgt<=90){tgt+=1;}else{tgt=90;}
servo(tgt,D4);
}
else if(sen1 <= 1500 && sen2 > 1500){ // 向かって右(CN5)の測距センサが反応した場合
motor(+15,MotCN3); //DCモータ(CN3)を+15の速度で回転
ledFlash(ON,3); // LED2を光らせる
if(tgt>=-90){tgt-=1;}else{tgt=-90;}
servo(tgt,D4);
}
else{
motor(+15,MotCN3); //DCモータ(CN3)を+15の速度で回転
ledFlash(ON,4); // LED4を光らせる
if(tgt>5)tgt-=1;
if(tgt<-5)tgt+=1;
servo(tgt,D4); //サーボモータを+90度の位置まで回転
}
}
else //スイッチ1がOFFならば,以下を実行(自動首振り)
{
motor(+15,MotCN3); //DCモータ(CN3)を+30の速度で回転
servo(+90,D4);
wait(2000);
servo(-90,D4);
wait(2000);
}
wait(20);
ledFlash(OFF,1);
ledFlash(OFF,2);
ledFlash(OFF,3);
ledFlash(OFF,4);
}
/*------------------↑↑↑書き換えるのはここまで↑↑↑-----------------*/
}
//===========================================================================
// 以上
//===========================================================================

