Hallo zusammmen,
bin neu hier (
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);
}
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
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.
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.