閲覧総計:26439  (本日:3  昨日:4)

A/D値でLED点滅間隔変更

「A/D変換」を利用した簡単なプログラムを作成し、12F683の「A/D変換」機能の利用法、
稼働を確認しました。

A/D変換値(0〜1023)を用いて発光ダイオード(LED)の点滅間隔を0msec〜1023msec
にスムーズに変化させる。 07/02/03

P1010275.JPG12F683_PIN.JPG
/**
* 12F683の稼働テスト
* A/D値で発光ダイオード(LED)の点滅間隔を変更する
*
* A/D: GP4 (10KΩ半固定抵抗で分圧しアナログ値を生成)
* LED: GP2
*Clock: 8.0MHz 内蔵発振器使用
*Device Flags:
* _CP_OFF  _MCLRE_OFF _PWRTE_ON _WDT_OFF _INTRC_OSC_NOCLKOUT
*
* MikroC v6.2.1
*/

void main() {
    //使用変数の定義
    //unsigned short int temp; //間違い修正 07/11/28
    unsigned int temp;
 
    //マイコンの初期化
    //内臓クロック8MHzに設定
    OSCCON.IRCF2=1;
    OSCCON.IRCF1=1;
    OSCCON.IRCF0=1;

    //A/D変換clock設定 0.125us*16倍=2.0us
    ANSEL.ADCS2=1;
    ANSEL.ADCS1=0;
    ANSEL.ADCS0=1;

    // A/D利用ピンの設定 // ANALOG=1, DIGITAL=0 //
    ANSEL.ANS3 = 1; //AN3(GP4)のみアナログ使用

    GPIO = 0b00000000; //GPIOの中身をきれいにする
    TRISIO = 0b00010000; //GP4を1:入力、他5個を0:出力設定
    //マイコンの初期化終わり
 
    do {
        //アナログデータの取得
        //10bit(0~1023)
        temp = ADC_Read(ANS3); //ANS3アナログ入力

        //LED点滅間隔が0-1,023msecで滑らかに変更出来る
        GPIO.F2 = 1;
        VDelay_ms(temp);
        GPIO.F2 = 0;
        VDelay_ms(temp);
    } while(1);
}

★この情報は役に立ちましたか?

選択肢 投票
はい 55  
普通 19  
いいえ 58  
  • unsigned int? -- ? 2007-02-25 (日) 23:53:04
  • 参考になりました!! -- むっちゃん? 2007-08-28 (火) 16:18:40
  • こんなことしてました、http://www.flipclip.net/clips/mutanet/ -- むっちゃん? 2007-08-28 (火) 16:20:28
  • ら サンに賛同! -- むっちゃん? 2007-11-27 (火) 22:11:33
  • らさん、むっちゃんさん、ご指摘ありがとうございます。
    unsigned short int は 0〜255
    unsigned int は 0〜65535 ですね。
    temp は 0〜1023の範囲ですから、unsigned int temp で定義する必要がありますね。
    上記プログラム修正しました。-- PICとMikroC 2007-11-28 (水) 22:42:31

添付ファイル: fileP1010275.JPG 4741件 [詳細] file12F683_PIN.JPG 5877件 [詳細]