I am running a sketch on a teensy 3.5 with a teensy audio board of the latest version. I am using peak detection to follow the beats in music and to control a stepper motor with accelstepper. Everything is working but i am getting unintended stepper motion even when there is no input signal and no peaks should be detected at all. This motion directly follows the blinking of the onboard LED on the teeensy. I get the same random flickering running the example sketch shown below.
My question is, what does the LED flashing represent? Pin 13 is connected to the SGTL5000 rx line so it is necessary. Why is the onboard LED pin used for this and what causes it to flicker? When there is input the LED is virtually steady. I have a few more things to test but it would be very helpful to know what this flickering indicates.
My question is, what does the LED flashing represent? Pin 13 is connected to the SGTL5000 rx line so it is necessary. Why is the onboard LED pin used for this and what causes it to flicker? When there is input the LED is virtually steady. I have a few more things to test but it would be very helpful to know what this flickering indicates.
Code:
/* Stereo peak meter example, assumes Audio adapter but just uses terminal so no more parts required.
This example code is in the public domain
*/
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>
const int myInput = AUDIO_INPUT_LINEIN;
// const int myInput = AUDIO_INPUT_MIC;
AudioInputI2S audioInput; // audio shield: mic or line-in
AudioAnalyzePeak peak_L;
AudioAnalyzePeak peak_R;
AudioOutputI2S audioOutput; // audio shield: headphones & line-out
AudioConnection c1(audioInput,0,peak_L,0);
AudioConnection c2(audioInput,1,peak_R,0);
AudioConnection c3(audioInput,0,audioOutput,0);
AudioConnection c4(audioInput,1,audioOutput,1);
AudioControlSGTL5000 audioShield;
void setup() {
AudioMemory(6);
audioShield.enable();
audioShield.inputSelect(myInput);
audioShield.volume(0.5);
Serial.begin(9600);
}
// for best effect make your terminal/monitor a minimum of 62 chars wide and as high as you can.
elapsedMillis fps;
uint8_t cnt=0;
void loop() {
if(fps > 24) {
if (peak_L.available() && peak_R.available()) {
fps=0;
uint8_t leftPeak=peak_L.read() * 30.0;
uint8_t rightPeak=peak_R.read() * 30.0;
for(cnt=0;cnt<30-leftPeak;cnt++) {
Serial.print(" ");
}
while(cnt++<30) {
Serial.print("<");
}
Serial.print("||");
for(cnt=0;cnt<rightPeak;cnt++) {
Serial.print(">");
}
while(cnt++<30) {
Serial.print(" ");
}
Serial.println();
}
}
}