const int dacPin = 25; // Pin DAC untuk output simulasi
const int sampleRate = 8000; // Sampling rate dalam Hz
float feedbackGain = 1.02; // Gain feedback (0.0 hingga 1.0)
float systemGain = 0.8; // Gain sistem utama
float delayBuffer[100]; // Buffer untuk meniru delay dalam sistem
int delayIndex = 0; // Indeks untuk buffer delay
const int delayLength = 100; // Panjang delay dalam sampel (misal, 50 sampel)
void setup() {
Serial.begin(115200);
// Inisialisasi buffer delay dengan nilai nol
for (int i = 0; i < delayLength; i++) {
delayBuffer[i] = 0.0;
}
}
void loop() {
// Sinyal input (contoh sinusoidal)
float inputSignal = sin(2 * PI * 1.0 * millis() / 1000.0); // 440 Hz sinusoidal
// Ambil sinyal feedback dari buffer delay
float feedbackSignal = delayBuffer[delayIndex];
// Hitung sinyal output dengan feedback
float outputSignal = systemGain * inputSignal + feedbackGain * feedbackSignal;
Serial.print(inputSignal*1000);
Serial.print(' ');
Serial.print(feedbackSignal*1000);
Serial.print(' ');
Serial.print(outputSignal*1000);
Serial.println();
// Simpan sinyal output ke buffer delay
delayBuffer[delayIndex] = outputSignal;
// Perbarui indeks buffer delay
delayIndex = (delayIndex + 1) % delayLength;
// Konversi sinyal ke nilai DAC (0-255) dan kirim ke DAC
int dacValue = (int)((outputSignal + 1.0) * 127.5); // Normalisasi ke 0-255
dacWrite(dacPin, dacValue);
// Tunggu untuk mencapai sampling rate
delayMicroseconds(1000000 / sampleRate);
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK