parent
029b9b3769
commit
4aa3331304
@ -0,0 +1,64 @@ |
|||||||
|
/* AM_PM_FM.ino Bob Larkin 20 April 2021
|
||||||
|
*
|
||||||
|
* This tests the radioModulatedGenerator class in AM and |
||||||
|
* FM for the simple case of sine wave modulation. The "carrier |
||||||
|
* is 15000 Hz and a single output is produced. This is only |
||||||
|
* a partial test of the class as it supports phase modulation and |
||||||
|
* formats such as QAM. |
||||||
|
*
|
||||||
|
* Public Domain |
||||||
|
*/ |
||||||
|
|
||||||
|
#include "AudioStream_F32.h" |
||||||
|
#include "OpenAudio_ArduinoLibrary.h" |
||||||
|
#include "Arduino.h" |
||||||
|
#include "Audio.h" |
||||||
|
|
||||||
|
// ***************** CONTROLS **********************
|
||||||
|
// Comment out one of the next two:
|
||||||
|
#define DO_AM |
||||||
|
//#define DO_FM
|
||||||
|
|
||||||
|
// *******************************************************
|
||||||
|
|
||||||
|
// Use SineCosine as it allows amplitudes greater than
|
||||||
|
// 1.0 (this is FP and that is OK). Use 0 channnel only.
|
||||||
|
AudioSynthSineCosine_F32 sine1; |
||||||
|
//AudioSynthWaveformSine_F32 sine1; // Restricts amplitude
|
||||||
|
radioModulatedGenerator_F32 modGen1; |
||||||
|
AudioOutputI2S_F32 i2sOut1; |
||||||
|
|
||||||
|
#ifdef DO_AM |
||||||
|
AudioConnection_F32 pcord0(sine1, 0, modGen1, 0); |
||||||
|
#endif |
||||||
|
#ifdef DO_FM |
||||||
|
AudioConnection_F32 pcord0(sine1, 0, modGen1, 1); |
||||||
|
#endif |
||||||
|
|
||||||
|
AudioConnection_F32 pcord1(modGen1, 0, i2sOut1, 0); |
||||||
|
AudioControlSGTL5000 codec1; |
||||||
|
|
||||||
|
void setup(void) { |
||||||
|
AudioMemory_F32(25); |
||||||
|
Serial.begin(300); delay(1000); |
||||||
|
Serial.println("*** Test Modulated Generator ***"); delay(2000); |
||||||
|
codec1.enable(); // MUST be before inputSelect()
|
||||||
|
codec1.inputSelect(AUDIO_INPUT_LINEIN); |
||||||
|
|
||||||
|
sine1.frequency(567.0f); // Modulation frequency
|
||||||
|
modGen1.frequency(15000.0f); // Carrier frequency
|
||||||
|
#ifdef DO_AM |
||||||
|
sine1.amplitude(1.0f); // 100% AM modulation
|
||||||
|
modGen1.amplitude(0.25); // Total including AM peaks less than +/-1.0
|
||||||
|
modGen1.doModulation_AM_PM_FM(true, false, false, false); //AM, single output
|
||||||
|
#endif |
||||||
|
|
||||||
|
#ifdef DO_FM |
||||||
|
sine1.amplitude(3000.0f); // 3 kHz deviation
|
||||||
|
modGen1.amplitude(1.0); // Max DAC level
|
||||||
|
modGen1.doModulation_AM_PM_FM(false, false, true, false); //FM, single output
|
||||||
|
#endif |
||||||
|
} |
||||||
|
|
||||||
|
void loop(void) { |
||||||
|
} |
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue