Für ein kleines Projekt bräuchte ich eine übersichtliche Menü-Routine.
Ich hatte ein Menü mit switch(page) programmiert, in deren Fällen ich
die verschiedenen Meldungen direkt ausgegeben hab (
case 1:
{
lcd_string("Blabla")
break;
usw.).
Da mein Menü über's LCD Display einmal nur betrachtet werden kann
(case 0-29)
, und einmal (nach Betätigen einer bestimmten Taste) auch bearbeitet
werden kann (case 30-59), wird schnell ersichtlich damit mit dieser
Methode viel Tipparbeit notwendig ist und der Programmspeicher unnötig
vollgestopft wird ;).
Nun war ich am überlegen, ob ich ein Array aus Strings erstelle um diese
mittels
lcd_string(message[x]) aufrufen zu können.
Mein Ansatz:
1 | #include <avr/pgmspace.h>
|
2 | #include <string.h>
|
3 | volatile char message[5][14]PROGMEM ={
|
4 | {"nachtricht 1 \n"},
|
5 | {"nachtricht 2 \n"},
|
6 | {"nachtricht 3 \n"},
|
7 | {"nachtricht 4 \n"},
|
8 | {"nachtricht 5 \n"}};
|
Der Abruf des Strings sollte dann im main - Teil des Programmes mittels
1 |
|
2 | {
|
3 | ...
|
4 | page=1;
|
5 | uart_putstring("RS232 [OK]....\r\n\r\n");
|
6 | lcd_string("Zeile 1");
|
7 | set_cursor(0,2);
|
8 | lcd_string(message[page]);
|
9 | ...
|
10 | }
|
erfolgen. Nur will das nicht klappen.
Genauere Information zum Fehler:
Komischerweise wird mir im Display nun
Zeile 1
232[OK]...XXXX (XXXX=kryptische Zeichen)
angezeigt.
Nun - bin schon fast am verzweifeln - Hat jemand eine Idee an was es
liegen könnte?