閲覧総計:14859  (本日:1  昨日:0)


発光ダイオード(LED)の明るさを変える

PIC 16F628A内臓のPWM機能を利用し、発光ダイオードの明るさを徐々に変えてみよう。  06/10/28

注)16F628Aの場合、PWM信号はRB3から発信される。

関連MikroC関数
void Pwm_Init(unsigned long freq);
void Pwm_Change_Duty(unsigned short duty_ratio);
void Pwm_Start(void);
void Pwm_Stop(void);

LEDの明るさを変える.JPGLEDの明るさを変える.jpg
/**
* PWM機能で発光ダイオードの明るさを徐々に変える
* PIC 16F628A
* 発信器:内臓4MHz 
* 電源:乾電池3本
* RB3: LED (CCP出力)
* RB2: LED (照度比較用)
* Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON _WDT_OFF
*        _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT
* 言語 MikroC v6.2
*/
void main(){ //メイン プログラム
    unsigned short int i; //使用変数の定義
    PORTB = 0b00000000; //PORTBの中身をきれいにする
    TRISB = 0b00000010; //RB1は1:入力、他のPORTBは0:出力に設定
    PWM_Init(5000); //PWMの初期化 (5KHz周期指定)
    
    PORTB.F2 = 1; //照度比較用LED ON
    
    PWM_Start(); //PWM機能スタート
    do { //doとwhileの間を繰り返す
        //LEDの明るさを徐々に変える
        for (i = 0; i < 256; i++) {
            PWM_Change_Duty(i); //PWMのDuty変更
            Delay_ms(100); //100msec待つ
        }
    } while(1); //doとwhileの間を繰り返す
} //メイン プログラム終了