動画はこちら

https://youtu.be/ux6LHSpUJMU

@@@@@@@@@@@@@@@@@@

例題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を消す
    }
}

}