Sample Programs

PSD練習問題集

[PSD練習問題1]

1. センサ1の反応距離に応じて3段階にDCモータの速度が変化するようにしてみよう。
2. センサ2の反応距離に応じてサーボモータの角度が変化するようにしてみよう。

[解答例]

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#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 angle=0;
    initNolibM(); //初期化
 
    for(;;) // 無限ループ
    {/*------------------↓↓↓ここから書き換える↓↓↓--------------------*/
 
        sen1 = sensor(A1); // A1(CN5)に接続されたセンサの値を読み取り,sen1に代入する
        sen2 = sensor(A2); // A2(CN6)に接続されたセンサの値を読み取り,sen2に代入する
 
        /*
         * CN5に接続されたセンサが反応した場合は距離に応じて3段階に速度が変化
         */
 
        if(sen1 > 1700){// sen1の値が1700より大きい(センサからの距離が10cmくらいの)場合
            motor(+70,MotCN3); // 速度70で正回転
        }
        else if(sen1 <= 1700 && sen1 > 1100){// sen1の値が1100より大きく1700以下の場合
            motor(+50,MotCN3); // 速度50で正回転
        }
        else{// sen1の値が1200以下の場合(センサから対象物の距離が離れている)
            motor(+30,MotCN3); // 速度30で正回転
        }
 
        /*
         * CN6に接続されたセンサが反応距離に応じてサーボモータの角度が変化する
         */
        if(sen2 > 1900){     // sen2が1900よりも大きいとき
            servo(+90,D4);      // サーボモータを+90度の位置まで回転
//          wait(10);
        }
        else if(sen2 <= 1900 && sen2 > 1000){
            angle = sen2/5-290; //sen2が1000から1900の間で変動するとき、angleは-90から90の間で変化
            servo(angle,D4);
        }
        else{   //sen2が1000以下の時
            servo(-90,D4);      //サーボモータを-90度の位置まで回転
        }
 
    }/*------------------↑↑↑書き換えるのはここまで↑↑↑-----------------*/
}
Follow Me!
  • Twitter