You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.2 KiB
C

2 months ago
#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;
}