1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /*
- I2S sine wave
- This example produces a digital sine wave on the build in DAC1
- which is connected to the speaker
- Hardware:
- microcontroller board: M5StackFire
- speaker amplifier internaly connected to DAC pin 25
- September 2018 ChrisMicro
- */
- #define DACPIN 25 // speaker DAC, only 8 Bit
- #define SAMPLINGFREQUENCY 44100
- #define NUMBEROFSAMPLES SAMPLINGFREQUENCY * 1 // paly 1 seconds
- #define DAC_MAX_AMPLITUDE 127 / 4 // max value is 127, but it is too loud
- #define AUDIOBUFFERLENGTH NUMBEROFSAMPLES
- uint8_t AudioBuffer[AUDIOBUFFERLENGTH];
- void setup() {
- const float frequency = 440;
- const float amplitude = DAC_MAX_AMPLITUDE;
- // store sine wave in buffer
- for (int n = 0; n < NUMBEROFSAMPLES; n++) {
- int16_t sineWaveSignal =
- (sin(2 * PI * frequency / SAMPLINGFREQUENCY * n)) * amplitude;
- AudioBuffer[n] = sineWaveSignal + 128;
- }
- }
- void loop() {
- uint32_t start = micros();
- for (int n = 0; n < NUMBEROFSAMPLES; n++) {
- // wait for next sample
- while (start + (1000000UL / SAMPLINGFREQUENCY) > micros())
- ;
- start = micros();
- dacWrite(DACPIN, AudioBuffer[n]);
- }
- delay(3000);
- }
|