#include "pico/stdlib.h"
#include "hardware/dac.h"
#include <math.h>
#define NUM_SAMPLES 100
#define AMPLITUDE 2047 // Half of the DAC's range (0 to 4095)
#define FREQUENCY 1000 // Frequency of the sine wave in Hz
#define SAMPLE_RATE 20000 // Sampling rate in Hz
void generate_sine_wave(float frequency, uint16_t *buffer, size_t buffer_length) {
float increment = 2.0 * M_PI * frequency / SAMPLE_RATE;
for (size_t i = 0; i < buffer_length; i++) {
float value = AMPLITUDE * sin(increment * i);
buffer[i] = (uint16_t)(AMPLITUDE + value); // Offset by AMPLITUDE to keep the wave positive
}
}
int main() {
stdio_init_all();
uint16_t waveform[NUM_SAMPLES];
generate_sine_wave(FREQUENCY, waveform, NUM_SAMPLES);
//dac_init(0); // Initialize DAC on GPIO0
dac_set_irq_enabled(true);
while (true) {
for (size_t i = 0; i < NUM_SAMPLES; i++) {
dac_write_buffer(dac_hw0, waveform, NUM_SAMPLES);
sleep_ms(1000 / SAMPLE_RATE); // Adjust sleep time for desired frequency
}
}
return 0;
}