今回は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を徐々に明→暗→明→暗を繰り返して点滅させよ』
最終更新:2011年05月19日 16:25