次に、PIC12F675 の A/D (アナログ/デジタル)変換機能を使ってみます。A/D 変換を用いると、入力ポートに接続された電圧などのアナログ値を、プログラムからデジタル データとして扱うことができるようになります。これを利用して、PIC に様々なセンサを接続することで、電圧や明るさ、温度、湿度などに応じて処理を変化させることができるようになります。
#include <htc.h>
__CONFIG (FOSC_INTRCIO // 内蔵オシレータ
& WDTE_OFF // WDT 無効
& PWRTE_OFF // PWRT 無効
& MCLRE_OFF // MCLR 使用しない
& BOREN_OFF // BOD 無効
& CP_OFF // Program Memory code protection 無効
& CPD_OFF // Data memory code protection 無効
);
void main ()
{
// ポートの入出力方向を設定
// GP0 OUT - LED1
// GP1 OUT - LED2
// GP2 IN - Analog
// GP3 IN - NC
// GP4 OUT - LED3
// GP5 OUT - LED4
TRISIO = 0b00001100;
// 内蔵クロックを使用、AN2 を使用
ANSEL = 0b00110100;
// コンパレータは使用しない(必要)
CMCON = 0b00000111;
GPIO = 0;
while (1) {
// 右詰め、VDD基準、AN2、ADON(必要)
ADCON0 = 0b10001001;
// A/D変換を開始
GO = 1;
// A/D変換の終了を待つ
while (GO)
continue;
if ((ADRESH & 3) == 0) GPIO0 = 1, GPIO1 = 0, GPIO4 = 0, GPIO5 = 0;
if ((ADRESH & 3) == 1) GPIO0 = 0, GPIO1 = 1, GPIO4 = 0, GPIO5 = 0;
if ((ADRESH & 3) == 2) GPIO0 = 0, GPIO1 = 0, GPIO4 = 1, GPIO5 = 0;
if ((ADRESH & 3) == 3) GPIO0 = 0, GPIO1 = 0, GPIO4 = 0, GPIO5 = 1;
}
}
回路はほぼそのままに、LED の出力部分を流用し、入力ポートに可変抵抗を接続します。可変抵抗を操作することで、GP2 の電圧を VDD から GND レベルまで変化させることができます。
寄せられたコメント (全 1 件中、最新 5 件まで表示しています)
PICプログラマーも持ってますがしばらく使ってないですねえ。