I'm trying to test the sample waveform.ino file present in the audio example on a Tensy3.2, but it doesn't work well with me!
I tested the knobs and potentiometers on the serial monitor, its ok.
I don't have the audio kit, just knobs and potentiometers .
I use an oscilloscope to see the waves.
The waves are present on pins 9 and 11, i can see it!
My problem: if I turn the potentiometers nothing happens, the frequency or the phase does not change!
What did I miss?
CODE + an other file myWaveforms:
I tested the knobs and potentiometers on the serial monitor, its ok.
I don't have the audio kit, just knobs and potentiometers .
I use an oscilloscope to see the waves.
The waves are present on pins 9 and 11, i can see it!
My problem: if I turn the potentiometers nothing happens, the frequency or the phase does not change!
What did I miss?
CODE + an other file myWaveforms:
Code:
// Waveform Example - Create 2 waveforms with adjustable
// frequency and phase
//
// This example is meant to be used with 3 buttons (pin 0,
// 1, 2) and 2 knobs (pins 16/A2, 17/A3), which are present
// on the audio tutorial kit.
// [URL]https://www.pjrc.com/store/audio_tutorial_kit.html[/URL]
//
// Use an oscilloscope to view the 2 waveforms.
//
// Button0 changes the waveform shape
//
// Knob A2 changes the frequency of both waveforms
// You should see both waveforms "stretch" as you turn
//
// Knob A3 changes the phase of waveform #1
// You should see the waveform shift horizontally
//
// This example code is in the public domain.
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>
#include <Bounce.h>
AudioSynthWaveform waveform1; //xy=171,84
AudioSynthWaveform waveform2; //xy=178,148
AudioOutputI2S i2s1; //xy=360,98
AudioOutputAnalogStereo dacs1; //xy=372,173
AudioConnection patchCord1(waveform1, 0, i2s1, 0);
AudioConnection patchCord2(waveform1, 0, dacs1, 0);
AudioConnection patchCord3(waveform2, 0, i2s1, 1);
AudioConnection patchCord4(waveform2, 0, dacs1, 1);
AudioControlSGTL5000 sgtl5000_1; //xy=239,232
Bounce button0 = Bounce(0, 15);
Bounce button1 = Bounce(1, 15);
Bounce button2 = Bounce(2, 15);
int current_waveform=0;
extern const int16_t myWaveform[256]; // defined in myWaveform.ino
void setup() {
Serial.begin(9600);
pinMode(0, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
pinMode(2, INPUT_PULLUP);
// Audio connections require memory to work. For more
// detailed information, see the MemoryAndCpuUsage example
AudioMemory(10);
// Comment these out if not using the audio adaptor board.
// This may wait forever if the SDA & SCL pins lack
// pullup resistors
//sgtl5000_1.enable();
//sgtl5000_1.volume(0.8); // caution: very loud - use oscilloscope only!
// Confirgure both to use "myWaveform" for WAVEFORM_ARBITRARY
waveform1.arbitraryWaveform(myWaveform, 172.0);
waveform2.arbitraryWaveform(myWaveform, 172.0);
// configure both waveforms for 440 Hz and maximum amplitude
waveform1.frequency(440);
waveform2.frequency(440);
waveform1.amplitude(1.0);
waveform2.amplitude(1.0);
current_waveform = WAVEFORM_TRIANGLE;
waveform1.begin(current_waveform);
}
void loop() {
// Read the buttons and knobs, scale knobs to 0-1.0
button0.update();
button1.update();
button2.update();
float knob_A2 = (float)analogRead(A2) / 1023.0;
float knob_A3 = (float)analogRead(A3) / 1023.0;
AudioNoInterrupts();
// use Knob A2 to adjust the frequency of both waveforms
waveform1.frequency(100.0 + knob_A2 * 900.0);
waveform2.frequency(100.0 + knob_A2 * 900.0);
// use Knob A3 to adjust the phase of only waveform #1
waveform1.phase(knob_A3 * 360.0);
AudioInterrupts();
// Button 0 changes the waveform type
if (button0.fallingEdge()) {
switch (current_waveform) {
case WAVEFORM_SINE:
current_waveform = WAVEFORM_SAWTOOTH;
Serial.println("Sawtooth");
break;
case WAVEFORM_SAWTOOTH:
current_waveform = WAVEFORM_SAWTOOTH_REVERSE;
Serial.println("Reverse Sawtooth");
break;
case WAVEFORM_SAWTOOTH_REVERSE:
current_waveform = WAVEFORM_SQUARE;
Serial.println("Square");
break;
case WAVEFORM_SQUARE:
current_waveform = WAVEFORM_TRIANGLE;
Serial.println("Triangle");
break;
case WAVEFORM_TRIANGLE:
current_waveform = WAVEFORM_TRIANGLE_VARIABLE;
Serial.println("Variable Triangle");
break;
case WAVEFORM_TRIANGLE_VARIABLE:
current_waveform = WAVEFORM_ARBITRARY;
Serial.println("Arbitary Waveform");
break;
case WAVEFORM_ARBITRARY:
current_waveform = WAVEFORM_PULSE;
Serial.println("Pulse");
break;
case WAVEFORM_PULSE:
current_waveform = WAVEFORM_SAMPLE_HOLD;
Serial.println("Sample & Hold");
break;
case WAVEFORM_SAMPLE_HOLD:
current_waveform = WAVEFORM_SINE;
Serial.println("Sine");
break;
}
AudioNoInterrupts();
waveform1.begin(current_waveform);
waveform2.begin(WAVEFORM_SINE);
AudioInterrupts();
}
}
Last edited by a moderator: