UmberHubManager/api/examples/c_cpp/BrainStem2-Application-Notes/led_test.cpp

101 lines
3.3 KiB
C++
Executable File

/****************************************************************
* Filename: led_test.cpp
* Prepared By: James Dudley
* Date Prepared: February 26, 2018
* Date Revised: February 26, 2018
* Revision: 0.0.1
***************************************************************/
#include "BrainStem2/BrainStem-all.h"
#define RESISTOR_VALUE 412
#define POWER_VOLTAGE 5000000
#define DAC 16
#define CURRENT 14
#define VOLTAGE 0
int main(int argc, const char * argv[]) {
// Create BrainStem object
aMTMDAQ1 daq;
// Initialize error tracker
aErr err = aErrNone;
// Discover and connect to MTM-DAQ-1 object
// Connects to the first USB module discovered
err = daq.discoverAndConnect(USB);
if (err != aErrNone) {
printf("Error connecting to MTM-DAQ-1: %d\n", err);
return 0;
}
// Run the test twice, once with LED power enabled, once with it disabled
int8_t enable = 2;
for (enable = 1; enable >= 0; enable--) {
// Set MTM-DAQ-1 DAC0 (analog 16) to 5V and enable to power LED
err = daq.analog[DAC].setVoltage(POWER_VOLTAGE);
if (err != aErrNone) {
printf("Error setting DAC voltage: %d\n", err);
return 0;
}
err = daq.analog[DAC].setEnable(enable);
if (err != aErrNone) {
printf("Error setting DAC enable to %d: %d\n", enable, err);
return 0;
}
// Set measurement ranges
err = daq.analog[VOLTAGE].setRange(12);
if (err != aErrNone) {
printf("Error setting Position B analog range to +/-10.24V: %d\n", err);
return 0;
}
err = daq.analog[CURRENT].setRange(9);
if (err != aErrNone) {
printf("Error setting Position A->B analog range to +/-5.12V: %d\n", err);
return 0;
}
aTime_MSSleep(1000); // leave the LED on/off for a second
// Read voltage measurements
int32_t v;
err = daq.analog[VOLTAGE].getVoltage(&v);
if (err != aErrNone) {
printf("Error reading Position B voltage: %d\n", err);
return 0;
}
int32_t v_current;
err = daq.analog[CURRENT].getVoltage(&v_current);
if (err != aErrNone) {
printf("Error reading Position A->B differential voltage: %d\n", err);
return 0;
}
// Calculate current
int32_t i = v_current / RESISTOR_VALUE; // I = V / R
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
if (enable) {
printf("MTM-DAQ-1 DAC0 status: enabled\n");
} else {
printf("MTM-DAQ-1 DAC0 status: disabled\n"); }
printf("Position B voltage (uV): %d\n", v);
printf("Position B voltage (V): %.3f\n", (float) v / 1e6);
printf("Position A->B voltage (uV): %d\n", v_current);
printf("Position A->B current (uA): %d\n", i);
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
}
err = daq.analog[DAC].setEnable(0);
if (err != aErrNone) {
printf("Error disabling DAC: %d\n", err);
return 0;
}
daq.disconnect();
return 0;
}