#include #define CS_PIN 10 void setup() { pinMode(CS_PIN, OUTPUT); digitalWrite(CS_PIN, HIGH); SPI.begin(); SPI.setBitOrder(MSBFIRST); SPI.setDataMode(SPI_MODE0); SPI.setClockDivider(SPI_CLOCK_DIV16); // 1MHz } // 设置电位器 (0-255) void setMCP41010(uint8_t value) { digitalWrite(CS_PIN, LOW); SPI.transfer(0x11); // 命令字节: 写数据寄存器 SPI.transfer(value); // 数据字节 digitalWrite(CS_PIN, HIGH); } // 设置截止频率 void setCutoffFrequency(float fc) { float C = 10e-9; // 10nF float R = 1.0 / (2 * PI * fc * C); // MCP41010: 10kΩ电位器 // R_actual = (value/256) * 10kΩ uint8_t value = (uint8_t)((R / 10000.0) * 256); value = constrain(value, 0, 255); setMCP41010(value); } void loop() { // 线性扫频 for(int i=10; i<=255; i+=5) { setMCP41010(i); delay(100); } }