PCF8591を使う(analogRead編)


前回はwiringPiI2CWrite()を使用した PCF8591の使用方法 を紹介しました。
今回はanalogRead()を使用したPCF8591の使用方法を紹介します。
回路は前回と同じで、コードは以下のようになります。
PINBASEには65以上の任意の数字を指定します。
#include <wiringPi.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <pcf8591.h>

#define PINBASE 100

/*
cc -o test2 test2.c -lwiringPi
*/

int main (void)
{
    int i;
    int a2dChannel = 0; // analog channel
    int a2dVal;
    float a2dVol;
    float Vref = 3.3;

    if (pcf8591Setup(PINBASE, 0x48) < 0)
    {
        printf("pcf8591Setup failed:\n");
    }

    for(i=0;i<20;i++) {
        a2dVal = analogRead(PINBASE + a2dChannel);
        a2dVol = a2dVal * Vref / 255;
        printf("a2dVal=%d\n",a2dVal);
        printf("a2dVol=%f[V]\n",a2dVol);
        sleep(1);
    }
}


実行結果は前回と同じになります。
このチップは4チャンネルのADと1チャンネルのDAを持っています。
DAはあまり使う機会はないと思いますが、こちらで DAコンバータの使い方を紹介しています。

次回は少し変則的ですが、コマンドラインからPCF8591を使う方法を紹介し ます。