mirror of
https://github.com/erik-toth/audio-synth.git
synced 2025-12-06 11:20:02 +00:00
Schematic + Code Updates
- ESP32-S3 Komplett - MC4728 Komplett + Test Skript
This commit is contained in:
57
dev/digital/DAC_MCP4728_Test/src/main.cpp
Normal file
57
dev/digital/DAC_MCP4728_Test/src/main.cpp
Normal file
@@ -0,0 +1,57 @@
|
||||
#include <Wire.h>
|
||||
#include <Adafruit_MCP4728.h>
|
||||
|
||||
#define BAUDRATE 115200
|
||||
|
||||
#define I2C_SDA 15
|
||||
#define I2C_SCL 16
|
||||
#define I2C_FREQ 400000
|
||||
|
||||
#define DAC_MAX 4095
|
||||
#define DAC_MIN 0
|
||||
#define VREF_mV 5000
|
||||
|
||||
Adafruit_MCP4728 mcp;
|
||||
|
||||
static uint16_t value_mV = VREF_mV;
|
||||
|
||||
uint16_t voltage(uint16_t mV)
|
||||
{
|
||||
return map(mV, 0, VREF_mV, DAC_MIN, DAC_MAX);
|
||||
}
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(BAUDRATE);
|
||||
delay(1000);
|
||||
Serial.print("\n\r--- ESP32-S3 + MCP4728 DAC Test ---");
|
||||
|
||||
Wire.begin(I2C_SDA, I2C_SCL);
|
||||
Wire.setClock(I2C_FREQ);
|
||||
|
||||
Serial.print("\n\rInitialisiere MCP4728...");
|
||||
uint8_t attempts = 0;
|
||||
while (!mcp.begin())
|
||||
{
|
||||
Serial.print(".");
|
||||
delay(100);
|
||||
}
|
||||
Serial.print("\n\rErfolgreich verbunden!");
|
||||
|
||||
mcp.setChannelValue(MCP4728_CHANNEL_A, 0, MCP4728_VREF_INTERNAL, MCP4728_GAIN_2X);
|
||||
Serial.print("\n\rDAC-Kanal A auf 0 gesetzt");
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
value_mV = 200;
|
||||
bool success = mcp.setChannelValue(MCP4728_CHANNEL_A, voltage(value_mV));
|
||||
|
||||
if (success) Serial.printf("DAC A = %u -> mV: %u\r\n", voltage(value_mV), value_mV);
|
||||
else Serial.println("Schreibfehler am MCP4728!");
|
||||
delay(200);
|
||||
|
||||
//value_mV = value_mV > 0 ? value_mV/2 : VREF_mV;
|
||||
}
|
||||
Reference in New Issue
Block a user