Hi, i'm new to the Arduino programming, I've been trying to make this vu-meter with peak hold and make the top led to fall down slowly, the code works but the top led falls too fast. Can someone help me please?. Thanks!
Here is the code:
int value=0;
int audioValue; // Analog value read from audio channel
int maxAudioValue = 0; // Maximum analog value read from audio channel
int ledLevel;
const int ledCount = 10;
const int numReadings = 20;
int readings[numReadings];
int peak =0;
boolean showPeak = false;
int peakValue = 0;
long lastPeak = 0;
void setup (){
for (int thisReading = 0; thisReading < numReadings; thisReading++)
readings[thisReading] = 0;
}
void loop (){
int ledPins[] = {2,3,4,5,6,7,8,9,10,11};
for (int i = 0; i < ledCount; i++)
pinMode(ledPins[i], OUTPUT);
value = analogRead(A1);
if (value > maxAudioValue)
maxAudioValue = value;
ledLevel = map(value, 0, 1023, 0, 50)-1;
if (ledLevel > ledCount) {
ledLevel = ledCount;
}
//===============================================================
if (millis() > (lastPeak + 2000))
{
peakValue = peakValue -1;
}
if (ledLevel > peakValue)
{
peakValue = ledLevel;
lastPeak = millis();
}
for (int i=0; i<10; i++) {
if (peakValue > ledLevel) {
digitalWrite(ledPins[i], (i <= ledLevel || (!showPeak && i == peakValue-1)));
delay(1);
}
//==================================================================
else{
digitalWrite(ledPins[i], LOW);
delay(5);
}
}
}