ich habe ein Problem und meine recherche hat mir nicht weitergeholfen.
Also ich benutze momentan die Ken Shirriff multi protocoll ir library, neben bei hab ich ein glcd (5110) und einen rotary encoder. mein problem ist das mir der speicher ausgeht, da ich einen atmega 168pa verwende. Es funktioniert ansich super, aber ich will noch ein TEA5767 ansteuern aber das würde nicht funktionieren. zusätzlich, wenn ich eine andere library für den ir empfänger verwende bzw. den code selber schreibe wird damit der rotary encoder blockiert.
Auf den Bootloader zu verzichten bringt nur 0,5kB. Das lohnt sich wahrscheinlich nicht.
Bei dem Graphik-Display wird ein Font dabei sein. Wenn du davon nicht alles verwendest kann man den eventuell kürzen - z.B. die Satzzeichen entfernen. Dann stimmt aber die Zuordnung zur ASCII Tabelle nicht mehr und man muss eine Wrapper Funktion schreiben die das umgesetzt oder die Lib selbst anpassen. Kommt drauf an wie das gemacht ist und was man davon verwendet.
GLCD wurde nur standard font keine graphiken nichts. ~ 4kb
spi für digitalpoti ist pflicht ~1,5kb
rotary encoder 0,5kb
der rest ist nur das menü und sonstiges 2,5kb
so wenn ich jetzt die IR library dazu gebe sind es 15,9kb... also knapp an der grenze und es kommt noch der tea5767 dazu
Du wirst sicher nicht alle Möglichkeiten der IR Bibliothek ausschöpfen. Darum könntest Du die Biblithek entrümpeln und nur die unbedingt notwendgen Funkionen drinlassen.
Umstieg auf ATmega328 ist sicher ein Lösungsweg.
Grüße Uwe
Bist du da sicher? Ich dachte wenn man eine Funktion einer Lib nicht verwendet wird sie auch nicht kompiliert. Das #include ist eigentlich nur ein Verweis wo was steht, damit der Compiler weiß dass die Funktionen existieren. Nicht eine Anweisung dass er alles dort kompilieren muss.
Der selbst geschriebene Code ist was anderes. Da kann es sehr gut sein, dass alles compiliert wird. Das hängt aber auch von Compiler/Linker Einstellungen ab.
Und selbst das scheint die Ardunio IDE zu optimieren:
void setup()
{
}
void loop()
{
Serial.println(func2());
}
int func1()
{
int i = 2;
return i;
}
int func2()
{
int i = 3;
return i;
}
func1() wird nicht verwendet. Aber der Code hat 2046 Bytes, egal ob es auskommentiert ist, oder nicht. Wenn man dem vertrauen kann...