ich möchte Euch um Euren geschätzten Rat bitten da ich an mehrere Grenzen stosse.
Das beigefügte Programm soll Durchgänge zählen, Temperaturen messen und anzeigen.
Ich habe mich bisher mit den Temperaturen und dem Speichern mit dem Adafruit Datalogger
Shield auf die SD-Karte konzentriert.
Nun stell ich fest, da ich mit einem Taster das Zählen simuliere, das die ganze Geschichte so
langsam geworden ist, das der Taster lang gedrückt werden muß.
Meine Fragen :
grundsätzliche Anmerkungen zum Programmaufbau ??
bringt mir der Umzug auf Mega etwas ( zumal ich noch 1 Woche der Daten im LCD
scrollen muß und ich nun schon 23582 Bytes verschossen habe )
vielen Dank für die schnelle Hilfe ?
habe beide direkt umgesetzt und es bringt erhebliche Vorteile in der Geschwindigkeit !!
Vor allem die String-Behandlung gefällt mir.
Ich muss allerdings kein #include <avr/pgmspace.h> einfügen und was bedeutet vor der Formatierung
PSTR und sprintf_P statt sprintf ?
Zu meinen anderen Fragen : der Mega dürfte mit der gleichen Taktfrequenz nicht schneller sein, oder ?
Das _P und PSTR() lässt den Format-String im Flash, statt das RAM voll zumüllen. PSTR() ist dabei ein Makro, das mit PROGMEM einen Flash String deklariert und die _P Versionen der String Funktionen erwarten so einen String.
Du hast allerdings auch sonst so viele Strings im RAM, dass das hier keine Rolle spielt.
Bei print() kannst du einfach das machen:
Serial.print(F("String im Flash"));
file.print(F("String im Flash"));
Spart sehr viel RAM.
Ich muss allerdings kein #include <avr/pgmspace.h> einfügen
Mhh, in der Arduino IDE anscheinend nicht. Ich programmiere in Visual Studio, da ist es nötig was ich so sehe. Etwas seltsam, aber na ja.
Zu meinen anderen Fragen : der Mega dürfte mit der gleichen Taktfrequenz nicht schneller sein, oder ?
Nein. Du musst dir nur abgewöhnen delay() zu verwenden und statt dessen mit millis() abfragen ob schon eine gewisse Zeit vergangen ist. delay() blockiert den Prozessor völlig für die Zeit.