次に、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プログラマーも持ってますがしばらく使ってないですねえ。