練習プログラム6


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

今回はLEDが徐々に点灯する関数です。

これは人間と機械のギャップが少しわかるプログラムだと、
個人的には思ったりします。

参考プログラム⑥LEDが徐々に点灯する関数


#include <3694.h>    // H8 Tinyの内部I/O定義をする(ヘッダーファイルの取り込み)
/*===================================================*/
/*               サブ関数                       */
/*===================================================*/
/*------ ウェイト関数(無駄ループバージョン)---- */
void wait(long loop){    //無駄ループさせて時間をかせぐ関数
    while(loop--);
}

/*---------LEDが徐々に点灯する関数--------------*/
void LED_slow(){
    int i;
    for(i=1;i<1400;i++){
        IO.PDR5.BYTE=0x00;
        wait(100+i);
        IO.PDR5.BYTE=0xff;
        wait(1500-i);
    }
}
/*===================================================*/
/*               メイン関数                     */
/*===================================================*/
int main(void){               //メイン関数(名前の通り、ココの中身通りにプログラムが動く。)
    IO.PCR5 = 0xff;           //ポート5を全て出力に設定(IOの設定 0なら入力 1なら出力)
    while(1){                 //無限ループ.
        LED_slow();
        wait(20000);
    }
    return 0;                 
}

余談


この課題のみそは「LEDが徐々に点灯する関数」
におけるwaitだと思われます。

LEDはIO.PDR5.BYTE=~~~によって点灯しますが、
waitを入れるとその間は、LEDは点滅しません。

でもwaitをいれている時間というのは、
人間にとってはとてもとても短いものなので、
LEDが「消えている」とはっきり認識することはできません。
そして、人間は「すこし暗く点灯している」と感じます。


課題プログラム⑥『LEDを徐々に明→暗→明→暗を繰り返して点滅させよ』
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。