// Basic demo for configuring the MCP4728 4-Channel 12-bit I2C DAC #include #include Adafruit_MCP4728 mcp; int tuning[13]; int scale[] = { 0, 4, 7, 9, 12 }; float voltrange = 5.0; // measured this, probably not accurate float octave = 4096.0 / voltrange; // number of DAC steps in an octave void setup(void) { Serial.begin(115200); while (!Serial) delay(10); // will pause Zero, Leonardo, etc until serial console opens if (!mcp.begin(0x64)) { Serial.println("Failed to find MCP4728 chip"); while (1) { delay(10); } Serial.println("MCP4728 initialised"); } Serial.println(octave); float n0 = 2048; for( int i = 0; i < 13; i++ ) { tuning[i] = round(n0 + octave * (float)i / 12); Serial.println(tuning[i]); } } void loop() { for( int i = 0; i < 5; i++ ) { mcp.setChannelValue(MCP4728_CHANNEL_A, tuning[scale[i]]); delay(200); } }