Często nowi posiadacze płytki którzy zaczynają swoją przygodę wcześniej czy później borykają się z problemem nie wystarczającej ilości wolnej pamięci. Są to skutki bezmyślnego wklejania nie swoich kodów, które nie koniecznie są dobrze napisane. Zaczniemy od prawidłowej obsługi portu szeregowego. To dobre narzędzie, dzięki któremu można kontrolować na ekranie monitora wartości zmiennych. Ale ... ma swoje minusy. Pamięć pochłaniana przez dodanie do programu już samej obsługi Serial jest spora. Jest sposób by nie kasować później instrukcji związanych z nim, bo potrzeba kilka bajtów, po prostu sprytnie go trzeba wyłączyć.
// --- CODE START ------------------------------------------------------------------
#define SERIAL_PRINT false // definiujemy makro
void setup()
{
#if SERIAL_PRINT
{ // jeśli SERIAL_PRINT jest true
Serial.begin(9600); // włącz obsługę Serial i dołacz do kodu
}
#endif
}
void loop()
{
int x = 10;
#if SERIAL_PRINT
{ // jeśli SERIAL_PRINT jest true
Serial.print(F("Wartosc x wynosi = ")); // wyswietl na monitorze portu
Serial.println(x); // inaczej jest to pomijane i nie istnieje
}
#endif
}
// --- CODE END ------------------------------------------------------------------
Skompilowany powyższy kod na UNO z wartością: #define SERIAL_PRINT false powoduje, że komunikacja portu szeregowego jest wyłączona, do kodu wynikowego nie są dołączane żadne instrukcje obsługi SERIAL. Użyta pamięć to tylko 444 bajty pogramu i 9 bajtów pamięci dynamicznej.
Zmienne globalne używają 9 bajtów (0%) pamięci dynamicznej, pozostawiając 2039 bajtów dla zmiennych lokalnych. Maksimum to 2048 bajtów.
Zmienne globalne używają 188 bajtów (9%) pamięci dynamicznej, pozostawiając 1860 bajtów dla zmiennych lokalnych. Maksimum to 2048 bajtów.
Serial.print("Wartosc x wynosi = ");
zamiast tak :
Serial.print(F("Wartosc x wynosi = "));
Brak komentarzy:
Prześlij komentarz