Sample Programs

LED_flash練習問題集

[LED_Flash練習問題1]

LED1/LED2/LED3/LED4を用いて
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文を使うとスマートなプログラムになる

[解答例]

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