Hi friends,
I'm trying to read the voltage inputs from two analog IR distance sensors
plugged into AIN0 and AIN1 using C++ code.
I used Derek Molloy's code which can successfully read voltage values from
one Analog pin. However, whenever I modify the code and try to read more
than one analog pin, *I receive this error: *
terminate called after throwing an instance of 'std::ios_base::failure'
what(): basic_filebuf::underflow error reading the file
Aborted
I'm not really sure what this error is or why I'm getting it. Please let me
know if you have knowledge on this matter:
*Code is as follows: *
#include<iostream>
#include<fstream>
#include<string>
#include<sstream>
#include<cmath>
using namespace std;
#define LDR_PATH "/sys/bus/iio/devices/iio:device0/in_voltage"
int readAnalog(int number){
stringstream ss;
ss << LDR_PATH << number << "_raw";
fstream fs;
fs.open(ss.str().c_str(), fstream::in);
fs >> number;
fs.close();
return number;
}
int main(int argc, char* argv[]){
cout << "Starting the IR distance sensor program:" << endl;
while(1) {
int value0 = readAnalog(0);
int value1 = readAnalog(1);
float V0 = ((float)value0 / 4096) * 1.8;
float V1 = ((float)value1 / 4096) * 1.8;
cout << "Sensor0 is: " << V0 << " Sensor1 is: " << V1 << '\r' <<
flush;
usleep(100000);
}
return 0;
}
I know this is some sort of access error, and there is a workaround for the
python libraries
(see:
https://github.com/adafruit/adafruit-beaglebone-io-python/blob/master/source/c_adc.c
). But I am unsure as to how I can use this information in the context of
C++ code.
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.