#include "driver/dac.h"
#include "esp_rom_sys.h"

// Tableau de valeurs pour une onde sinusoïdale (8 bits, entre 0 et 255)
const uint8_t sine_wave[64] = {
    128, 140, 153, 165, 177, 188, 198, 207, 215, 222, 227, 231, 234, 235, 235, 234,
    231, 227, 222, 215, 207, 198, 188, 177, 165, 153, 140, 128, 115, 102,  90,  78,
     66,  55,  45,  36,  28,  21,  16,  12,   9,   8,   8,   9,  12,  16,  21,  28,
     36,  45,  55,  66,  78,  90, 102, 115
};

void setup() {
  Serial.begin(115200);
  dac_output_enable(DAC_CHANNEL_1);

  // Configuration initiale (facultative)
  dac_output_voltage(DAC_CHANNEL_1, 128); // Niveau moyen
}

void loop() {
  unsigned long start = micros();
  for(int i = 0;i<1000;i++){
   dac_output_voltage(DAC_CHANNEL_1, i % 256);//sine_wave[i]); // Écrire la valeur sur le DAC
  //  esp_rom_delay_us(50); // Ajuster pour la fréquence souhaitée (ici ~312Hz)
  // Effectuer plusieurs écritures DAC
 // for (int i = 0; i < 1000; i++) {
   // dacWrite(25, i % 256);
  }
  
  unsigned long duration = micros() - start;
  Serial.print(float(duration)/1000,2); // Temps pour 1000 écritures
  Serial.println("uS");
  delay(1000);
}