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); } } } }/*------------------↑↑↑書き換えるのはここまで↑↑↑-----------------*/ }