【ステッピングモータでドレミファソラシドを鳴らすプログラム】
#define atdo 137602 //ド周波数
#define atre 122590 //レ周波数
#define atmi 109215 //ミ周波数
#define atfa 103086 //ファ周波数
#define atso 91839 //ソ周波数
#define atra 81819 //ラ周波数
#define atsi 72892 //シ周波数
#define btdo 68801 //高いド周波数
/マクロ**/
/グローバル変数**/
/メイン関数**/
void tstep(int ontei){
LPC_TMR32B0->TCR=0; //タイマ32のカウント停止
LPC_TMR32B0->TCR |=(1<<1); //タイマ32カウントリセット LPC_TMR32B0->MR0=ontei; //周期を入力
LPC_TMR32B0->TCR=1; //タイマ32のカウント開始
}
int main (void)
{
const unsigned short MainCycle = 50; //50Hzに保つ
Init(MainCycle);
LPC_IOCON->PIO2_4=0x0d0;//PIO2_4レジスタをIOポートとして使うための設定。2進数で00011010000を代入、
//3,4ビット目を10にしてプルアップ抵抗を使うモードに、10ビット目を0にして通常の入出力IOポートとして設定
LPC_GPIO2->DIR |= (1<<4); //GPIO2DIRレジスタの4ビット目だけを1にして、PIO2_4を出力IOポートに設定
LPC_TMR32B0->PWMC &=~(1<<0); //EM0により制御 (PIO1_6)
LPC_TMR32B0->EMR |=(3<<4); //MR0をトグル出力に設定
LPC_TMR32B0->MCR |=(1<<1); //MR0によるTCリセット
LPC_TMR32B0->MCR &=~(1<<10); //MR3によるTCリセット解除 これをしないとPWMが出ない
tstep(0); //ステッピングモータ停止
while(getSW()==0){} //ボタンが押されるまで待つ
LED(1); //緑LED点灯
Wait(1000);
tstep(atdo); //ドを鳴らす
Wait(1000);
tstep(atre); //レ
Wait(1000);
tstep(atmi); //ミ
Wait(1000);
tstep(atfa); //ファ
Wait(1000);
tstep(atso); //ソ
Wait(1000);
tstep(atra); //ラ
Wait(1000);
tstep(atsi); //シ
Wait(1000);
tstep(btdo); //高いドを鳴らす
Wait(1000);
tstep(0); //ステッピングモータ停止
}





