Du har fått svaren ett antal gångar men jag ska göra det enklare för dig:
Kod: Markera allt
void defChar() {
/* -----( Save åäöÅÄÖ on the LED-display )----- */
byte AwithRing[8] = { //å
B00100,
B01010,
B01110,
B00001,
B01111,
B10001,
B01111,
};
byte AwithDots[8] = { //ä
B01010,
B00000,
B01110,
B00001,
B01111,
B10001,
B01111,
};
byte OwithDots[8] = { //ö
B01010,
B00000,
B01110,
B10001,
B10001,
B10001,
B01110,
};
byte BigAwithRing[8] = { //Å
0b00100,
0b01010,
0b01110,
0b10001,
0b11111,
0b10001,
0b10001,
0b00000
};
byte BigAwithDots[8] = { //Ä
0b01010,
0b00000,
0b01110,
0b10001,
0b11111,
0b10001,
0b10001,
0b00000
};
byte BigOwithDots[8] = { //Ö
0b01010,
0b01110,
0b10001,
0b10001,
0b10001,
0b10001,
0b01110,
0b00000
};
lcd.createChar(1, AwithRing); //å
lcd.createChar(2, AwithDots); //ä
lcd.createChar(3, OwithDots); //ö
lcd.createChar(4, BigAwithRing); //Å
lcd.createChar(5, BigAwithDots); //Ä
lcd.createChar(6, BigOwithDots); //Ö
lcd.backlight(); // turn on backlight.
defChar();
Du tar såklart bort de andra lcd.createChar() i resten av källkoden.
Vid att deklarera karaktärdatan INUTI en rutin FINNS DE BARA I DEN RUTIN!
Alltså MÅSTE du använda dom därifrån också.
Såklart finns de i resten av programmet då de ju skrivs in i programminnet - men lokala variabler/konstanter är inte globala.
Du kan alltså inte deklarera dom inuti en funktion och komma åt dom när programmet INTE är i den rutin.
Och det är "korrekt" att skapa en rutin för detta och sedan anropa den.
Man kan såklart deklarera de data globalt och komma åt dom globalt men rent faktisk är det ett dåligt sätt om det inte är data som är grundläggande för programmet och som använd av snart sagt alla rutiner.