LED_flash練習問題集
[LED_Flash練習問題1]
LED1/LED2/LED3/LED4を用いて
LEDが左右に往復して動いているように点灯する。
また、10往復したらD1につながっているスピーカよりドレミと音を鳴らす。
LEDが左右に往復して動いているように点灯する。
また、10往復したらD1につながっているスピーカよりドレミと音を鳴らす。
[解答例]
#include "DSP28x_Project.h" // Device Headerfile and Examples Include File
#include "NolibM.h"
#include <stdio.h>
volatile struct EPWM_REGS *ePWM[] =
{ &EPwm1Regs, //intentional: (ePWM[0] not used)
&EPwm1Regs,
&EPwm2Regs,
&EPwm3Regs,
&EPwm4Regs,
&EPwm5Regs,
&EPwm6Regs,
&EPwm7Regs
};
void main(void)
{
int i,j; // for文用 変数宣言
initNolibM(); // 初期化
while(1) // 無限ループ
{/*------------------↓↓↓ここから書き換える↓↓↓--------------------*/
for(j=0;j<10;j++) //10回繰り返す
{
for(i=1;i<5;i++)//左へ移動
{
ledFlash(ON,i);
wait(100);
ledFlash(OFF,i);
}
for(i=4;i>0;i--)//右に移動
{
ledFlash(ON,i);
wait(100);
ledFlash(OFF,i);
}
}
beep(DO,D1,250);
wait(250);
beep(RE,D1,250);
wait(250);
beep(MI,D1,250);
wait(250);
}/*------------------↑↑↑書き換えるのはここまで↑↑↑-----------------*/
}
[LED_Flash練習問題2]
LED1/2/3/4と順番に点灯させる。その速度を可変として1[s]間隔から0.1[s]間隔までスムーズに変化する。
例えば一周目は1s間隔で点灯、二周目は0.9s、三周目0.8s・・・・・0.1s間隔までいったら元に戻って1s間隔になる。
HINT: wait();の引数を変数にしてループごとに引き算する。もしくはfor文を使うとスマートなプログラムになる
例えば一周目は1s間隔で点灯、二周目は0.9s、三周目0.8s・・・・・0.1s間隔までいったら元に戻って1s間隔になる。
HINT: wait();の引数を変数にしてループごとに引き算する。もしくはfor文を使うとスマートなプログラムになる
[解答例]
#include "DSP28x_Project.h" // Device Headerfile and Examples Include File
#include "NolibM.h"
volatile struct EPWM_REGS *ePWM[] =
{ &EPwm1Regs, //intentional: (ePWM[0] not used)
&EPwm1Regs,
&EPwm2Regs,
&EPwm3Regs,
&EPwm4Regs,
&EPwm5Regs,
&EPwm6Regs,
&EPwm7Regs
};
void main(void)
{
int i,j; // for文用 変数宣言
initNolibM(); // 初期化
while(1) // 無限ループ
{/*------------------↓↓↓ここから書き換える↓↓↓--------------------*/
if(sw1(ON))
{
for(j=1000;j>0;j-=80)
{
for(i=1;i<5;i++)
{
ledFlash(ON,i);
wait(j);
ledFlash(OFF,i);
}
}
}
}/*------------------↑↑↑書き換えるのはここまで↑↑↑-----------------*/
}

