• 追加された行はこの色です。
  • 削除された行はこの色です。
 #freeze
 閲覧総計:&counter();  (本日:&counter(today);  昨日:&counter(yesterday);)
 
 *A/D値でLED点滅間隔変更 [#p6a3d09f]
 
 
 「A/D変換」を利用した簡単なプログラムを作成し、24FJ64GA002の「A/D変換」機能の利用法、
 稼働を確認しました。
 
 A/D変換値(0〜1023)を用いて発光ダイオード(LED)の点滅間隔を0msec〜1023msec
 にスムーズに変化させる。 07/02/03
 
 |&attachref(,zoom,150x150,button){新しい写真添付};|&attachref(,zoom,150x150,button){新しい写真添付};|
 |&attachref(P1010617.JPG,zoom,150x150,button){新しい写真添付};|&attachref(,zoom,150x150,button){新しい写真添付};|
 
  /**
  * 12F683の稼働テスト
  * A/D値で発光ダイオード(LED)の点滅間隔を変更する
  * 24F64の稼働テスト  0-3V入力−LED点滅間隔変更
  * (A/D値で発光ダイオード(LED)の点滅間隔を変更する)
  *
  * A/D: GP4 (10KΩ半固定抵抗で分圧しアナログ値を生成)
  * LED: GP2
  * PIC24FJ64GA002
  * A/D: RB3(AN5) (10KΩ半固定抵抗で分圧しアナログ値を生成)
  * LED: RB15
  *
  *Clock: 8.0MHz 内蔵発振器使用
  *電源:乾電池2本(3V)
  *Device Flags:
  * _CP_OFF  _MCLRE_OFF _PWRTE_ON _WDT_OFF _INTRC_OSC_NOCLKOUT
  *_IESO_OFF _FNOSC_FRC _FCKSM_CSDCMD _OSCIOFNC_OFF _POSCMOD_NONE
  *_JTAGEN_OFF _GCP_OFF _GWRP_OFF _BKBUG_OFF _COE_OFF _ICS_PGx1 _FWDTEN_OFF
  *
  * MikroC v6.2.1
  *_IESO_OFF 2速度スタートアップ無効
  *_FNOSC_FRC クロックは内蔵オシレータを利用(8MHz)
  *_FCKSM_CSDCMD 動作中のクロック切り替え&監視OFF
  *_OSCIOFNC_OFF RA3はI/Oとして利用 _POSCMOD_NONE 主発信機無効
  *_JTAGEN_OFF  JTAG無効    _GCP_OFF  コードプロテクト無効
  *_GWRP_OFF  プログラムメモリ書込み禁止 _BKBUG_OFF デバッグモードにリセット
  *_COE_OFF  Clip-onエミュレーション無効
  *_ICS_PGx1  ICSP書き込みにPGC1/PGD1を使う FWDTEN_OFF  ウォチドック無効
  *
  * MikroC dsPIC v4.0.0.0
  * コンパイルサイズ: 728byte (6,000Byte以下なら無料利用)
  */
  
  void main() {
      //使用変数の定義
      //unsigned short int temp; //間違い修正 07/11/28
  void main()
  {
       //使用変数の定義
      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;
      //PICの初期化
      PORTB = 0b0000000000000000; //PORTBの中身ををきれいにする
      ADPCFG = 0b1111111111011111; //AN5は0:アナログ、他ピンは1:デジタルで使用
      TRISB = 0b0000000000001000; //PORTBのRB3(AN5)を1:入力に、他は全て0:出力に設定
      //初期化終わり
      
      while(1)
      {
          //アナログデータの取得 10bit(0~1023)
          temp = ADC_Read(5); //RB3(AN5)アナログ値を取得 
  
      // 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);
          //LED点滅間隔が0-1023msecで滑らかに変更する
          LATBbits.LATB15 = 1; //RB15をON
          Vdelay_ms_p24_p33(temp);
          LATBbits.LATB15 = 0; //RB15をOFF
          Vdelay_ms_p24_p33(temp);
      }
  }
 
 
 ★この情報は役に立ちましたか?
 #vote(はい[0],どちらでもないいいえ[0])
 #vote(はい[9],普通[8],いいえ[10])
 
 #comment