Arduino Code Verkleinern

Hallo zusammmen,
bin neu hier (:slight_smile:
Ich programmiere auf einem Arduino Uno ein LedStrip. Der Strip hat 50 Leds verbaut... Jetzt wollt ich mal Fragen ob man bei folgendem Code dem Programmspeicher nlch verkleiner kann. Mit der Funktion RotFlimmern und den anderen Funktionen ist der Arduino schon zu 7% voll. Kann man da noch was machen?
Danke schonmal
Vg
Niklas
Hier mein Code:

//#include <Scheduler.h>
 
#include <Aldi_NeoPixel.h>
 
 
// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_RGB     Pixels are wired for RGB bitstream
//   NEO_GRB     Pixels are wired for GRB bitstream
//   NEO_KHZ400  400 KHz bitstream (e.g. FLORA pixels)
//   NEO_KHZ800  800 KHz bitstream (e.g. High Density LED strip)
Aldi_NeoPixel strip = Aldi_NeoPixel(50, 6, NEO_BRG + NEO_KHZ800);
int rot=0;
void setup() {
  strip.begin();
strip.show();
    /*strip.setPixelColor(0,strip.Color(1,1,0));
   strip.show();
   delay(1);
   strip.setPixelColor(0,strip.Color(0,0,0));
   strip.show();
   allesAus();
   */
     RotFlimmern();
}
void loop() {
 
  
}
void SetStripColorComplete(int r, int g, int b){ 
 
    for(int i=0; i<=49; i++){ 
 
        strip.setPixelColor(i,strip.Color(r,g,b)); 
 
    } 
 
    strip.show(); 
 
} 
 
void RotFlimmern(){ 
 
    int red=250; 
 
while(red>0){ 
 
    SetStripColorComplete(red, 0, 0);
 
    red-=50; 
 
    delay(30); 
 
} 
 
    allesAus(); 
 
    delay(30); 
 
} 
 
void allesAus(){
SetStripColorComplete(0, 0, 0);
}

Und wieso ist das ein Problem?

Der RAM Verbrauch ist viel wichtiger als Flash Speicher.

Ein Arduino Uno , der gar nichts macht, ist schon 4% voll ( ok, mit Serial.begin )
Aber bei LedStrips wird immer der RAM zuerst das Problem darstellen.

Ich werde viel mehr Effekte hintereinander machen. Ich will ein paar Lieder LichtSynchron programmieren...
Kann man es noch kürzen oder ist das unmöglich

Das nimmt aber nicht linear zu. Das meiste davon sind die Arduino Grundfunktionen und die LED Bibliothek. Nicht dein eigener Code.

Man könnte alles was mit r, g und b zu tun hat als uint8_t oder byte statt int deklarieren. Weil RGB Werte nicht größer als 255 werden. Byte verbraucht halb so viel RAM wie int.

Kleinvieh macht auch Mist.

Ok also einfach die Sachen statt int hinschreiben oder? Danke schonmal

Reicht mir der Speicher für 7 Lieder?
Aber schonmal vielen lieben Dank

Keine Ahnung ob der Speicher für 7 Lieder reicht.

#include <Aldi_NeoPixel.h>

// Globale Konstanten
const byte NUM_PIXELS = 50;
const byte RED_MAX = 250;
const byte RED_FADE = 50;

// Funktionsprototypen 
void RotFlimmern(byte);
void SetStripColorComplete(byte, byte, byte);
void allesAus(void);

// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_RGB     Pixels are wired for RGB bitstream
//   NEO_GRB     Pixels are wired for GRB bitstream
//   NEO_KHZ400  400 KHz bitstream (e.g. FLORA pixels)
//   NEO_KHZ800  800 KHz bitstream (e.g. High Density LED strip)
Aldi_NeoPixel strip = Aldi_NeoPixel(NUM_PIXELS, 6, NEO_BRG + NEO_KHZ800);

void setup() {
  strip.begin();
  //strip.show();
  RotFlimmern(RED_MAX, RED_FADE);
}

void loop() {
}

void SetStripColorComplete(byte r, byte g, byte b) {
  for (byte i = 0; i < NUM_PIXELS; i++) {
    strip.setPixelColor(i, strip.Color(r, g, b));
  }
  strip.show();
}

void RotFlimmern(int red, byte fade) {
  while (red > 0) {
    SetStripColorComplete(red, 0, 0);
    red -= fade;
    delay(30);
  }
  allesAus();
  delay(30);
}

void allesAus() {
  SetStripColorComplete(0, 0, 0);
}

Was ist ein Lied und wenn ja wie groß ist es ?

Ein Musik Lied wird Lichtsynchron programmiert...
Z.B prrgammiere ich gerde Faint von Linkin Park
Ein Lied eerde ich auf 2 Minuten kürzen

Vielen Dank...
Du hast mir sehr weitergeholfen...
Dann hiffen wir mal es reicht :slight_smile:

Dann fang an und programmiere 10 sec. Merk dir, wie groß der Sketch geworden ist.
Dann erweitere das auf 15 sec und schau, was das an Sketchgröße ausmacht.
Dann zeig das Ergebnis hier und wir können diskutieren, was sich optimieren lässt.

Wenn du z.B. nur einen Funktionsaufruf von
RotFlimmern(10); auf RotFlimmern(15); veränderst, braucht das nur genauso viel Speicher wie vorher.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.