Lichtorgel mit Arduino per PWM

Hallo,

Ich habe vor eine 3-Kanal Lichtorgel mit LED-Strips und einem Arduino Uno zu bauen.
Angefangen habe ich mit einem Tiefpass(Hochpass und Bandpass kommen natürlich auch noch dazu) durch das mein Audiosignal läuft, danach noch durch eine Diode zum gleichrichten und dann auf einen analogen Eingang vom Arduino.

Vom Pin 3 des Arduino gehe ich zu einem Transistor der dann die 1. Farbe des LED-Strips steuert.

Da ich kein Experte im Gebiet des Arduinos bin habe ich zuerst gegooglet und eine Programmierung gefunden bei der man aber einen Lüfter mithilfe eines Poti steuert, dies habe ich etwas verändert, aber nun kommt mein Problem:
Statt das die LED auf dem Streifen sich dimmen blinken sie je nach Frequenz unterschiedlich auf, woran könnte das liegen ?

Hier noch die Programmierung :

const int LEDPin = 3;         // LED-Strip an Pin 3 angeschlossen
const int AudioPin = A0 ;    // Audiosignal am analogen Eingang Pin 0 angeschlossen



int LEDLight = 0;            // Variable fuer die LED-Helligkeit
int AudioVar = 0 ;           // Variable zum speichern des Audioeingangs
 
 
 
void setup() {
  
  
  Serial.begin(9600);
  pinMode(LEDPin, OUTPUT) ;      //Setzt den LEDPin als Ausgang
  pinMode(AudioPin, INPUT) ;      //Setzt das Audiosignal als Eingang
}
 
 
 
void loop() {
  
  AudioVar = analogRead(AudioPin) ;             
  LEDLight = map(AudioVar, 51, 1023, 60, 255);    
 

 if(AudioVar < 40) {                  
    LEDLight = 0;
  }
  
  Serial.println(LEDLight);          
  analogWrite(LEDPin, LEDLight);     
}

Denkfehler: Selbst, wenn die Spannung mit einer Diode "gleichgerichtet" wird (eigentlich schneidest Du nur eine Halbwelle ab), gibt es Nulldurchgänge = der Messwert ist auch null.

Entweder Schaltung verbessern, oder gleich einen MSGEQ7 nehmen. 7 Band Spectrum Analyzer, dann kann man z.B. sowas machen. Oder sowas. Oder das hier. Oder auch so... Usw., auf meinem Youtube Kanal gibt es mehr von diesen Spielereien.

Oder als schlechter Workarround: Samplingfrequenz erhöhen und jeweils aus 20 Messwerten einen Mittelwert bilden und mit diesem weiterarbeiten.

Gruß, Helmuth

Ja, das mit der Diode war mir klar, aber wenn ich ein 400Hz Signal draufgebe flakert es immernoch und das kann ja nicht an der Diode liegen, da man dieses 400Hz blinken gar nicht mehr sieht.

Das mit dem MSGEQ7 hatte ich mir auch überlegt, der war aber für mich zum Einstieg dann doch zu kompliziert.

Erneut Denkfehler :wink: : Egal, ob Du ein 40 Hz oder 20 kHz Signal misst - die Nulldurchgänge sind da. Deine Messung läuft mit einer definierten Frequenz und die Überlagerung beider Frequenzen (die "Schwebung") erzeugt das Blinken / Flackern. Du misst periodisch mal mehr im Bereich der Null, mal näher am Maximum. Das wird IMMER zu Geflacker führen.

MSGEQ7 kompliziert?! Ein Shield aufstecken und einen Klinkenstecker anschließen finde ich einfacher, als rumlöten...

Gruß, H.