int read_voltage(int channel) { // 选择通道 digitalWrite(CHIP_SELECT_PIN, LOW); SPI.transfer(channel << 4);
// 读取16位数据 int value = (SPI.transfer(0) << 8) | SPI.transfer(0);
// 解析数据并转换为电压值 float voltage = (value - 32768) * 10.0 / 32768.0;
// 取消CS引脚 digitalWrite(CHIP_SELECT_PIN, HIGH);
return voltage; }
// 读取通道0的电压值 float voltage_ch0 = read_voltage(0);
void read_all_channels(float voltages[]) { // 启动多通道扫描模式 digitalWrite(CHIP_SELECT_PIN, LOW); SPI.transfer(0x8A);
// 分别读取每个通道的电压值 for (int i = 0; i < 8; i++) { // 读取16位数据 int value = (SPI.transfer(0) << 8) | SPI.transfer(0);
// 解析数据并转换为电压值
float voltage = (value - 32768) * 10.0 / 32768.0;
// 将电压值存储到数组中
voltages[i] = voltage;
}
// 取消CS引脚 digitalWrite(CHIP_SELECT_PIN, HIGH); }
// 读取所有通道的电压值 float voltages[8]; read_all_channels(voltages);
// 获取通道0的电压值 float voltage_ch0 = voltages[0];