96 lines
1.6 KiB
C++
96 lines
1.6 KiB
C++
//
|
|
// FILE: ADS_async_differential.ino
|
|
// AUTHOR: Rob.Tillaart
|
|
// VERSION: 0.1.0
|
|
// PURPOSE: read multiple differential continuously
|
|
//
|
|
|
|
// test
|
|
// connect 4 potmeters
|
|
//
|
|
// GND ---[ x ]------ 5V
|
|
// |
|
|
//
|
|
// measure at x - connect to AIN0..4.
|
|
//
|
|
//
|
|
|
|
|
|
#include "ADS1X15.h"
|
|
|
|
// choose you sensor
|
|
// ADS1013 ADS(0x48);
|
|
// ADS1014 ADS(0x48);
|
|
// ADS1015 ADS(0x48);
|
|
// ADS1113 ADS(0x48);
|
|
// ADS1114 ADS(0x48);
|
|
ADS1115 ADS(0x48);
|
|
|
|
|
|
uint8_t pair = 01;
|
|
int16_t val_01 = 0;
|
|
int16_t val_23 = 0;
|
|
|
|
|
|
void setup()
|
|
{
|
|
Serial.begin(115200);
|
|
Serial.println(__FILE__);
|
|
Serial.print("ADS1X15_LIB_VERSION: ");
|
|
Serial.println(ADS1X15_LIB_VERSION);
|
|
|
|
ADS.begin();
|
|
ADS.setGain(0); // 6.144 volt
|
|
ADS.setDataRate(4); // medium
|
|
|
|
// single shot mode
|
|
ADS.setMode(1);
|
|
// start with first pair
|
|
pair = 01;
|
|
// trigger first read
|
|
ADS.requestADC_Differential_0_1();
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
if (handleConversion() == true)
|
|
{
|
|
Serial.print("COMP:\t");
|
|
Serial.print(val_01);
|
|
Serial.print("\t");
|
|
Serial.print(val_23);
|
|
Serial.println();
|
|
}
|
|
|
|
// do other stuff here
|
|
delay(10);
|
|
}
|
|
|
|
|
|
// can be changed to hold other differentials reads too.
|
|
bool handleConversion()
|
|
{
|
|
if (ADS.isReady())
|
|
{
|
|
if (pair == 01)
|
|
{
|
|
val_01 = ADS.getValue();
|
|
pair = 23;
|
|
ADS.requestADC_Differential_2_3();
|
|
return false; // only one done
|
|
}
|
|
|
|
// last of series to check
|
|
if (pair == 23)
|
|
{
|
|
val_23 = ADS.getValue();
|
|
pair = 01;
|
|
ADS.requestADC_Differential_0_1();
|
|
return true; // both are updated
|
|
}
|
|
}
|
|
return false; // default not all read
|
|
}
|
|
|
|
// -- END OF FILE --
|