PCF8591を使う(analogWrite編)


前回は低水準IOを使ったアナログ出力の方法を紹介しました。
今回はanalogWrite()を使用したアナログ出力の方法を紹介します。
回路図は前回と同じです。
コードは以下のようになります。
PINBASEには65以上の任意の数字を指定します。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <wiringPi.h>
#include <pcf8591.h>

#define PINBASE 100

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

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

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

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

実行結果は前回と同じになります。