Hallo liebe Gemeinde,
mein sketch scheint zu groß, wo kann ich noch was umändern um auf 2048 byte zukommen?
Die Fehlermeldung :
Der Sketch verwendet 2738 Bytes (133%) des Programmspeicherplatzes. Das Maximum sind 2048 Bytes.
Globale Variablen verwenden 262 Bytes (204%) des dynamischen Speichers, -134 Bytes für lokale Variablen verbleiben. Das Maximum sind 128 Bytes.
Der/ das Sketch:
/*
*/
//******************************
// LEDs deklarieren (einige doppel als Dummy)
byte leds[] = {16,2,13,7,6,5,10,4,12,8,3,11,9,13,2,14,15};
//LEDs Blinkzeiten deklarieren(einige doppel als Dummy)
long ledtakt[] = {6000,2500,4000,7500,3300,9000,5700,2400,10000,6800,7300,8000,3690,7500,55000,9690,10500,2540,3000};
// Variablen für millis()-Zeiten beim Schalten
long ledtime[sizeof(leds)];
void setup() {
Serial.begin(9600);
// Pins mittels Schleife auf OUTPUT setzen
for (int i=0;i<sizeof(leds);i++)
pinMode(leds[i], OUTPUT);
// Serielle Ausgabe auf Monitor zur Kontrolle, kann später entfernt werden
Serial.begin (9600);
}
boolean milliSekundenTakt(int dauer, long &alterWert) {
// Parameter "dauer": Dauer einer Schaltzeit (ein/ aus)
// Parameter "alterWert": Variable zum Speichern des millis() Timers
// Rückgabewert: true wenn die Zeit bis zum nächsten Umschalten abgelaufen ist, sonst false
if (millis() - alterWert < dauer) return false;
while (millis() - alterWert >= dauer) alterWert+=dauer;
return true;
}
void blinkenImTakt() {
// Alle LEDs ein/aus
for (int i=0;i<sizeof(leds);i++) // alle LEDs in einer Schleife durchgehen
{
if (milliSekundenTakt(ledtakt[i],ledtime[i])) // Takt für diese LED abgelaufen?
{
digitalWrite(leds[i],!digitalRead(leds[i])); // wenn ja ==> Umschalten
{
}
Serial.print("Pin");Serial.print(leds[i]);Serial.print(" = ");Serial.println(digitalRead(leds[i]));
}
}
}
void loop() {
blinkenImTakt();
}
Welche Möglichkeiten seht ihr? was kann besser gemacht werden?