開始 | 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.