この図はデータシートからの拝借ですが、SPIで接続します。| 開始 | SGL/ DIFF |
D2 | D1 | D0 |

xは"0"でも"1"でもお好きな方で、?は"0"or"1"何方か不明、見ないデータです。

---------------------------------------------------------------------
#include <SPI.h>
#define MCP3208_CS 10
void setup()
{
// シリアルモニターの設定
Serial.begin(9600) ;
// SPIの初期化
SPI.begin() ; // SPIを行う為の初期化
SPI.setBitOrder(MSBFIRST) ; // ビットオーダー
SPI.setDataMode(SPI_MODE1) ; // CLK極性 0(idle=LOW) CLK位相 1(LOW > HIGH)
SPI.setClockDivider(SPI_CLOCK_DIV8) ; // SPI通信クロック(CLK)は2MHz
delay(3000) ; // 3Sしたら開始
}
void loop()
{
int dt ;
// MCP3208のCH0からアナログ値を読み込む
dt = ADC_analogRead(MCP3208_CS,0) ;
Serial.print("Analog CH0=") ;
Serial.println(dt) ;
delay(1000) ;
}
// ADC_analogRead(ss,channel) MCP3208からアナログ値を読み取る処理
// ss : SPIのSS(CS)ピン番号を指定する
// channel : 読み取るチャンネルを指定する(0-7ch)
int ADC_analogRead(int ss,int channel)
{
static char f ;
int d1 , d2 ;
// 指定されたSSピンを出力に設定する(但し最初コールの1回のみ)
if (f != 1) {
pinMode(ss,OUTPUT) ;
digitalWrite(ss,HIGH) ;
f = 1 ;
delay(1) ;
}
// ADCから指定チャンネルのデータを読み出す
digitalWrite(ss,LOW) ; // SS(CS)ラインをLOWにする
d1 = SPI.transfer( 0x06 | (channel >> 2) ) ;
d1 = SPI.transfer( channel << 6 ) ;
d2 = SPI.transfer(0x00) ;
digitalWrite(ss,HIGH) ; // SS(CS)ラインをHIGHにする
return (d1 & 0x0F)*256 + d2 ;
}
---------------------------------------------------------------------
ADC_analogRead( )関数について
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2020 Shigehiro Kimura All Rights Reserved.