Как установить АЦП MCP3428 в 16-битный режим с фотоном частиц

Я пытаюсь использовать АЦП MCP3428 с фотоном частицы для считывания напряжения с 16-битным разрешением. Я прошил пример кода MCP3428.ino из ControlEverythingCommunity на GitHub (код ниже), и он работает в режиме 12-битного разрешения. Мне интересно, что мне нужно изменить, чтобы вместо этого запустить АЦП MCP3428 в 16-битном режиме.

#include <application.h>
#include <spark_wiring_i2c.h>

// MCP3428 I2C address is 0x68(104)
#define Addr 0x68

int raw_adc = 0;
void setup() 
{
// Set variable
Particle.variable("i2cdevice", "MCP3428");
Particle.variable("rawADC", raw_adc);

// Initialise I2C communication as MASTER
Wire.begin();
// Start serial communication and set baud rate = 9600
Serial.begin(9600);

// Start I2C Transmission
Wire.beginTransmission(Addr);
// Select configuration command
// Continuous conversion mode, Channel-1, 12-bit resolution
Wire.write(0x10);
// Stop I2C Transmission
Wire.endTransmission();
}

void loop()
{
unsigned int data[2];

// Start I2C Transmission
Wire.beginTransmission(Addr);
// Select data register
Wire.write(0x00);
// Stop I2C Transmission
Wire.endTransmission();

// Request 2 bytes of data
Wire.requestFrom(Addr,2);

// Read 2 bytes of data
// raw_adc msb, raw_adc lsb
if(Wire.available() == 2)
{
    data[0] = Wire.read();
    data[1] = Wire.read();
}

// Convert the data to 12-bits
int raw_adc = (data[0] & 0x0F) * 256 + data[1];
if(raw_adc > 2047)
{
  raw_adc -= 4095;
}

// Output data to dashboard
Particle.publish("Digital value of Analog Input : ", String(raw_adc));
delay(1000);
}

0 ответов

Другие вопросы по тегам