Problem bei Schriftartergänzung gfx Pixel

Hallo Leute,

ich beschäftige mich seit gestern mit den Schriftarten bei Arduino / TFT-Bildschirmen.

Ich habe mir über die Seite Angularclient einen Adafruit GFX Font erstellt.

Leider fehlen da die für die deutsche Sprache nötigen Umlaute.

Deshalb habe ich mich auf die Suche gemacht, was mir mit dem Problem der Verständigung mit der Englischen Sprach nicht sehr leicht viel.

Nach längerem Suchen bin ich auf die Seite https://tchapi.github.io/Adafruit-GFX-Font-Customiser/ gestoßen und war erstmal erfreut, dass ich was gefunden habe.

Also habe ich meinen Font da eingelesen und um die nötigen Buchstaben ergänzt.

Font in meinen Sketch eingebunden, hochgeladen und enttäuscht. Funktioniert nicht. Die Wörter werden entweder beim Umlaut abgeschnitten oder der Buchstabe wird einfach weggelassen.

Also habe ich den geänderten Font nochmal auf der Seite von tchapi eingelesen und plötzlich sind die Umlaute um 1 nach links versetzt.

Der Erstellte Font

// Created by http://oleddisplay.squix.ch/ Consider a donation
// In case of problems make sure that you are using the font file with the correct version!
const uint8_t Roboto_11Bitmaps[] PROGMEM = {

	// Bitmap Data:
	0x00, // ' '
	0xAA,0xA2, // '!'
	0xDB,0x00, // '"'
	0x28,0x93,0xF2,0x85,0x1F,0x14,0x48, // '#'
	0x21,0xC9,0x22,0xC0,0xC0,0xA6,0xF0,0x80, // '$'
	0xC0,0xA8,0xB0,0xD0,0x2C,0x52,0x52,0x0C, // '%'
	0x71,0x22,0x43,0x0A,0x93,0x26,0x7E, // '&'
	0x90, // '''
	0x46,0x88,0x88,0x88,0x88,0x42, // '('
	0x84,0x42,0x22,0x22,0x24,0x48, // ')'
	0x22,0xC6,0x94, // '*'
	0x10,0x23,0xF0,0x81,0x00, // '+'
	0x4A,0x00, // ','
	0xE0, // '-'
	0x80, // '.'
	0x10,0x88,0x42,0x21,0x10,0x80, // '/'
	0x72,0x48,0xA2,0x8A,0x49,0x1C, // '0'
	0x6A,0x22,0x22,0x22, // '1'
	0xF2,0x41,0x04,0x21,0x08,0x3E, // '2'
	0xF4,0x84,0xC1,0x0A,0x5E, // '3'
	0x18,0x30,0xA2,0x44,0x9F,0x82,0x04, // '4'
	0xFA,0x08,0x3C,0x18,0x29,0x9C, // '5'
	0x73,0x08,0x3C,0x9A,0x29,0x1C, // '6'
	0xFC,0x10,0x20,0x81,0x02,0x08,0x30, // '7'
	0xF2,0x49,0x18,0x92,0x29,0x3C, // '8'
	0xE4,0xA5,0x2F,0x08,0x4C, // '9'
	0x80,0x20, // ':'
	0x40,0x00,0x94, // ';'
	0x08,0xCC,0x1C,0x08, // '<'
	0xF0,0x3C, // '='
	0x83,0x04,0xC8,0x00, // '>'
	0x73,0x20,0x84,0x20,0x80,0x08, // '?'
	0x3C,0x21,0x27,0x54,0xAA,0x55,0x2A,0xB5,0x6C,0x40,0x1E,0x00, // '@'
	0x10,0x28,0x28,0x28,0x44,0x7C,0x44,0x82, // 'A'
	0xF2,0x28,0xBC,0x8A,0x28,0xBC, // 'B'
	0x79,0x12,0x14,0x08,0x10,0xA2,0x3C, // 'C'
	0xF1,0x12,0x24,0x28,0x51,0x22,0x78, // 'D'
	0xFA,0x08,0x3C,0x82,0x08,0x3E, // 'E'
	0xFA,0x08,0x20,0xF2,0x08,0x20, // 'F'
	0x79,0x12,0x14,0x09,0xD0,0xB1,0x3C, // 'G'
	0x85,0x0A,0x17,0xE8,0x50,0xA1,0x42, // 'H'
	0xAA,0xAA, // 'I'
	0x08,0x20,0x82,0x08,0x2C,0x9C, // 'J'
	0x8D,0x22,0x87,0x0E,0x12,0x22,0x46, // 'K'
	0x82,0x08,0x20,0x82,0x08,0x3E, // 'L'
	0x83,0x61,0xB1,0x54,0xAA,0x55,0x4A,0x65,0x22, // 'M'
	0x85,0x8B,0x95,0x29,0x53,0xA3,0x42, // 'N'
	0x79,0x12,0x14,0x28,0x50,0xA2,0x3C, // 'O'
	0xF9,0x12,0x14,0x4F,0x90,0x20,0x40, // 'P'
	0x79,0x9A,0x14,0x28,0x50,0xB3,0x3C,0x04, // 'Q'
	0xF1,0x12,0x24,0x4F,0x12,0x22,0x46, // 'R'
	0x72,0x28,0x18,0x18,0x28,0x9C, // 'S'
	0xFC,0x20,0x40,0x81,0x02,0x04,0x08, // 'T'
	0x8A,0x28,0xA2,0x8A,0x28,0x9C, // 'U'
	0x82,0x44,0x44,0x44,0x28,0x28,0x30,0x10, // 'V'
	0x8C,0xC9,0x91,0x32,0x2A,0x45,0x30,0x66,0x0C,0xC1,0x08, // 'W'
	0xC6,0x4C,0x28,0x10,0x10,0x28,0x4C,0xC6, // 'X'
	0xC6,0x44,0x68,0x28,0x10,0x10,0x10,0x10, // 'Y'
	0x7C,0x18,0x20,0x82,0x04,0x10,0x7E, // 'Z'
	0xD2,0x49,0x24,0x93,0x00, // '['
	0x82,0x10,0x82,0x10,0x42,0x10, // '\'
	0xC9,0x24,0x92,0x4B,0x00, // ']'
	0x4C,0xAA, // '^'
	0xF8, // '_'
	0xC6, // '`'
	0xF0,0xBD,0x29,0x78, // 'a'
	0x82,0x0F,0x24,0x8A,0x29,0x3C, // 'b'
	0x72,0x48,0xA0,0x99,0xC0, // 'c'
	0x08,0x27,0x92,0x8A,0x24,0x9E, // 'd'
	0x72,0x4F,0xA0,0x91,0xC0, // 'e'
	0x32,0x11,0xE4,0x21,0x08,0x40, // 'f'
	0x79,0x28,0xA2,0x49,0xE0,0x9E, // 'g'
	0x84,0x3D,0x29,0x4A,0x52, // 'h'
	0x8A,0xAA, // 'i'
	0x41,0x24,0x92,0x58, // 'j'
	0x82,0x08,0x24,0xA3,0x0A,0x28,0x98, // 'k'
	0xAA,0xAA,0x80, // 'l'
	0xF7,0x4C,0xA4,0x52,0x29,0x14,0x88, // 'm'
	0xF4,0xA5,0x29,0x48, // 'n'
	0x78,0x92,0x14,0x24,0x8F,0x00, // 'o'
	0xF2,0x48,0xA2,0x93,0xC8,0x20, // 'p'
	0x79,0x28,0xA2,0x49,0xE0,0x82, // 'q'
	0xE8,0x88,0x88, // 'r'
	0xF4,0xB8,0x29,0x78, // 's'
	0x4E,0x44,0x44,0x20, // 't'
	0x94,0xA5,0x29,0x78, // 'u'
	0x8A,0x45,0x14,0x60,0x80, // 'v'
	0x99,0x4D,0x16,0x8D,0x46,0x61,0x20, // 'w'
	0xC9,0x43,0x0C,0x53,0x20, // 'x'
	0x89,0x45,0x14,0x20,0x82,0x30, // 'y'
	0x78,0x43,0x08,0x43,0xE0, // 'z'
	0x31,0x08,0x44,0x61,0x04,0x21,0x0C, // '{'
	0xAA,0xAA,0x80, // '|'
	0x82,0x10,0x86,0x19,0x88,0x42,0x20 // '}'
};
const GFXglyph Roboto_11Glyphs[] PROGMEM = {
// bitmapOffset, width, height, xAdvance, xOffset, yOffset
	  {     0,   1,   1,   4,    0,    0 }, // ' '
	  {     1,   2,   8,   4,    1,   -8 }, // '!'
	  {     3,   3,   3,   5,    1,   -8 }, // '"'
	  {     5,   7,   8,   8,    1,   -8 }, // '#'
	  {    12,   6,  10,   7,    1,   -9 }, // '$'
	  {    20,   8,   8,   9,    1,   -8 }, // '%'
	  {    28,   7,   8,   8,    1,   -8 }, // '&'
	  {    35,   3,   2,   3,    0,   -8 }, // '''
	  {    36,   4,  12,   5,    1,   -9 }, // '('
	  {    42,   4,  12,   5,    0,   -9 }, // ')'
	  {    48,   6,   4,   6,    0,   -8 }, // '*'
	  {    51,   7,   5,   7,    0,   -6 }, // '+'
	  {    56,   3,   3,   3,    0,   -1 }, // ','
	  {    58,   4,   1,   4,    0,   -4 }, // '-'
	  {    59,   2,   1,   4,    1,   -1 }, // '.'
	  {    60,   5,   9,   6,    0,   -8 }, // '/'
	  {    66,   6,   8,   7,    1,   -8 }, // '0'
	  {    72,   4,   8,   7,    1,   -8 }, // '1'
	  {    76,   6,   8,   7,    1,   -8 }, // '2'
	  {    82,   5,   8,   7,    1,   -8 }, // '3'
	  {    87,   7,   8,   7,    0,   -8 }, // '4'
	  {    94,   6,   8,   7,    1,   -8 }, // '5'
	  {   100,   6,   8,   7,    1,   -8 }, // '6'
	  {   106,   7,   8,   7,    0,   -8 }, // '7'
	  {   113,   6,   8,   7,    1,   -8 }, // '8'
	  {   119,   5,   8,   7,    1,   -8 }, // '9'
	  {   124,   2,   6,   4,    1,   -6 }, // ':'
	  {   126,   3,   8,   3,    0,   -6 }, // ';'
	  {   129,   6,   5,   7,    0,   -6 }, // '<'
	  {   133,   5,   3,   7,    1,   -5 }, // '='
	  {   135,   5,   5,   7,    1,   -6 }, // '>'
	  {   139,   6,   8,   6,    0,   -8 }, // '?'
	  {   145,   9,  10,  11,    1,   -8 }, // '@'
	  {   157,   8,   8,   8,    0,   -8 }, // 'A'
	  {   165,   6,   8,   8,    1,   -8 }, // 'B'
	  {   171,   7,   8,   8,    1,   -8 }, // 'C'
	  {   178,   7,   8,   8,    1,   -8 }, // 'D'
	  {   185,   6,   8,   7,    1,   -8 }, // 'E'
	  {   191,   6,   8,   7,    1,   -8 }, // 'F'
	  {   197,   7,   8,   9,    1,   -8 }, // 'G'
	  {   204,   7,   8,   9,    1,   -8 }, // 'H'
	  {   211,   2,   8,   4,    1,   -8 }, // 'I'
	  {   213,   6,   8,   7,    0,   -8 }, // 'J'
	  {   219,   7,   8,   8,    1,   -8 }, // 'K'
	  {   226,   6,   8,   7,    1,   -8 }, // 'L'
	  {   232,   9,   8,  11,    1,   -8 }, // 'M'
	  {   241,   7,   8,   9,    1,   -8 }, // 'N'
	  {   248,   7,   8,   9,    1,   -8 }, // 'O'
	  {   255,   7,   8,   8,    1,   -8 }, // 'P'
	  {   262,   7,   9,   9,    1,   -8 }, // 'Q'
	  {   270,   7,   8,   8,    1,   -8 }, // 'R'
	  {   277,   6,   8,   8,    1,   -8 }, // 'S'
	  {   283,   7,   8,   8,    0,   -8 }, // 'T'
	  {   290,   6,   8,   8,    1,   -8 }, // 'U'
	  {   296,   8,   8,   8,    0,   -8 }, // 'V'
	  {   304,  11,   8,  11,    0,   -8 }, // 'W'
	  {   315,   8,   8,   8,    0,   -8 }, // 'X'
	  {   323,   8,   8,   8,    0,   -8 }, // 'Y'
	  {   331,   7,   8,   8,    0,   -8 }, // 'Z'
	  {   338,   3,  11,   4,    1,   -9 }, // '['
	  {   343,   5,   9,   6,    0,   -8 }, // '\'
	  {   349,   3,  11,   4,    0,   -9 }, // ']'
	  {   354,   4,   4,   6,    1,   -8 }, // '^'
	  {   356,   6,   1,   6,    0,    0 }, // '_'
	  {   357,   4,   2,   4,    0,   -9 }, // '`'
	  {   358,   5,   6,   7,    1,   -6 }, // 'a'
	  {   362,   6,   8,   7,    1,   -8 }, // 'b'
	  {   368,   6,   6,   7,    1,   -6 }, // 'c'
	  {   373,   6,   8,   7,    0,   -8 }, // 'd'
	  {   379,   6,   6,   7,    1,   -6 }, // 'e'
	  {   384,   5,   9,   5,    0,   -9 }, // 'f'
	  {   390,   6,   8,   7,    0,   -6 }, // 'g'
	  {   396,   5,   8,   7,    1,   -8 }, // 'h'
	  {   401,   2,   8,   4,    1,   -8 }, // 'i'
	  {   403,   3,  10,   4,    0,   -8 }, // 'j'
	  {   407,   6,   9,   7,    1,   -9 }, // 'k'
	  {   414,   2,   9,   4,    1,   -9 }, // 'l'
	  {   417,   9,   6,  11,    1,   -6 }, // 'm'
	  {   424,   5,   6,   7,    1,   -6 }, // 'n'
	  {   428,   7,   6,   7,    0,   -6 }, // 'o'
	  {   434,   6,   8,   7,    1,   -6 }, // 'p'
	  {   440,   6,   8,   7,    0,   -6 }, // 'q'
	  {   446,   4,   6,   5,    1,   -6 }, // 'r'
	  {   449,   5,   6,   7,    1,   -6 }, // 's'
	  {   453,   4,   7,   5,    0,   -7 }, // 't'
	  {   457,   5,   6,   7,    1,   -6 }, // 'u'
	  {   461,   6,   6,   6,    0,   -6 }, // 'v'
	  {   466,   9,   6,   9,    0,   -6 }, // 'w'
	  {   473,   6,   6,   6,    0,   -6 }, // 'x'
	  {   478,   6,   8,   6,    0,   -6 }, // 'y'
	  {   484,   6,   6,   6,    0,   -6 }, // 'z'
	  {   489,   5,  11,   5,    0,   -9 }, // '{'
	  {   496,   2,   9,   4,    1,   -8 }, // '|'
	  {   499,   5,  11,   5,    0,   -9 } // '}'
};
const GFXfont Roboto_11 PROGMEM = {
(uint8_t  *)Roboto_11Bitmaps,(GFXglyph *)Roboto_11Glyphs,0x20, 0x7E, 14};

Der gänderte Font

const uint8_t Roboto_11Bitmaps[] PROGMEM = {
  0x00, 0xAA, 0xA2, 0xDB, 0x00, 0x28, 0x93, 0xF2, 0x85, 0x1F, 0x14, 0x48, 
  0x21, 0xC9, 0x22, 0xC0, 0xC0, 0xA6, 0xF0, 0x80, 0xC0, 0xA8, 0xB0, 0xD0, 
  0x2C, 0x52, 0x52, 0x0C, 0x71, 0x22, 0x43, 0x0A, 0x93, 0x26, 0x7E, 0x90, 
  0x46, 0x88, 0x88, 0x88, 0x88, 0x42, 0x84, 0x42, 0x22, 0x22, 0x24, 0x48, 
  0x22, 0xC6, 0x94, 0x10, 0x23, 0xF0, 0x81, 0x00, 0x4A, 0x00, 0xE0, 0x80, 
  0x10, 0x88, 0x42, 0x21, 0x10, 0x80, 0x72, 0x48, 0xA2, 0x8A, 0x49, 0x1C, 
  0x6A, 0x22, 0x22, 0x22, 0xF2, 0x41, 0x04, 0x21, 0x08, 0x3E, 0xF4, 0x84, 
  0xC1, 0x0A, 0x5E, 0x18, 0x30, 0xA2, 0x44, 0x9F, 0x82, 0x04, 0xFA, 0x08, 
  0x3C, 0x18, 0x29, 0x9C, 0x73, 0x08, 0x3C, 0x9A, 0x29, 0x1C, 0xFC, 0x10, 
  0x20, 0x81, 0x02, 0x08, 0x30, 0xF2, 0x49, 0x18, 0x92, 0x29, 0x3C, 0xE4, 
  0xA5, 0x2F, 0x08, 0x4C, 0x80, 0x20, 0x40, 0x00, 0x94, 0x08, 0xCC, 0x1C, 
  0x08, 0xF0, 0x3C, 0x83, 0x04, 0xC8, 0x00, 0x73, 0x20, 0x84, 0x20, 0x80, 
  0x08, 0x3C, 0x21, 0x27, 0x54, 0xAA, 0x55, 0x2A, 0xB5, 0x6C, 0x40, 0x1E, 
  0x00, 0x10, 0x28, 0x28, 0x28, 0x44, 0x7C, 0x44, 0x82, 0xF2, 0x28, 0xBC, 
  0x8A, 0x28, 0xBC, 0x79, 0x12, 0x14, 0x08, 0x10, 0xA2, 0x3C, 0xF1, 0x12, 
  0x24, 0x28, 0x51, 0x22, 0x78, 0xFA, 0x08, 0x3C, 0x82, 0x08, 0x3E, 0xFA, 
  0x08, 0x20, 0xF2, 0x08, 0x20, 0x79, 0x12, 0x14, 0x09, 0xD0, 0xB1, 0x3C, 
  0x85, 0x0A, 0x17, 0xE8, 0x50, 0xA1, 0x42, 0xAA, 0xAA, 0x08, 0x20, 0x82, 
  0x08, 0x2C, 0x9C, 0x8D, 0x22, 0x87, 0x0E, 0x12, 0x22, 0x46, 0x82, 0x08, 
  0x20, 0x82, 0x08, 0x3E, 0x83, 0x61, 0xB1, 0x54, 0xAA, 0x55, 0x4A, 0x65, 
  0x22, 0x85, 0x8B, 0x95, 0x29, 0x53, 0xA3, 0x42, 0x79, 0x12, 0x14, 0x28, 
  0x50, 0xA2, 0x3C, 0xF9, 0x12, 0x14, 0x4F, 0x90, 0x20, 0x40, 0x79, 0x9A, 
  0x14, 0x28, 0x50, 0xB3, 0x3C, 0x04, 0xF1, 0x12, 0x24, 0x4F, 0x12, 0x22, 
  0x46, 0x72, 0x28, 0x18, 0x18, 0x28, 0x9C, 0xFC, 0x20, 0x40, 0x81, 0x02, 
  0x04, 0x08, 0x8A, 0x28, 0xA2, 0x8A, 0x28, 0x9C, 0x82, 0x44, 0x44, 0x44, 
  0x28, 0x28, 0x30, 0x10, 0x8C, 0xC9, 0x91, 0x32, 0x2A, 0x45, 0x30, 0x66, 
  0x0C, 0xC1, 0x08, 0xC6, 0x4C, 0x28, 0x10, 0x10, 0x28, 0x4C, 0xC6, 0xC6, 
  0x44, 0x68, 0x28, 0x10, 0x10, 0x10, 0x10, 0x7C, 0x18, 0x20, 0x82, 0x04, 
  0x10, 0x7E, 0xD2, 0x49, 0x24, 0x93, 0x00, 0x82, 0x10, 0x82, 0x10, 0x42, 
  0x10, 0xC9, 0x24, 0x92, 0x4B, 0x00, 0x4C, 0xAA, 0xF8, 0xC6, 0xF0, 0xBD, 
  0x29, 0x78, 0x82, 0x0F, 0x24, 0x8A, 0x29, 0x3C, 0x72, 0x48, 0xA0, 0x99, 
  0xC0, 0x08, 0x27, 0x92, 0x8A, 0x24, 0x9E, 0x72, 0x4F, 0xA0, 0x91, 0xC0, 
  0x32, 0x11, 0xE4, 0x21, 0x08, 0x40, 0x79, 0x28, 0xA2, 0x49, 0xE0, 0x9E, 
  0x84, 0x3D, 0x29, 0x4A, 0x52, 0x8A, 0xAA, 0x41, 0x24, 0x92, 0x58, 0x82, 
  0x08, 0x24, 0xA3, 0x0A, 0x28, 0x98, 0xAA, 0xAA, 0x80, 0xF7, 0x4C, 0xA4, 
  0x52, 0x29, 0x14, 0x88, 0xF4, 0xA5, 0x29, 0x48, 0x78, 0x92, 0x14, 0x24, 
  0x8F, 0x00, 0xF2, 0x48, 0xA2, 0x93, 0xC8, 0x20, 0x79, 0x28, 0xA2, 0x49, 
  0xE0, 0x82, 0xE8, 0x88, 0x88, 0xF4, 0xB8, 0x29, 0x78, 0x4E, 0x44, 0x44, 
  0x20, 0x94, 0xA5, 0x29, 0x78, 0x8A, 0x45, 0x14, 0x60, 0x80, 0x99, 0x4D, 
  0x16, 0x8D, 0x46, 0x61, 0x20, 0xC9, 0x43, 0x0C, 0x53, 0x20, 0x89, 0x45, 
  0x14, 0x20, 0x82, 0x30, 0x78, 0x43, 0x08, 0x43, 0xE0, 0x31, 0x08, 0x44, 
  0x61, 0x04, 0x21, 0x0C, 0xAA, 0xAA, 0x80, 0x82, 0x10, 0x86, 0x19, 0x88, 
  0x42, 0x20, 0x50, 0x3C, 0x21, 0x7A, 0x52, 0xF0, 0x00, 0x00, 0x90, 0x03, 
  0xC4, 0x90, 0xA1, 0x24, 0x78, 0x00, 0x90, 0x25, 0x29, 0x4A, 0x5E
};

const GFXglyph Roboto_11Glyphs[] PROGMEM = {
  {     0,   1,   1,   4,    0,    0 },   // 0x20 ' '
  {     1,   2,   8,   4,    1,   -8 },   // 0x21 '!'
  {     3,   3,   3,   5,    1,   -8 },   // 0x22 '"'
  {     5,   7,   8,   8,    1,   -8 },   // 0x23 '#'
  {    12,   6,  10,   7,    1,   -9 },   // 0x24 '$'
  {    20,   8,   8,   9,    1,   -8 },   // 0x25 '%'
  {    28,   7,   8,   8,    1,   -8 },   // 0x26 '&'
  {    35,   3,   2,   3,    0,   -8 },   // 0x27 '''
  {    36,   4,  12,   5,    1,   -9 },   // 0x28 '('
  {    42,   4,  12,   5,    0,   -9 },   // 0x29 ')'
  {    48,   6,   4,   6,    0,   -8 },   // 0x2A '*'
  {    51,   7,   5,   7,    0,   -6 },   // 0x2B '+'
  {    56,   3,   3,   3,    0,   -1 },   // 0x2C ','
  {    58,   4,   1,   4,    0,   -4 },   // 0x2D '-'
  {    59,   2,   1,   4,    1,   -1 },   // 0x2E '.'
  {    60,   5,   9,   6,    0,   -8 },   // 0x2F '/'
  {    66,   6,   8,   7,    1,   -8 },   // 0x30 '0'
  {    72,   4,   8,   7,    1,   -8 },   // 0x31 '1'
  {    76,   6,   8,   7,    1,   -8 },   // 0x32 '2'
  {    82,   5,   8,   7,    1,   -8 },   // 0x33 '3'
  {    87,   7,   8,   7,    0,   -8 },   // 0x34 '4'
  {    94,   6,   8,   7,    1,   -8 },   // 0x35 '5'
  {   100,   6,   8,   7,    1,   -8 },   // 0x36 '6'
  {   106,   7,   8,   7,    0,   -8 },   // 0x37 '7'
  {   113,   6,   8,   7,    1,   -8 },   // 0x38 '8'
  {   119,   5,   8,   7,    1,   -8 },   // 0x39 '9'
  {   124,   2,   6,   4,    1,   -6 },   // 0x3A ':'
  {   126,   3,   8,   3,    0,   -6 },   // 0x3B ';'
  {   129,   6,   5,   7,    0,   -6 },   // 0x3C '<'
  {   133,   5,   3,   7,    1,   -5 },   // 0x3D '='
  {   135,   5,   5,   7,    1,   -6 },   // 0x3E '>'
  {   139,   6,   8,   6,    0,   -8 },   // 0x3F '?'
  {   145,   9,  10,  11,    1,   -8 },   // 0x40 '@'
  {   157,   8,   8,   8,    0,   -8 },   // 0x41 'A'
  {   165,   6,   8,   8,    1,   -8 },   // 0x42 'B'
  {   171,   7,   8,   8,    1,   -8 },   // 0x43 'C'
  {   178,   7,   8,   8,    1,   -8 },   // 0x44 'D'
  {   185,   6,   8,   7,    1,   -8 },   // 0x45 'E'
  {   191,   6,   8,   7,    1,   -8 },   // 0x46 'F'
  {   197,   7,   8,   9,    1,   -8 },   // 0x47 'G'
  {   204,   7,   8,   9,    1,   -8 },   // 0x48 'H'
  {   211,   2,   8,   4,    1,   -8 },   // 0x49 'I'
  {   213,   6,   8,   7,    0,   -8 },   // 0x4A 'J'
  {   219,   7,   8,   8,    1,   -8 },   // 0x4B 'K'
  {   226,   6,   8,   7,    1,   -8 },   // 0x4C 'L'
  {   232,   9,   8,  11,    1,   -8 },   // 0x4D 'M'
  {   241,   7,   8,   9,    1,   -8 },   // 0x4E 'N'
  {   248,   7,   8,   9,    1,   -8 },   // 0x4F 'O'
  {   255,   7,   8,   8,    1,   -8 },   // 0x50 'P'
  {   262,   7,   9,   9,    1,   -8 },   // 0x51 'Q'
  {   270,   7,   8,   8,    1,   -8 },   // 0x52 'R'
  {   277,   6,   8,   8,    1,   -8 },   // 0x53 'S'
  {   283,   7,   8,   8,    0,   -8 },   // 0x54 'T'
  {   290,   6,   8,   8,    1,   -8 },   // 0x55 'U'
  {   296,   8,   8,   8,    0,   -8 },   // 0x56 'V'
  {   304,  11,   8,  11,    0,   -8 },   // 0x57 'W'
  {   315,   8,   8,   8,    0,   -8 },   // 0x58 'X'
  {   323,   8,   8,   8,    0,   -8 },   // 0x59 'Y'
  {   331,   7,   8,   8,    0,   -8 },   // 0x5A 'Z'
  {   338,   3,  11,   4,    1,   -9 },   // 0x5B '['
  {   343,   5,   9,   6,    0,   -8 },   // 0x5C '\'
  {   349,   3,  11,   4,    0,   -9 },   // 0x5D ']'
  {   354,   4,   4,   6,    1,   -8 },   // 0x5E '^'
  {   356,   6,   1,   6,    0,    0 },   // 0x5F '_'
  {   357,   4,   2,   4,    0,   -9 },   // 0x60 '`'
  {   358,   5,   6,   7,    1,   -6 },   // 0x61 'a'
  {   362,   6,   8,   7,    1,   -8 },   // 0x62 'b'
  {   368,   6,   6,   7,    1,   -6 },   // 0x63 'c'
  {   373,   6,   8,   7,    0,   -8 },   // 0x64 'd'
  {   379,   6,   6,   7,    1,   -6 },   // 0x65 'e'
  {   384,   5,   9,   5,    0,   -9 },   // 0x66 'f'
  {   390,   6,   8,   7,    0,   -6 },   // 0x67 'g'
  {   396,   5,   8,   7,    1,   -8 },   // 0x68 'h'
  {   401,   2,   8,   4,    1,   -8 },   // 0x69 'i'
  {   403,   3,  10,   4,    0,   -8 },   // 0x6A 'j'
  {   407,   6,   9,   7,    1,   -9 },   // 0x6B 'k'
  {   414,   2,   9,   4,    1,   -9 },   // 0x6C 'l'
  {   417,   9,   6,  11,    1,   -6 },   // 0x6D 'm'
  {   424,   5,   6,   7,    1,   -6 },   // 0x6E 'n'
  {   428,   7,   6,   7,    0,   -6 },   // 0x6F 'o'
  {   434,   6,   8,   7,    1,   -6 },   // 0x70 'p'
  {   440,   6,   8,   7,    0,   -6 },   // 0x71 'q'
  {   446,   4,   6,   5,    1,   -6 },   // 0x72 'r'
  {   449,   5,   6,   7,    1,   -6 },   // 0x73 's'
  {   453,   4,   7,   5,    0,   -7 },   // 0x74 't'
  {   457,   5,   6,   7,    1,   -6 },   // 0x75 'u'
  {   461,   6,   6,   6,    0,   -6 },   // 0x76 'v'
  {   466,   9,   6,   9,    0,   -6 },   // 0x77 'w'
  {   473,   6,   6,   6,    0,   -6 },   // 0x78 'x'
  {   478,   6,   8,   6,    0,   -6 },   // 0x79 'y'
  {   484,   6,   6,   6,    0,   -6 },   // 0x7A 'z'
  {   489,   5,  11,   5,    0,   -9 },   // 0x7B '{'
  {   496,   2,   9,   4,    1,   -8 },   // 0x7C '|'
  {   499,   5,  11,   5,    0,   -9 },   // 0x7D '}'
  {     0,   0,   0,   0,    0,    0 },   // 0x7F 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x80 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x81 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x82 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x83 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x84 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x85 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x86 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x87 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x88 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x89 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x8A 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x8B 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x8C 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x8D 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x8E 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x8F 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x90 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x91 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x92 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x93 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x94 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x95 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x96 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x97 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x98 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x99 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x9A 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x9B 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x9C 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x9D 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x9E 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0x9F 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0xA0 ' '
  {     0,   0,   0,   0,    0,    0 },   // 0xA1 '¡'
  {     0,   0,   0,   0,    0,    0 },   // 0xA2 '¢'
  {     0,   0,   0,   0,    0,    0 },   // 0xA3 '£'
  {     0,   0,   0,   0,    0,    0 },   // 0xA4 '¤'
  {     0,   0,   0,   0,    0,    0 },   // 0xA5 '¥'
  {     0,   0,   0,   0,    0,    0 },   // 0xA6 '¦'
  {     0,   0,   0,   0,    0,    0 },   // 0xA7 '§'
  {     0,   0,   0,   0,    0,    0 },   // 0xA8 '¨'
  {     0,   0,   0,   0,    0,    0 },   // 0xA9 '©'
  {     0,   0,   0,   0,    0,    0 },   // 0xAA 'ª'
  {     0,   0,   0,   0,    0,    0 },   // 0xAB '«'
  {     0,   0,   0,   0,    0,    0 },   // 0xAC '¬'
  {     0,   0,   0,   0,    0,    0 },   // 0xAD 'non-printable'
  {     0,   0,   0,   0,    0,    0 },   // 0xAE '®'
  {     0,   0,   0,   0,    0,    0 },   // 0xAF '¯'
  {     0,   0,   0,   0,    0,    0 },   // 0xB0 '°'
  {     0,   0,   0,   0,    0,    0 },   // 0xB1 '±'
  {     0,   0,   0,   0,    0,    0 },   // 0xB2 '²'
  {     0,   0,   0,   0,    0,    0 },   // 0xB3 '³'
  {     0,   0,   0,   0,    0,    0 },   // 0xB4 '´'
  {     0,   0,   0,   0,    0,    0 },   // 0xB5 'µ'
  {     0,   0,   0,   0,    0,    0 },   // 0xB6 '¶'
  {     0,   0,   0,   0,    0,    0 },   // 0xB7 '·'
  {     0,   0,   0,   0,    0,    0 },   // 0xB8 '¸'
  {     0,   0,   0,   0,    0,    0 },   // 0xB9 '¹'
  {     0,   0,   0,   0,    0,    0 },   // 0xBA 'º'
  {     0,   0,   0,   0,    0,    0 },   // 0xBB '»'
  {     0,   0,   0,   0,    0,    0 },   // 0xBC '¼'
  {     0,   0,   0,   0,    0,    0 },   // 0xBD '½'
  {     0,   0,   0,   0,    0,    0 },   // 0xBE '¾'
  {     0,   0,   0,   0,    0,    0 },   // 0xBF '¿'
  {     0,   0,   0,   0,    0,    0 },   // 0xC0 'À'
  {     0,   0,   0,   0,    0,    0 },   // 0xC1 'Á'
  {     0,   0,   0,   0,    0,    0 },   // 0xC2 'Â'
  {     0,   0,   0,   0,    0,    0 },   // 0xC3 'Ã'
  {     0,   0,   0,   0,    0,    0 },   // 0xC4 'Ä'
  {     0,   0,   0,   0,    0,    0 },   // 0xC5 'Å'
  {     0,   0,   0,   0,    0,    0 },   // 0xC6 'Æ'
  {     0,   0,   0,   0,    0,    0 },   // 0xC7 'Ç'
  {     0,   0,   0,   0,    0,    0 },   // 0xC8 'È'
  {     0,   0,   0,   0,    0,    0 },   // 0xC9 'É'
  {     0,   0,   0,   0,    0,    0 },   // 0xCA 'Ê'
  {     0,   0,   0,   0,    0,    0 },   // 0xCB 'Ë'
  {     0,   0,   0,   0,    0,    0 },   // 0xCC 'Ì'
  {     0,   0,   0,   0,    0,    0 },   // 0xCD 'Í'
  {     0,   0,   0,   0,    0,    0 },   // 0xCE 'Î'
  {     0,   0,   0,   0,    0,    0 },   // 0xCF 'Ï'
  {     0,   0,   0,   0,    0,    0 },   // 0xD0 'Ð'
  {     0,   0,   0,   0,    0,    0 },   // 0xD1 'Ñ'
  {     0,   0,   0,   0,    0,    0 },   // 0xD2 'Ò'
  {     0,   0,   0,   0,    0,    0 },   // 0xD3 'Ó'
  {     0,   0,   0,   0,    0,    0 },   // 0xD4 'Ô'
  {     0,   0,   0,   0,    0,    0 },   // 0xD5 'Õ'
  {     0,   0,   0,   0,    0,    0 },   // 0xD6 'Ö'
  {     0,   0,   0,   0,    0,    0 },   // 0xD7 '×'
  {     0,   0,   0,   0,    0,    0 },   // 0xD8 'Ø'
  {     0,   0,   0,   0,    0,    0 },   // 0xD9 'Ù'
  {     0,   0,   0,   0,    0,    0 },   // 0xDA 'Ú'
  {     0,   0,   0,   0,    0,    0 },   // 0xDB 'Û'
  {     0,   0,   0,   0,    0,    0 },   // 0xDC 'Ü'
  {     0,   0,   0,   0,    0,    0 },   // 0xDD 'Ý'
  {     0,   0,   0,   0,    0,    0 },   // 0xDE 'Þ'
  {     0,   0,   0,   0,    0,    0 },   // 0xDF 'ß'
  {     0,   0,   0,   0,    0,    0 },   // 0xE0 'à'
  {     0,   0,   0,   0,    0,    0 },   // 0xE1 'á'
  {     0,   0,   0,   0,    0,    0 },   // 0xE2 'â'
  {     0,   0,   0,   0,    0,    0 },   // 0xE3 'ã'
  {   506,   5,   9,   6,    0,   -9 },   // 0xE4 'ä'
  {     0,   0,   0,   0,    0,    0 },   // 0xE5 'å'
  {     0,   0,   0,   0,    0,    0 },   // 0xE6 'æ'
  {     0,   0,   0,   0,    0,    0 },   // 0xE7 'ç'
  {     0,   0,   0,   0,    0,    0 },   // 0xE8 'è'
  {     0,   0,   0,   0,    0,    0 },   // 0xE9 'é'
  {     0,   0,   0,   0,    0,    0 },   // 0xEA 'ê'
  {     0,   0,   0,   0,    0,    0 },   // 0xEB 'ë'
  {     0,   0,   0,   0,    0,    0 },   // 0xEC 'ì'
  {     0,   0,   0,   0,    0,    0 },   // 0xED 'í'
  {     0,   0,   0,   0,    0,    0 },   // 0xEE 'î'
  {     0,   0,   0,   0,    0,    0 },   // 0xEF 'ï'
  {     0,   0,   0,   0,    0,    0 },   // 0xF0 'ð'
  {     0,   0,   0,   0,    0,    0 },   // 0xF1 'ñ'
  {     0,   0,   0,   0,    0,    0 },   // 0xF2 'ò'
  {     0,   0,   0,   0,    0,    0 },   // 0xF3 'ó'
  {     0,   0,   0,   0,    0,    0 },   // 0xF4 'ô'
  {     0,   0,   0,   0,    0,    0 },   // 0xF5 'õ'
  {   513,   7,   9,   7,    0,   -9 },   // 0xF6 'ö'
  {     0,   0,   0,   0,    0,    0 },   // 0xF7 '÷'
  {     0,   0,   0,   0,    0,    0 },   // 0xF8 'ø'
  {     0,   0,   0,   0,    0,    0 },   // 0xF9 'ù'
  {     0,   0,   0,   0,    0,    0 },   // 0xFA 'ú'
  {     0,   0,   0,   0,    0,    0 },   // 0xFB 'û'
  {   522,   5,   8,   6,    0,   -8 }    // 0xFC 'ü'
};

const GFXfont Roboto_11 PROGMEM = {
(uint8_t  *)Roboto_11Bitmaps, (GFXglyph *)Roboto_11Glyphs, 0x20, 0xFC,  14};

Der benutzte Sketch auf einem ESP32

#include <TFT_eSPI.h>

#include "Roboto_11.h"

TFT_eSPI tft=TFT_eSPI();

void setup() {

  tft.init();
  tft.fillScreen(TFT_BLUE);
  tft.setRotation(1);
  tft.setTextColor(TFT_WHITE);
  tft.setFreeFont(&Roboto_11);
  tft.drawString("Dortmund",35,5);
  tft.drawString("Düsseldorf",35,25);
  tft.drawString("Köln",35,45);
  
  }

void loop() {
  
}

Auf dem Display wird angezeigt

Dortmund

D

Kln

Ich hoffe mir kann hier jemand helfen

In deinen Strings kommen Umlaute vor.

Kann deine Library überhaupt mit mehrbytigen UTF-8 Zeichen umgehen?

So, habe es geschafft, auf meinem Display die Umlaute anzeigen zu lassen.

Ich habe in dem Font jetzt 6 Zeichen ersetzt, die ich nicht brauche, damit es funktioniert, mußte ich aber den Hex des alten Zeichens lassen.

Nun muss ich, bei jedem Wort wo ein Umlaut drin vorkommt, das Zeichen ändern. Z.B. das Wort Düsseldorf muss ich in D&sseldorf ändern.

Nun stehe ich vor folgendem Problem:

Ich habe 10 Variable wo jeder Umlaut mehrfach vorkommen kann, nicht muß.

Bei meinen Versuchen, habe ich es über replace() hinbekommen.

  Text1.replace("Ä", "(");
  Text1.replace("Ö", ")");
  Text1.replace("Ü", "*");
  Text1.replace("ä", "$");
  Text1.replace("ö", "%");
  Text1.replace("ü", "&");

  Text2.replace("Ä", "(");
  Text2.replace("Ö", ")");
  Text2.replace("Ü", "*");
  Text2.replace("ä", "$");
  Text2.replace("ö", "%");
  Text2.replace("ü", "&");
  
  Text3.replace("Ä", "(");
  Text3.replace("Ö", ")");
  Text3.replace("Ü", "*");
  Text3.replace("ä", "$");
  Text3.replace("ö", "%");
  Text3.replace("ü", "&");

Das muß doch Einfacher gehen? Vorallem habe ich hier mit 3 Variablen getestet und am Ende werden es 10 sein.

Ich habe es mit einer For-Schleife probiert, aber bei Text(i) meckert er das Text nicht deklariert sei.

Hier noch der Komplette Sketch

#include <TFT_eSPI.h>

#include "Schrift_7.h"
  
  
  String Text1 = "Ä, Ö, Ü, ä, ö, ü";
  String Text2 = "Ä, Ö, Ü, ä, ö, ü";
  String Text3 = "Ä, Ö, Ü, ä, ö, ü";

  String Suchwort = Text1;
  
TFT_eSPI tft=TFT_eSPI();

void setup() {
  Serial.begin(115200);
  
  Serial.println("Hallo");
  zeichen_aendern();
  
  tft.init();
  tft.fillScreen(TFT_BLUE);
  tft.setRotation(1);
  tft.setTextColor(TFT_WHITE);
  tft.setFreeFont(&Roboto_7);  //Roboto_7 ist Original Zeichensatz
  tft.drawString(Text1,35,5);
  tft.drawString(Text2,35,25);
  tft.drawString(Text3,35,45);
  
  }


void zeichen_aendern(){

    
  Text1.replace("Ä", "(");
  Text1.replace("Ö", ")");
  Text1.replace("Ü", "*");
  Text1.replace("ä", "$");
  Text1.replace("ö", "%");
  Text1.replace("ü", "&");

/*
  Text2.replace("Ä", "(");
  Text2.replace("Ö", ")");
  Text2.replace("Ü", "*");
  Text2.replace("ä", "$");
  Text2.replace("ö", "%");
  Text2.replace("ü", "&");
  
  Text3.replace("Ä", "(");
  Text3.replace("Ö", ")");
  Text3.replace("Ü", "*");
  Text3.replace("ä", "$");
  Text3.replace("ö", "%");
  Text3.replace("ü", "&");
  */
  }

void loop() {
  
}

und der Schrift Font

const uint8_t Roboto_7Bitmaps[] PROGMEM = {
  0x00, 0x92, 0x48, 0xC0, 0x53, 0x99, 0xE6, 0x00, 0xA0, 0x19, 0x4E, 0x30, 
  0x00, 0x90, 0x19, 0x29, 0x30, 0x00, 0xA0, 0xAA, 0xA6, 0x80, 0x91, 0x18, 
  0xA7, 0x48, 0x00, 0x90, 0x1D, 0x29, 0x38, 0x00, 0x90, 0x25, 0x29, 0x38, 
  0x00, 0x47, 0x90, 0xA0, 0x18, 0x80, 0x24, 0x48, 0x80, 0x64, 0xA5, 0x46, 
  0x00, 0xAA, 0x80, 0x65, 0x08, 0x8F, 0x00, 0x6A, 0x62, 0xE0, 0x23, 0x29, 
  0xE2, 0x00, 0xE8, 0xC2, 0xC0, 0x64, 0x39, 0x26, 0x00, 0xF1, 0x08, 0x84, 
  0x00, 0x65, 0x19, 0x26, 0x00, 0x6A, 0xA6, 0x60, 0x80, 0x40, 0x82, 0x80, 
  0x2C, 0x60, 0xD8, 0x86, 0xC0, 0xE2, 0x44, 0x40, 0x39, 0x8A, 0xD6, 0xAB, 
  0x59, 0x0C, 0x00, 0x23, 0x14, 0xE9, 0x00, 0xEA, 0xCA, 0xE0, 0x74, 0xA1, 
  0x27, 0x00, 0xCA, 0xAA, 0xC0, 0xE8, 0xC8, 0xE0, 0xE8, 0xC8, 0x80, 0x74, 
  0x21, 0x67, 0x00, 0xAA, 0xEA, 0xA0, 0x92, 0x48, 0x22, 0x22, 0xE0, 0xAC, 
  0x8C, 0xA0, 0x88, 0x88, 0xE0, 0x9A, 0x6A, 0xBA, 0xA8, 0xAA, 0xEA, 0xA0, 
  0x74, 0xA5, 0x27, 0x00, 0xEA, 0xAC, 0x80, 0x74, 0xA5, 0x25, 0x18, 0xEA, 
  0xEC, 0xA0, 0x74, 0x18, 0x2F, 0x00, 0xF2, 0x10, 0x84, 0x00, 0x94, 0xA5, 
  0x27, 0x00, 0x94, 0x98, 0xC2, 0x00, 0x95, 0x6A, 0xE2, 0xC4, 0x80, 0x93, 
  0x08, 0xC9, 0x00, 0x93, 0x18, 0x84, 0x00, 0xF1, 0x10, 0x8F, 0x00, 0x80, 
  0x08, 0x88, 0x44, 0x60, 0xAA, 0xA8, 0x4C, 0xA0, 0xE0, 0xC0, 0x6A, 0xE6, 
  0x87, 0x25, 0x2E, 0x00, 0x6A, 0x86, 0x26, 0xAA, 0x60, 0x6A, 0xC6, 0x5A, 
  0x48, 0x6A, 0xA6, 0xE0, 0x8E, 0xAA, 0xA0, 0xAA, 0x80, 0xAA, 0xA0, 0x85, 
  0x31, 0x8B, 0x00, 0x92, 0x48, 0xE9, 0x6A, 0x95, 0x20, 0xEA, 0xAA, 0x64, 
  0xA4, 0xC0, 0xE4, 0xA5, 0xC8, 0x00, 0x6A, 0xA6, 0x20, 0xD2, 0x40, 0x68, 
  0x6E, 0x9A, 0x44, 0xAA, 0xA6, 0xAA, 0xC4, 0xAA, 0xAD, 0x14, 0xA4, 0x4A, 
  0xAA, 0xC4, 0xC0, 0xE2, 0x4E, 0x4A, 0x24, 0x80, 0x92, 0x49, 0x00, 0x91, 
  0x29, 0x00
};

const GFXglyph Roboto_7Glyphs[] PROGMEM = {
  {     0,   1,   1,   3,    0,    0 },   // 0x20 ' '
  {     1,   3,   5,   3,    0,   -5 },   // 0x21 '!'
  {     3,   3,   1,   3,    0,   -5 },   // 0x22 '"'
  {     4,   5,   5,   5,    0,   -5 },   // 0x23 '#'
  {     8,   5,   6,   5,    0,   -6 },   // 0x24 '$'
  {    13,   5,   6,   5,    0,   -6 },   // 0x25 '%'
  {    18,   4,   6,   5,    0,   -6 },   // 0x26 '&'
  {    21,   2,   1,   2,    0,   -5 },   // 0x27 '''
  {    22,   5,   6,   6,    0,   -6 },   // 0x28 '('
  {    27,   5,   6,   6,    0,   -6 },   // 0x29 ')'
  {    32,   5,   6,   6,    0,   -6 },   // 0x2A '*'
  {    37,   5,   3,   5,    0,   -4 },   // 0x2B '+'
  {    39,   2,   2,   2,    0,   -1 },   // 0x2C ','
  {    40,   3,   2,   3,    0,   -3 },   // 0x2D '-'
  {    41,   3,   1,   3,    0,   -1 },   // 0x2E '.'
  {    42,   4,   5,   4,    0,   -5 },   // 0x2F '/'
  {    45,   5,   5,   5,    0,   -5 },   // 0x30 '0'
  {    49,   2,   5,   5,    1,   -5 },   // 0x31 '1'
  {    51,   5,   5,   5,    0,   -5 },   // 0x32 '2'
  {    55,   4,   5,   5,    0,   -5 },   // 0x33 '3'
  {    58,   5,   5,   5,    0,   -5 },   // 0x34 '4'
  {    62,   4,   5,   5,    1,   -5 },   // 0x35 '5'
  {    65,   5,   5,   5,    0,   -5 },   // 0x36 '6'
  {    69,   5,   5,   5,    0,   -5 },   // 0x37 '7'
  {    73,   5,   5,   5,    0,   -5 },   // 0x38 '8'
  {    77,   4,   5,   5,    0,   -5 },   // 0x39 '9'
  {    80,   3,   4,   3,    0,   -4 },   // 0x3A ':'
  {    82,   2,   5,   2,    0,   -4 },   // 0x3B ';'
  {    84,   4,   3,   5,    0,   -4 },   // 0x3C '<'
  {    86,   3,   2,   5,    1,   -3 },   // 0x3D '='
  {    87,   4,   3,   5,    0,   -4 },   // 0x3E '>'
  {    89,   4,   5,   4,    0,   -5 },   // 0x3F '?'
  {    92,   7,   7,   7,    0,   -5 },   // 0x40 '@'
  {    99,   5,   5,   6,    0,   -5 },   // 0x41 'A'
  {   103,   4,   5,   5,    1,   -5 },   // 0x42 'B'
  {   106,   5,   5,   6,    0,   -5 },   // 0x43 'C'
  {   110,   4,   5,   6,    1,   -5 },   // 0x44 'D'
  {   113,   4,   5,   5,    1,   -5 },   // 0x45 'E'
  {   116,   4,   5,   5,    1,   -5 },   // 0x46 'F'
  {   119,   5,   5,   6,    0,   -5 },   // 0x47 'G'
  {   123,   4,   5,   6,    1,   -5 },   // 0x48 'H'
  {   126,   3,   5,   3,    0,   -5 },   // 0x49 'I'
  {   128,   4,   5,   5,    0,   -5 },   // 0x4A 'J'
  {   131,   4,   5,   5,    1,   -5 },   // 0x4B 'K'
  {   134,   4,   5,   5,    1,   -5 },   // 0x4C 'L'
  {   137,   6,   5,   7,    1,   -5 },   // 0x4D 'M'
  {   141,   4,   5,   6,    1,   -5 },   // 0x4E 'N'
  {   144,   5,   5,   6,    0,   -5 },   // 0x4F 'O'
  {   148,   4,   5,   5,    1,   -5 },   // 0x50 'P'
  {   151,   5,   6,   6,    0,   -5 },   // 0x51 'Q'
  {   155,   4,   5,   5,    1,   -5 },   // 0x52 'R'
  {   158,   5,   5,   5,    0,   -5 },   // 0x53 'S'
  {   162,   5,   5,   5,    0,   -5 },   // 0x54 'T'
  {   166,   5,   5,   6,    0,   -5 },   // 0x55 'U'
  {   170,   5,   5,   5,    0,   -5 },   // 0x56 'V'
  {   174,   7,   5,   7,    0,   -5 },   // 0x57 'W'
  {   179,   5,   5,   5,    0,   -5 },   // 0x58 'X'
  {   183,   5,   5,   5,    0,   -5 },   // 0x59 'Y'
  {   187,   5,   5,   5,    0,   -5 },   // 0x5A 'Z'
  {   191,   2,   7,   3,    1,   -6 },   // 0x5B '['
  {   193,   4,   5,   4,    0,   -5 },   // 0x5C '\'
  {   196,   2,   7,   3,    0,   -6 },   // 0x5D ']'
  {   198,   4,   3,   4,    0,   -5 },   // 0x5E '^'
  {   200,   4,   1,   4,    0,    0 },   // 0x5F '_'
  {   201,   3,   1,   3,    0,   -5 },   // 0x60 '`'
  {   202,   4,   4,   5,    0,   -4 },   // 0x61 'a'
  {   204,   5,   5,   5,    0,   -5 },   // 0x62 'b'
  {   208,   4,   4,   5,    0,   -4 },   // 0x63 'c'
  {   210,   4,   5,   5,    0,   -5 },   // 0x64 'd'
  {   213,   4,   4,   5,    0,   -4 },   // 0x65 'e'
  {   215,   3,   5,   3,    0,   -5 },   // 0x66 'f'
  {   217,   4,   5,   5,    0,   -4 },   // 0x67 'g'
  {   220,   4,   5,   5,    0,   -5 },   // 0x68 'h'
  {   223,   2,   5,   3,    0,   -5 },   // 0x69 'i'
  {   225,   2,   6,   3,    0,   -5 },   // 0x6A 'j'
  {   227,   5,   5,   5,    0,   -5 },   // 0x6B 'k'
  {   231,   3,   5,   3,    0,   -5 },   // 0x6C 'l'
  {   233,   7,   4,   7,    0,   -4 },   // 0x6D 'm'
  {   237,   4,   4,   5,    0,   -4 },   // 0x6E 'n'
  {   239,   5,   4,   5,    0,   -4 },   // 0x6F 'o'
  {   242,   5,   5,   5,    0,   -4 },   // 0x70 'p'
  {   246,   4,   5,   5,    0,   -4 },   // 0x71 'q'
  {   249,   3,   4,   3,    0,   -4 },   // 0x72 'r'
  {   251,   4,   4,   5,    0,   -4 },   // 0x73 's'
  {   253,   3,   5,   3,    0,   -5 },   // 0x74 't'
  {   255,   4,   4,   5,    0,   -4 },   // 0x75 'u'
  {   257,   4,   4,   4,    0,   -4 },   // 0x76 'v'
  {   259,   6,   4,   6,    0,   -4 },   // 0x77 'w'
  {   262,   4,   4,   4,    0,   -4 },   // 0x78 'x'
  {   264,   4,   5,   4,    0,   -4 },   // 0x79 'y'
  {   267,   4,   4,   4,    0,   -4 },   // 0x7A 'z'
  {   269,   3,   6,   3,    0,   -5 },   // 0x7B '{'
  {   272,   3,   6,   3,    0,   -5 },   // 0x7C '|'
  {   275,   3,   6,   3,    0,   -5 }    // 0x7D '}'
};

const GFXfont Roboto_7 PROGMEM = {
(uint8_t  *)Roboto_7Bitmaps, (GFXglyph *)Roboto_7Glyphs, 0x20, 0x7E,  9};

Was ist Deine Motivation?

  • Du findest für eine konkrete Aufgabe nicht den passenden Font
  • Du interessierst Dich allgemein für die Thematik
  • ??

Welchen Zeichensatz möchtest Du verwenden und was ist der Ursprng der Texte?

Ja, da stimme ich Dir zu :slightly_smiling_face:

Mein Ziel ist eine Anzeige wo mehrere Texte angezeigt werden können, wo eben auch Umlaute in den Wörtern vorkommen können. Ich benutze einen ESP32 und ein Display mit ST7735 Chip.

Da ich bei meiner Suche keine Andere Lösung gefunden habe als "da muss man ein paar Symbole die man nicht braucht ändern", habe ich mehrere Versuche gemacht wie ich das machen kann. Die einzige Lösung, die bei mir funktioniert hat, war das ich die oben genannten Symbole einfach geändert habe. Da ich aber nur die Pixel verschoben habe, muß ich in meinen Wörtern die Buchstaben eben in diese Symbole abändern. Und da ist schon wieder das nächste Problem, ich bekomme das nicht in einen kurzen Code, ausser so wie ich es gezeigt habe.

Da ich über den Font Converter mir Adafruit GFX Fonts erstellt habe, hatte ich eigentlich vor dabei zu bleiben, ausser es gibt einen besseren vorschlag

Oli Kraus berücksichtigt in seinen Fonts UTF-8, da muß man vermutlich keine eigenen zusammenstellen. Seine U8g2_for_Adafruit_GFX ersetzt dann die GFX von Adafruit. Als Beispiel nutze ich Unicode_Adafruit_SSD1306, umgeschrieben auf ST7735. Eventuell mußt Du die Pins (/*CS*/ 17, /*DC*/ 2, /*RST*/ 14) anpassen. Getestet mit ESP32:

#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735 
#include <U8g2_for_Adafruit_GFX.h>

Adafruit_ST7735 tft = Adafruit_ST7735(/*CS*/ 17, /*DC*/ 2, /*RST*/ 14); 
U8G2_FOR_ADAFRUIT_GFX display;

void setup() {
  tft.initR(INITR_BLACKTAB);                        // Init ST7735S chip, black tab
  tft.setRotation(1);
  display.begin(tft);                 // connect u8g2 procedures to Adafruit GFX
  tft.fillScreen(ST77XX_BLACK);       // apply Adafruit GFX color
}

void loop() {  
  display.setForegroundColor(ST77XX_WHITE);  // apply Adafruit GFX color
  
  display.setFont(u8g2_font_siji_t_6x10);    // icon font
  display.setFontMode(1);                    // use u8g2 transparent mode (this is default)
  display.drawGlyph(0, 10, 0x0e200);         // Power Supply
  display.drawGlyph(12, 10, 0x0e201);        // Charging
  display.drawGlyph(24, 10, 0x0e10a);        // Right Arrow
  display.drawGlyph(36, 10, 0x0e24b);        // full Battery

  display.setFont(u8g2_font_7x13_te);        // extended font
  display.setFontMode(1);                    // use u8g2 transparent mode (this is default)
  display.setCursor(0,40);                   // start writing at this position
  display.print("Hallo äöüÄÖÜ߀ Hallo");     // UTF-8 string
  delay(2000);
} 

grafik

Vielen Dank, für das Beispiel,

leider funktioniert das bei mir nicht richtig. Ich sollte wohl noch erwähnen, dass es sich um ein 0,96" 80x160 Display handelt.

Bei mir werden, wenn ich deinen Sketch so übernehme (CS & RST angepasst), die Symbole nicht angezeigt, der Text steht ganz oben, der Hintergrund ist weiß und der Text schwarz.

In der Adafruit_ST7735.h habe ich folgende Zeilen gefunden

#define INITR_GREENTAB 0x00
#define INITR_REDTAB 0x01
#define INITR_BLACKTAB 0x02
#define INITR_18GREENTAB INITR_GREENTAB
#define INITR_18REDTAB INITR_REDTAB
#define INITR_18BLACKTAB INITR_BLACKTAB
#define INITR_144GREENTAB 0x01
#define INITR_MINI160x80 0x04
#define INITR_HALLOWING 0x05

also habe ich in deinem Sketch die Zeile tft.initR(INITR_BLACKTAB); mit allen Versionen durchprobiert, ohne Positiven erfolg. Nur bei tft.initR(INITR_MINI160x80); wurden mir dann auch die Symbole angezeigt.

Ich habe mir auch die Adafruit_ST7735.cpp angeschaut, weiß aber nich ob und wenn was ich da ändern müßte, damit bei mir die Farben passen.

Hast Du Adafruit_ST7735_and_ST7789_Library\examples\miniTFTWing\basic\basic.ino oder graphicstest.ino probiert?

Ich habe bei beiden folgende Zeilen angepasst

#elif defined(ESP32) && !defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2)
   #define TFT_CS   15
   #define TFT_DC   2

Beim basic.ino kommt im Seriellen Monitor seesaw couldn't be found!
und beim graphictest.ino kommt im Seriellen Monitor Hello! ST77xx TFT Testseesaw init error!

Bringt Dir Adafruit Mini TFT - 0.96" 160x80 irgendwelche Erkenntnisse?

Irgendwie Blicke ich da nicht ganz durch.

Die 2 Sketche die du im Post 9 erwähnt hast funktionieren weiterhin nicht.

Aber der Adafruit_ST7735_and_ST7789_Library\graphicstest.ino funktioniert (der wurde auch auf der Internetseite genommen), aber nur mit der Pin-Belegung die ich aus meinem alten Sketch habe. Änder ich es so um wie es im Beispiel-Sketch vorgegeben, funktioniert es nicht. Sowas ist echt deprimierend.

Ich würde ja gerne deinen Vorschlag nehmen, da ich dann ja keine Krüppel-Font benutzen muß, aber wenn ich das mit der Farbe nicht hinbekomme, bleibt mir wohl nichts anderes übrig.

Bitte zeigen, ich kann nicht auf Deinen Schreibtisch schauen!

Das dann umbauen auf U8g2_for_Adafruit_GFX, siehe #7.

Hier der Sketch

/**************************************************************************
  This is a library for several Adafruit displays based on ST77* drivers.

  Works with the Adafruit 1.8" TFT Breakout w/SD card
    ----> http://www.adafruit.com/products/358
  The 1.8" TFT shield
    ----> https://www.adafruit.com/product/802
  The 1.44" TFT breakout
    ----> https://www.adafruit.com/product/2088
  The 1.14" TFT breakout
  ----> https://www.adafruit.com/product/4383
  The 1.3" TFT breakout
  ----> https://www.adafruit.com/product/4313
  The 1.54" TFT breakout
    ----> https://www.adafruit.com/product/3787
  The 1.69" TFT breakout
    ----> https://www.adafruit.com/product/5206
  The 2.0" TFT breakout
    ----> https://www.adafruit.com/product/4311
  as well as Adafruit raw 1.8" TFT display
    ----> http://www.adafruit.com/products/618

  Check out the links above for our tutorials and wiring diagrams.
  These displays use SPI to communicate, 4 or 5 pins are required to
  interface (RST is optional).

  Adafruit invests time and resources providing this open source code,
  please support Adafruit and open-source hardware by purchasing
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.
  MIT license, all text above must be included in any redistribution
 **************************************************************************/

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
#include <Adafruit_ST7789.h> // Hardware-specific library for ST7789
#include <SPI.h>

#if defined(ARDUINO_FEATHER_ESP32) // Feather Huzzah32
  #define TFT_CS         14
  #define TFT_RST        15
  #define TFT_DC         32

#elif defined(ESP8266)
  #define TFT_CS         4
  #define TFT_RST        16                                            
  #define TFT_DC         5

#else
  // For the breakout board, you can use any 2 or 3 pins.
  // These pins will also work for the 1.8" TFT shield.
  #define TFT_CS        15
  #define TFT_RST        4 // Or set to -1 and connect to Arduino RESET pin
  #define TFT_DC         20
#endif

// OPTION 1 (recommended) is to use the HARDWARE SPI pins, which are unique
// to each board and not reassignable. For Arduino Uno: MOSI = pin 11 and
// SCLK = pin 13. This is the fastest mode of operation and is required if
// using the breakout board's microSD card.

// For 1.44" and 1.8" TFT with ST7735 use:
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

// For 1.14", 1.3", 1.54", 1.69", and 2.0" TFT with ST7789:
//Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);


// OPTION 2 lets you interface the display using ANY TWO or THREE PINS,
// tradeoff being that performance is not as fast as hardware SPI above.
//#define TFT_MOSI 11  // Data out
//#define TFT_SCLK 13  // Clock out

// For ST7735-based displays, we will use this call
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

// OR for the ST7789-based displays, we will use this call
//Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);


float p = 3.1415926;

void setup(void) {
  Serial.begin(9600);
  Serial.print(F("Hello! ST77xx TFT Test"));

  // Use this initializer if using a 1.8" TFT screen:
  tft.initR(INITR_BLACKTAB);      // Init ST7735S chip, black tab

  // OR use this initializer if using a 1.8" TFT screen with offset such as WaveShare:
  // tft.initR(INITR_GREENTAB);      // Init ST7735S chip, green tab

  // OR use this initializer (uncomment) if using a 1.44" TFT:
  //tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab

  // OR use this initializer (uncomment) if using a 0.96" 160x80 TFT:
  //tft.initR(INITR_MINI160x80);  // Init ST7735S mini display

  // OR use this initializer (uncomment) if using a 1.3" or 1.54" 240x240 TFT:
  //tft.init(240, 240);           // Init ST7789 240x240

  // OR use this initializer (uncomment) if using a 1.69" 280x240 TFT:
  //tft.init(240, 280);           // Init ST7789 280x240

  // OR use this initializer (uncomment) if using a 2.0" 320x240 TFT:
  //tft.init(240, 320);           // Init ST7789 320x240

  // OR use this initializer (uncomment) if using a 1.14" 240x135 TFT:
  //tft.init(135, 240);           // Init ST7789 240x135
  
  // OR use this initializer (uncomment) if using a 1.47" 172x320 TFT:
  //tft.init(172, 320);           // Init ST7789 172x320

  // SPI speed defaults to SPI_DEFAULT_FREQ defined in the library, you can override it here
  // Note that speed allowable depends on chip and quality of wiring, if you go too fast, you
  // may end up with a black screen some times, or all the time.
  //tft.setSPISpeed(40000000);

  Serial.println(F("Initialized"));

  uint16_t time = millis();
  tft.fillScreen(ST77XX_BLACK);
  time = millis() - time;

  Serial.println(time, DEC);
  delay(500);

  // large block of text
  tft.fillScreen(ST77XX_BLACK);
  testdrawtext("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa, fringilla sed malesuada et, malesuada sit amet turpis. Sed porttitor neque ut ante pretium vitae malesuada nunc bibendum. Nullam aliquet ultrices massa eu hendrerit. Ut sed nisi lorem. In vestibulum purus a tortor imperdiet posuere. ", ST77XX_WHITE);
  delay(1000);

  // tft print function!
  tftPrintTest();
  delay(4000);

  // a single pixel
  tft.drawPixel(tft.width()/2, tft.height()/2, ST77XX_GREEN);
  delay(500);

  // line draw test
  testlines(ST77XX_YELLOW);
  delay(500);

  // optimized lines
  testfastlines(ST77XX_RED, ST77XX_BLUE);
  delay(500);

  testdrawrects(ST77XX_GREEN);
  delay(500);

  testfillrects(ST77XX_YELLOW, ST77XX_MAGENTA);
  delay(500);

  tft.fillScreen(ST77XX_BLACK);
  testfillcircles(10, ST77XX_BLUE);
  testdrawcircles(10, ST77XX_WHITE);
  delay(500);

  testroundrects();
  delay(500);

  testtriangles();
  delay(500);

  mediabuttons();
  delay(500);

  Serial.println("done");
  delay(1000);
}

void loop() {
  tft.invertDisplay(true);
  delay(500);
  tft.invertDisplay(false);
  delay(500);
}

void testlines(uint16_t color) {
  tft.fillScreen(ST77XX_BLACK);
  for (int16_t x=0; x < tft.width(); x+=6) {
    tft.drawLine(0, 0, x, tft.height()-1, color);
    delay(0);
  }
  for (int16_t y=0; y < tft.height(); y+=6) {
    tft.drawLine(0, 0, tft.width()-1, y, color);
    delay(0);
  }

  tft.fillScreen(ST77XX_BLACK);
  for (int16_t x=0; x < tft.width(); x+=6) {
    tft.drawLine(tft.width()-1, 0, x, tft.height()-1, color);
    delay(0);
  }
  for (int16_t y=0; y < tft.height(); y+=6) {
    tft.drawLine(tft.width()-1, 0, 0, y, color);
    delay(0);
  }

  tft.fillScreen(ST77XX_BLACK);
  for (int16_t x=0; x < tft.width(); x+=6) {
    tft.drawLine(0, tft.height()-1, x, 0, color);
    delay(0);
  }
  for (int16_t y=0; y < tft.height(); y+=6) {
    tft.drawLine(0, tft.height()-1, tft.width()-1, y, color);
    delay(0);
  }

  tft.fillScreen(ST77XX_BLACK);
  for (int16_t x=0; x < tft.width(); x+=6) {
    tft.drawLine(tft.width()-1, tft.height()-1, x, 0, color);
    delay(0);
  }
  for (int16_t y=0; y < tft.height(); y+=6) {
    tft.drawLine(tft.width()-1, tft.height()-1, 0, y, color);
    delay(0);
  }
}

void testdrawtext(char *text, uint16_t color) {
  tft.setCursor(0, 0);
  tft.setTextColor(color);
  tft.setTextWrap(true);
  tft.print(text);
}

void testfastlines(uint16_t color1, uint16_t color2) {
  tft.fillScreen(ST77XX_BLACK);
  for (int16_t y=0; y < tft.height(); y+=5) {
    tft.drawFastHLine(0, y, tft.width(), color1);
  }
  for (int16_t x=0; x < tft.width(); x+=5) {
    tft.drawFastVLine(x, 0, tft.height(), color2);
  }
}

void testdrawrects(uint16_t color) {
  tft.fillScreen(ST77XX_BLACK);
  for (int16_t x=0; x < tft.width(); x+=6) {
    tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color);
  }
}

void testfillrects(uint16_t color1, uint16_t color2) {
  tft.fillScreen(ST77XX_BLACK);
  for (int16_t x=tft.width()-1; x > 6; x-=6) {
    tft.fillRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color1);
    tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color2);
  }
}

void testfillcircles(uint8_t radius, uint16_t color) {
  for (int16_t x=radius; x < tft.width(); x+=radius*2) {
    for (int16_t y=radius; y < tft.height(); y+=radius*2) {
      tft.fillCircle(x, y, radius, color);
    }
  }
}

void testdrawcircles(uint8_t radius, uint16_t color) {
  for (int16_t x=0; x < tft.width()+radius; x+=radius*2) {
    for (int16_t y=0; y < tft.height()+radius; y+=radius*2) {
      tft.drawCircle(x, y, radius, color);
    }
  }
}

void testtriangles() {
  tft.fillScreen(ST77XX_BLACK);
  uint16_t color = 0xF800;
  int t;
  int w = tft.width()/2;
  int x = tft.height()-1;
  int y = 0;
  int z = tft.width();
  for(t = 0 ; t <= 15; t++) {
    tft.drawTriangle(w, y, y, x, z, x, color);
    x-=4;
    y+=4;
    z-=4;
    color+=100;
  }
}

void testroundrects() {
  tft.fillScreen(ST77XX_BLACK);
  uint16_t color = 100;
  int i;
  int t;
  for(t = 0 ; t <= 4; t+=1) {
    int x = 0;
    int y = 0;
    int w = tft.width()-2;
    int h = tft.height()-2;
    for(i = 0 ; i <= 16; i+=1) {
      tft.drawRoundRect(x, y, w, h, 5, color);
      x+=2;
      y+=3;
      w-=4;
      h-=6;
      color+=1100;
    }
    color+=100;
  }
}

void tftPrintTest() {
  tft.setTextWrap(false);
  tft.fillScreen(ST77XX_BLACK);
  tft.setCursor(0, 30);
  tft.setTextColor(ST77XX_RED);
  tft.setTextSize(1);
  tft.println("Hello World!");
  tft.setTextColor(ST77XX_YELLOW);
  tft.setTextSize(2);
  tft.println("Hello World!");
  tft.setTextColor(ST77XX_GREEN);
  tft.setTextSize(3);
  tft.println("Hello World!");
  tft.setTextColor(ST77XX_BLUE);
  tft.setTextSize(4);
  tft.print(1234.567);
  delay(1500);
  tft.setCursor(0, 0);
  tft.fillScreen(ST77XX_BLACK);
  tft.setTextColor(ST77XX_WHITE);
  tft.setTextSize(0);
  tft.println("Hello World!");
  tft.setTextSize(1);
  tft.setTextColor(ST77XX_GREEN);
  tft.print(p, 6);
  tft.println(" Want pi?");
  tft.println(" ");
  tft.print(8675309, HEX); // print 8,675,309 out in HEX!
  tft.println(" Print HEX!");
  tft.println(" ");
  tft.setTextColor(ST77XX_WHITE);
  tft.println("Sketch has been");
  tft.println("running for: ");
  tft.setTextColor(ST77XX_MAGENTA);
  tft.print(millis() / 1000);
  tft.setTextColor(ST77XX_WHITE);
  tft.print(" seconds.");
}

void mediabuttons() {
  // play
  tft.fillScreen(ST77XX_BLACK);
  tft.fillRoundRect(25, 10, 78, 60, 8, ST77XX_WHITE);
  tft.fillTriangle(42, 20, 42, 60, 90, 40, ST77XX_RED);
  delay(500);
  // pause
  tft.fillRoundRect(25, 90, 78, 60, 8, ST77XX_WHITE);
  tft.fillRoundRect(39, 98, 20, 45, 5, ST77XX_GREEN);
  tft.fillRoundRect(69, 98, 20, 45, 5, ST77XX_GREEN);
  delay(500);
  // play color
  tft.fillTriangle(42, 20, 42, 60, 90, 40, ST77XX_BLUE);
  delay(50);
  // pause color
  tft.fillRoundRect(39, 98, 20, 45, 5, ST77XX_RED);
  tft.fillRoundRect(69, 98, 20, 45, 5, ST77XX_RED);
  // play color
  tft.fillTriangle(42, 20, 42, 60, 90, 40, ST77XX_GREEN);
}

Hier habe ich meine Einstellungen für das Display gemacht

#else
  // For the breakout board, you can use any 2 or 3 pins.
  // These pins will also work for the 1.8" TFT shield.
  #define TFT_CS        15
  #define TFT_RST        4 // Or set to -1 and connect to Arduino RESET pin
  #define TFT_DC         20
#endif

Und hier dieAnzeige vom Serial Monitor.

Hoffe ich habe da das richtige gepostet, was du meinst

EDIT: Ich glaube, ich bin da gerade auf dem Holzweg!!!!!

Da wurde ja nur ein Farbtest abgespielt, aber ich konnt ja nich sehen obs die richtigen sind :man_facepalming:

#include <SPI.h>
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735

// agmue
#define TFT_CS         17
#define TFT_RST        14
#define TFT_DC          2
/*
// TorstenUE
#define TFT_CS        15
#define TFT_RST        4 // Or set to -1 and connect to Arduino RESET pin
#define TFT_DC         20
*/
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

void setup(void) {
  tft.initR(INITR_BLACKTAB);      // Init ST7735S chip, black tab
  tft.setRotation(1);  
  tft.fillScreen(ST77XX_BLACK);
  tft.setCursor(0, 10);
  tft.setTextColor(ST77XX_WHITE);
  tft.setTextWrap(true);
  tft.print("Hallo Welt!");
  delay(3000);
}

void loop() {}

Bitte nutze Deine Pinzuordnung!

Was zeigt Dein Display?

Als ich deinen Code 1:1 übernommen hatte, bekam ich folgende Fehlermeldung

Arduino: 1.8.19 (Windows 10), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

agmue_Beispiel_Code2:14:1: error: 'Adafruit_ST7735' does not name a type

 Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

 ^

C:\Users\torst\Documents\Arduino\agmue_Beispiel_Code2\agmue_Beispiel_Code2.ino: In function 'void setup()':

agmue_Beispiel_Code2:17:3: error: 'tft' was not declared in this scope

   tft.initR(INITR_BLACKTAB);      // Init ST7735S chip, black tab

   ^

agmue_Beispiel_Code2:17:13: error: 'INITR_BLACKTAB' was not declared in this scope

   tft.initR(INITR_BLACKTAB);      // Init ST7735S chip, black tab

             ^

agmue_Beispiel_Code2:19:18: error: 'ST77XX_BLACK' was not declared in this scope

   tft.fillScreen(ST77XX_BLACK);

                  ^

agmue_Beispiel_Code2:21:20: error: 'ST77XX_WHITE' was not declared in this scope

   tft.setTextColor(ST77XX_WHITE);

                    ^

exit status 1

'Adafruit_ST7735' does not name a type



Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

Als ich dann noch #include <Adafruit_ST7735.h> hinzugefügt habe, hatte ich ein weisses Bild

Mach das mall in deiner IDE, Datei -> Voreinstellungen -> Ausführliche Ausgabe während : und dort Häkchen setzen

Das steht doch in #15, oder?

Jetzt bin ich mehr verwirrt.

Wieso haben bei mir die 3 Ersten Zeilen gefehlt??

Auf jeden Fall läuft der Code Fehlerfrei durch und ich bekomme einen Weißen Bildschirm.

Kein Text

Wird denn bei graphicstest.ino Text angezeigt?

Wenn ja, reduziere bitte dieses Programm, bis nur noch Text angezeigt wird.

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735

#include <SPI.h>

#define TFT_CS        15
#define TFT_RST        4 // Or set to -1 and connect to Arduino RESET pin
#define TFT_DC         2

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);


void setup(void) {
  Serial.begin(9600);
  Serial.print(F("Hello! ST77xx TFT Test"));

  tft.initR(INITR_MINI160x80);  // Init ST7735S mini display

  tft.setTextWrap(false);
  tft.setRotation(3);
  tft.fillScreen(ST77XX_BLACK);
  tft.setCursor(0, 30);
  tft.setTextColor(ST77XX_RED);
  tft.setTextSize(1);
  tft.println("Hello World!");
  tft.setTextColor(ST77XX_YELLOW);
  tft.setTextSize(2);
  tft.println("Hello World!");
  tft.setTextColor(ST77XX_GREEN);
  tft.setTextSize(3);
  tft.println("Hello World!");
}

void loop() {}

Der Hintergrund ist weiß

Der 1. Text Gelb,
der 2. Text Rot,
der 3. Text Magenta

EDIT: Habe jetzt beim Suchen noch folgenden Befehl gefunden

tft.invertDisplay(1);

Dadurch haben sich alle Farben nochmal komplett geändert.

Hintergrund Schwarz (wie gewünscht)

  1. Text Dunkelblau
  2. Text Hellblau
  3. Text Hellgrün

UND: Das Display ist verschoben. Der Schwarze Hintergrund ist einige Pixel nach oben und Links verrutscht