User manual

004
005
for (int i = 0; i <= sizeof(site); i++)
006
{
007
char myChar = pgm_read_byte_near(site + i);
008
xBuffer += myChar;
009
}
010
011
for (int x = 2; x <= 7; x++)
012
{
013
if (PORTD & (1 << x))
014
{
015
xBuffer.replace("*checked" + String(x) + "*", "checked");
016
}
017
else
018
{
019
xBuffer.replace("*checked" + String(x) + "*", "");
020
}
021
}
022
return xBuffer;
023
}
Podczas tworzenia tego programu napotkałem kilka problemów, których
przyczyna nie była początkowo jasna. Podczas ładowania strony internetowej
pojawiały się dziwne błędy i często zaznaczone były niewłaściwe pola wyboru. Za
pomocą Arduino-MemoryFree-Master-Library
(http://playground.arduino.cc/Code/AvailableMemory) udało się znaleźć
rozwiązanie: Pamięć SRAM została zapełniona i to powodowało pojawianie się
dziwnych, nieprzewidywalnych błędów. Musiałem znacznie odchudzić pierwotną
wersję programu oraz kod HTML, aby program mógł działać w tej wersji.
Wspominam o tym, ponieważ przy tworzeniu własnych projekw możecie natrafić
na te same problemy. Przyczyną dużego obciążenia pamięci SRAM jest przede
wszystkim szerokie stosowanie praktycznej wprawdzie, ale bardzo wyczerpującej
zasoby funkcji string oraz generalnie stosowanie ciągów string zamiast łańcuchów
char. Funkcja string.replace() jest bardzo praktyczna, ale zużywa bardzo dużo
pamięci. Jeśli więc natraficie na nie dające się wyjaśnić błędy, zalecam z jednej