LED-Intensität per Arduino + Micro

Hallo zusammen,

meine Lernkurve wird gerade schwer ausgebremst xD

1615132300281.png


Testaufbau inkl. Einspeisung für ein 5V 8A Netzteil.

1615132371976.png


Mikro ist auch ready


eigentlich fehlt mir jetzt nur noch eine Idee wie ich das mit dem Code umsetze.
Das Micro reagiert schon mal.

Hab bisher aber nur so Art Lauflicht gefunden.

Möchte hier ja wie schon gesagt folgendes:

Farbe - konfigurierbar
Helligkeit ohne Analog Signal - konfigurierbar
Helligkeit Schrittweise je nach Analog Signal

:)

Kann mich da jemand unterstützen ?
 
Hi,

also mit dem Code läuft gar nix.
Bzw. es leuchten LEDs aber das Mikro reagiert nicht.


Hab jetz folgenden genommen:

//Develop by creative KHOPDI


//NOTE:-ADJUST/SET BY POTENTIOMETER OF SOUND SENSOR IF LESS NUMBER OF PATTERN OBSERVE

#include <FastLED.h>

int r=152;
int g=0;
int b=10;

#define LED_PIN 7 //CONNECT DATA PIN OF PIXEL WITH 5 NUMBER PIN OF ARDUINO
#define NUM_LEDS 17 //CHANGE THE VALUE IF YOU WANT TO USE DIFFRENT NUMBER OF LED IN YOUR STRIP,HERE IN MY STRIP NUMBER OF LED IS 60 SO I SET IT 60.

CRGB leds[NUM_LEDS];
CRGB led[NUM_LEDS];
int s=0;

void setup() {

FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
for (int i = NUM_LEDS/2; i >= 0; i--)
{
leds = CRGB ( r,g,b);
leds[NUM_LEDS-i] = CRGB (r,g,b );
delay(40);
FastLED.show();
}
Serial.begin(9600);
pinMode(A0,INPUT);

}
void loop()
{
s=analogRead(A0);
s=s*2;
// Serial.println(s);
// delay(50);
if((s>=450)&&(s<=550))
{
leds[(NUM_LEDS/2)-1]=CRGB (0, 0, 255);
leds[NUM_LEDS/2]=CRGB (0, 0, 255);
}
else if((s>=400)&&(s<=450))
{
leds[(NUM_LEDS/2)-1]=CRGB (153, 153, 0);
leds[NUM_LEDS/2]=CRGB (153, 153, 0);
}
else if((s>=350)&&(s<=400))
{
leds[(NUM_LEDS/2)-1]=CRGB (255, 50, 255);
leds[NUM_LEDS/2]=CRGB (255, 50, 255);
}
else if((s>=300)&&(s<=350))
{
leds[(NUM_LEDS/2)-1]=CRGB (10, 25, 217);
leds[NUM_LEDS/2]=CRGB (10, 25, 217);
}

else if((s>=276)&&(s<=300))
{
leds[(NUM_LEDS/2)-1]=CRGB (50, 50, 150);
leds[NUM_LEDS/2]=CRGB (50, 50, 150);
}
else if((s>=250)&&(s<=275))
{
leds[(NUM_LEDS/2)-1]=CRGB (230, 0, 10);
leds[NUM_LEDS/2]=CRGB (230, 0, 10);
}
else if((s>=235)&&(s<=250))
{
leds[(NUM_LEDS/2)-1]=CRGB (0, 160, 0);
leds[NUM_LEDS/2]=CRGB (0, 160, 0);
}
else if((s>=200)&&(s<=230))
{
leds[(NUM_LEDS/2)-1]=CRGB (1, 0, 1);
leds[NUM_LEDS/2]=CRGB (1, 0, 1);
}
else
{
leds[(NUM_LEDS/2)-1] = CRGB ( r,s-100,b);
leds[NUM_LEDS/2] = CRGB ( r,s-100,b);
}
for (int i = 0; i <= ((NUM_LEDS/2)-2); i++)
{
leds = leds[i+1];
leds[NUM_LEDS-1-i] = leds[(NUM_LEDS)-i-2];

}
FastLED.show();
delay(25);

}


dort hab ich zwar zu viel RGB Kirmes - aber das Mikro reagiert auch

Ich check noch nicht wirklich was ich alles ändern muss um einfach eine Farbe zu haben die dann stufenweise heller wird durch vorgegebene Lautstärke

Es soll halt auch kein Licht "wandern" - sondern eigentlich statisch sich ändern in der Helligkeit.
 
Mit CRGB(rot, grün, blau) legst du die Farbe fest
CRGB(255,0,0) ist rot 100% Helligkeit. CRGB(127,0,0) ist rot 50%
CRGB(255,255,0) gelb 100%

Mit leds[0] = CRGB(255,255,0) setzt du die erste led auf gelb.
leds[1] ist die zweite LED usw.

Und in s steht die Lautstärke vom Mikrofon wahrscheinlich zwischen 0 und 1023

Wenn du // vor
// Serial.println(s)

entfernst siehst du den Wert im Serial Monitor

Angenommen dass 1023 der maximale Wert kannst du die erste LED rot abhängig von der Lautstärke mit
leds[0]=CRBG(s * 255/1023 ,0,0); setzen
 
  • Gefällt mir
Reaktionen: RaptorTP
Hey cool - das hilft, ich schau mir das an !
 
Mmmmhh ... bisschen weiter bin ich gekommen.

Hab aber immer noch eine Art "Lauflicht" wenn lautere Signale wahrgenommen werden.

#include <FastLED.h>

int r=0;
int g=0;
int b=75;

#define LED_PIN 7 //CONNECT DATA PIN OF PIXEL WITH 5 NUMBER PIN OF ARDUINO
#define NUM_LEDS 17 //CHANGE THE VALUE IF YOU WANT TO USE DIFFRENT NUMBER OF LED IN YOUR STRIP,HERE IN MY STRIP NUMBER OF LED IS 60 SO I SET IT 60.

CRGB leds[NUM_LEDS];
CRGB led[NUM_LEDS];
int s=0;

void setup() {

FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
for (int i = NUM_LEDS; i >= 0; i--)
{
leds = CRGB ( r,g,b);
leds[NUM_LEDS] = CRGB (r,g,b );
delay(40);
FastLED.show();
}
Serial.begin(9600);
pinMode(A0,INPUT);

}
void loop()
{
s=analogRead(A0);
// Serial.println(s);
// delay(50);
if((s>=50)&&(s<=400))
{
leds[NUM_LEDS]=CRGB (0, 0, 75);
}
else if((s>=350)&&(s<=550))
{
leds[NUM_LEDS]=CRGB (0, 0, 125);
}
else if((s>=500)&&(s<=750))
{
leds[NUM_LEDS]=CRGB (0, 0, 150);
}
else if((s>=700)&&(s<=1000))
{
leds[NUM_LEDS]=CRGB (0, 0, 200);
}
else if((s>=950)&&(s<=1200))
{
leds[NUM_LEDS]=CRGB (0, 0, 255);
}
else
{
leds[NUM_LEDS] = CRGB (0, 0, 255);
}
for (int i = 0; i <= ((NUM_LEDS)); i++)
{
leds = leds[i+1];
leds[NUM_LEDS] = leds[(NUM_LEDS)];

}
FastLED.show();
delay(25);

}



es bleibt an - nicht zu hell und wird bei Lautstärke heller.

Nur muss ich wohl dieses "leds noch da raus bekommen, denke ich.


Mit deiner Methode geht dann nix mehr
Beim Eigenversuch kam ich immer wieder auf

'FastLED' does not name a type


:( ROOKIE
 
Mit meiner "Unwissenheit" vergrault ? 😅
 


Das bekomme ich mit dem oben stehenden Code hin ... :( will aber kein Lauflicht haben.
 
So könnte es funktionieren
NUM_LEDS 17 - stimmt dass wirklich. Ich dachte es sind 150 LEDs ?
(kann es aber nicht testen )
Lass auch mal den Serial Monitor mitlaufen (Ctrl-Shift M) dann siehts du welchen Maximalwert du vom Mikrofon bekommst .
Ich habe 1023 als maximum angenommen. Die RGB Werte gehen von 0 - 255 deswegen wird der neue Blauwert mit
blau = ( gemessene Lautstärke * 256 ) / (maximale Lautstärke+1) berechnet
Im Prinzip kannst du auch gemessene Lautstärke / 4 nehmen das kommt auf's gleiche raus. Ich wollte nur zeigen, dass du die Lautstärke in einen Wert zwischen 0 und 255 umrechnen musst

Code:
#include <FastLED.h>
int r = 0;
int g = 0;
int b = 75;
#define LED_PIN 7 // CONNECT DATA PIN OF PIXEL WITH 5 NUMBER PIN OF ARDUINO
#define NUM_LEDS 17 // CHANGE THE VALUE IF YOU WANT TO USE DIFFRENT NUMBER OF LED IN YOUR
     // STRIP,HERE IN MY STRIP NUMBER OF LED IS 60 SO I SET IT 60.
CRGB leds[NUM_LEDS];
int s = 0;
void setup() {
  FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB(r, g, b);
    FastLED.show();
  }
  Serial.begin(9600);
  pinMode(A0, INPUT);
}
void loop() {
  s = analogRead(A0);
  // Lautstärke im Serial output ausgeben
  Serial.print("Lautstärke: ");
  Serial.println(s);
  delay(50);
  // Wenn die maximale Lautstärke nicht 1023 ist muss der Teiler angepasst werden
  int neuer_blau_wert = s * 256/1024 ;
  // sollte überflüssig sein wenn 1023 wirklich das max. ist.
  if (neuer_blau_wert > 255) {
      neuer_blau_wert = 255 ;
  }
  CRGB led_value = CRGB(0, 0, neuer_blau_wert);
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = led_value;
  }
  FastLED.show();
  delay(25);
}
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: RaptorTP
Sieht sehr sehr gut aus !

nächstes Problem: das Micro skaliert nur wenn ich reinpuste ... aahhh xD

Gibbet doch nicht - also Hardware
Hab noch 2 Stück - die teste ich auch mal
 
Welche Werte zeigt dir denn der Serial Monitor.
Ändere einfach mal
int neuer_blau_wert = s * 256/1024 ;

zu
int neuer_blau_wert = s * 256/512 ;
oder einfach
int neuer_blau_wert = s ;

Im Serial Monitor kannst du sehen welcher Bereich vom Mikrofon ausgelesen wird.
Oder mit dem Faktor experimentieren. Du musst aus s einen Wert zwischen 0 und 255 errechnen
 
Also je nachdem ich eben den Poti drehe, hab ich dann eine Basis - z.B. 120 (schwankend) und wenn ich dann echt laut bin/ reinpuste schlägt es vielleicht +10 oder etwas mehr aus.

Wenn ich reinpuste dann flackert das Licht.
Wird also auch dunkler. Was ja eigentlich nicht sein sollte.

Hab heute ein anderes Micro getestet.
Wollte auch nicht - einmal hatte ich es so das nur 0 oder 1023 ankam.
Denke mal das war dann wohl ein digitales Signal.

Bin echt etwas lost mit dem Thema - kA warum das so viel Aufwand ist sowas banales zu bauen :(
 
Am Potentiometer stellst du ein ab welcher Lautstärke das Mikrofon überhaupt aktiviert wird (Ansprechschwelle)

Du wirst mit der Skalierung experimentieren müssen.


Z.b

neuer_blau_wert = s ;

Eventuell wären die hier besser geeignet https://smile.amazon.de/dp/B08T1V3752/

Zumindest der level ist einstellbar.

Beim ky 037 wird mit dem Potentiometer die Ansprechschwelle nicht die Empfindlichkeit geregelt
 
genau das ist das andere Micro das ich hier habe ...
Das funktioniert noch schlechter - bin echt ratlos.

Bestimm keine große Sache - aber ich hab echt schon einiges ausprobiert.
Es will mir nicht gelingen.

Nicht mal der alte code den ich gepostet habe gut nunmehr.
Beim kompilieren wird gemeckert.

Vorher ging das ohne Probleme.

Also ich bekomme schon noch meist den Code aufs Arduino geladen - trotz allem, kommt eigentlich nur quark bei rum ... :(
 
RaptorTP schrieb:
Das funktioniert noch schlechter - bin echt ratlos.
Das Mikro bzw. die Verstärkerschaltung war vermutlich einfach eine Nummer zu billig für das, was du vorhast.
RaptorTP schrieb:
Vorher ging das ohne Probleme.
Die Lernkurve ist am Anfang immer steil. Du darfst dich nicht so schnell entmutigen lassen.
RaptorTP schrieb:
trotz allem, kommt eigentlich nur quark bei rum ...
Du musst strukturierter an die Sache rangehen. Erst die LEDs zum Laufen bringen, dann das Mikro integrieren.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: RaptorTP
Zurück
Oben