adc example
commit
b98520cf39
@ -0,0 +1,59 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
// Path to the raw adc's values:
|
||||
#define ADC_PATH "/sys/bus/iio/devices/iio:device0/in_voltage%d_raw"
|
||||
|
||||
// Prototype Functions:
|
||||
|
||||
// 1 Function to read ADC value from a given channel (0 to 6)
|
||||
int ReadADC(int channel);
|
||||
|
||||
|
||||
// main:
|
||||
int main( ) {
|
||||
printf("Starting ADC program\n");
|
||||
|
||||
int channel = 0; // select the channel 0 - 6
|
||||
int adcVal = ReadADC(channel);
|
||||
|
||||
if (adcVal >= 0) {
|
||||
printf("ADC Channel %d raw value: %d\n", channel, adcVal);
|
||||
} else {
|
||||
printf("Failed to read ADC value\n");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int ReadADC(int channel) {
|
||||
char filePath[64];
|
||||
char buffer[16];
|
||||
int fd, adcValue;
|
||||
|
||||
// file path to adc
|
||||
snprintf(filePath, sizeof(filePath), ADC_PATH, channel);
|
||||
//printf(filePath);
|
||||
|
||||
// open the ADC file
|
||||
fd = open(filePath, O_RDONLY);
|
||||
if (fd < 0){
|
||||
perror("Unable to open ADC Path");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// read ADC value
|
||||
if (read(fd, buffer, sizeof(buffer)) < 0) {
|
||||
perror("Unable to read ADC value");
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// converting string to int
|
||||
adcValue = atoi(buffer);
|
||||
close(fd);
|
||||
|
||||
return adcValue;
|
||||
}
|
Loading…
Reference in New Issue