動画はこちら
@@@@@@@@@@@@@@@@@@
例題1:ステッピングモータ512650を200ステップ(1回転)動かすプログラム
int main (void)
{
volatile int i; //遅いメモリに割り当てる、インターバルの時間を変えないようにする
register int j; //速いメモリに割り当てる、繰り返し処理をできるだけ速く済ますため
const unsigned short MainCycle = 50; //50Hzに保つ Init(MainCycle); LPC_IOCON->PIO2_4=0x0d0;//PIO2_4レジスタをIOポートとして使うための設定。2進数で00011010000を代入、 //3,4ビット目を10にしてプルアップ抵抗を使うモードに、10ビット目を0にして通常の入出力IOポートとして設定 //6,7ビット目は元々11なのでその値をそのまま維持 LPC_IOCON->PIO2_5=0x0d0;//PIO2_5レジスタをIOポートとして使うための設定。2進数で00011010000を代入、 //3,4ビット目を10にしてプルアップ抵抗を使うモードに、10ビット目を0にして通常の入出力IOポートとして設定 //6,7ビット目は元々11なのでその値をそのまま維持 LPC_GPIO2->DIR |= (1<<4);//GPIO2DIRレジスタの4ビット目だけを1にして、PIO2_4を出力IOポートに設定 LPC_GPIO2->DIR |= (1<<5);//GPIO2DIRレジスタの4ビット目だけを1にして、PIO2_5を出力IOポートに設定 LPC_GPIO2->DATA &=~(1<<4);//PIO2_4を0V(low) 時計回り //LPC_GPIO2->DATA |=(1<<4);//PIO2_4を0V(higt) 反時計回り while(1){ if(getSW()==1){ //ボタンを押したらパルスを200回送る LED(1); //ステッピングモータが回っている間緑を点灯 for(j=0; j<200; j++){ //200回パルスを送る LPC_GPIO2->DATA |=(1<<5); //PIO2_5を3.3V(high)にする for(i=0; i<5510; i++){} //for文をループさせることでインターバル時間を作る LPC_GPIO2->DATA &=~(1<<5); //PIO2_5を0V(low)にする for(i=0; i<5510; i++){} //for文をループさせることで1msのインターバル時間を作る } LED(0); //ステッピングモータが止まったらLEDを消す } }
}