fork from github
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
//
|
||||
// FILE: ADS_continuous_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);
|
||||
|
||||
|
||||
// interrupt flag
|
||||
volatile bool RDY = false;
|
||||
// which pair to use for differential
|
||||
uint8_t pair = 01;
|
||||
// two values to hold differential measurements.
|
||||
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);
|
||||
|
||||
// SET INTERRUPT HANDLER TO CATCH CONVERSION READY
|
||||
pinMode(2, INPUT_PULLUP);
|
||||
attachInterrupt(digitalPinToInterrupt(2), adsReady, RISING);
|
||||
|
||||
ADS.begin();
|
||||
Serial.print("connected: ");
|
||||
Serial.println(ADS.isConnected());
|
||||
ADS.setGain(0); // 6.144 volt
|
||||
ADS.setDataRate(0); // 0 = slow 4 = medium 7 = fast (7 = fails )
|
||||
// every step is about a factor 2 slower.
|
||||
|
||||
// SET ALERT RDY PIN
|
||||
ADS.setComparatorThresholdHigh(0x8000);
|
||||
ADS.setComparatorThresholdLow(0x0000);
|
||||
ADS.setComparatorQueConvert(0);
|
||||
|
||||
// continuous mode
|
||||
ADS.setMode(0);
|
||||
// start with first pair
|
||||
pair = 01;
|
||||
// trigger first read
|
||||
ADS.requestADC_Differential_0_1();
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
static uint32_t last = 0;
|
||||
if (handleConversion() == true)
|
||||
{
|
||||
uint32_t now = millis();
|
||||
Serial.print(now - last);
|
||||
last = now;
|
||||
Serial.print("\tCOMP:\t");
|
||||
Serial.print(val_01);
|
||||
Serial.print("\t");
|
||||
Serial.print(val_23);
|
||||
Serial.println();
|
||||
}
|
||||
|
||||
// do other stuff here
|
||||
// delay(10);
|
||||
}
|
||||
|
||||
// interrupt handler, just sets the RDY flag
|
||||
void adsReady()
|
||||
{
|
||||
RDY = true;
|
||||
}
|
||||
|
||||
// can be changed to hold other differentials or normal reads too.
|
||||
bool handleConversion()
|
||||
{
|
||||
if (RDY)
|
||||
{
|
||||
RDY = false;
|
||||
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 --
|
||||
Reference in New Issue
Block a user