User manual
4.7 | GPIO-Control 73
00
1
String createWe
b
site
()
00
2
{
00
3
Strin
g
xBuffer
;
00
4
005
for (int i = 0; i <= sizeof(site); i++
)
006
{
007
char myChar =
p
gm_read_byte_near(site + i)
;
00
8
xBuffer += m
y
Char
;
009
}
0
1
0
0
1
1
for (int x = 2
;
x <= 7
;
x++
)
01
2
{
01
3
if
(
PORTD &
(
1 << x
))
01
4
{
015
xBuffer.rep
l
ace
(
"*c
h
ec
k
e
d
" + String
(
x
)
+ "*", "c
h
ec
k
e
d
"
);
01
6
}
01
7
e
l
se
0
1
8
{
01
9
xBuffer.replace("*checked" + String(x) + "*", "")
;
0
2
0
}
02
1
}
02
2
return xBuffer
;
02
3
}
Beim Erstellen dieses Pro
g
ramms hatte ich eini
g
e Probleme, deren Ursa
-
che zunächst nicht klar war. Beim Laden der Webseite kam es zu seltsa
-
men Fehlern und oft waren die völli
g
falschen Checkboxen aus
g
ewählt.
Mithilfe der Arduino-MemoryFree-Master-Library
(
http:
//
play
g
round
.
arduino.cc
/
Code
/
AvailableMemor
y
) kam ich dann auf die Lösun
g
: De
r
SRAM-Speicher war an seine Grenzen
g
estoßen, und dadurch kam es zu
sehr merkwürdi
g
en, unberechenbaren Fehlern. Ich musste die ursprün
g-
liche Version des Pro
g
ramms und den HMTL-Code deutlich abspecken,
damit das Pro
g
ramm in dieser Version funktionieren kann. Ich erwähne
dies, da Ihnen beim Erstellen ei
g
ener Pro
j
ekte
g
enau das Gleiche pas
-
sieren kann. Der Grund für die
g
roße Beanspruchun
g
des SRAMs lie
g
t
vor allem in der
g
roßzü
g
i
g
en Benutzun
g
der zwar praktischen, aber auch
Ressourcen verschlin
g
enden Verwendun
g
der Strin
g
-Funktionen und
all
g
emein der Nutzun
g
von Strin
g
s anstelle von Char-Ketten. Ein strin
g
.
re
p
lace(
)
ist sehr praktisch, aber eben auch speicherhun
g
ri
g
. Falls Sie
also einmal auf unerklärliche Fehler stoßen, em
p
fehle ich, zum einen
den
Q
uellcode der HTML-Datei zu verkleinern und außerdem eventuell
10215-5 Lernpaket Internet of Things_02.indd 7310215-5 Lernpaket Internet of Things_02.indd 73 19.04.2016 12:17:2619.04.2016 12:17:26










