Because code is too long, I'll split it.
Here part1:
#include <LiquidCrystal.h>
#include <Scheduler.h>
// Connections:
// rs (LCD pin 4) to Arduino pin 12
// rw (LCD pin 5) to Arduino pin 11
// enable (LCD pin 6) to Arduino pin 10
// LCD pin 15 to Arduino pin 13
// LCD pins d4, d5, d6, d7 to Arduino pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
Scheduler scheduler1 = Scheduler(); //create a scheduler
int backLight = 13; // pin 13 will control the backlight
int numberdigits[4]={};
int zehnerstelle;
int speednr = 0;
int digitsamount = 0;
char* segments[9] = {};
char* added;
int currentindex = 0;
boolean ignorethis = false;
int charsused = 0;
int xpos = 0;
int ypos = 0;
int digitround = 0;
byte glyph_a[9] = {
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11000
};
byte glyph_b[9] = {
B11111,
B11111,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000
};
byte glyph_c[9] = {
B11111,
B11111,
B00011,
B00011,
B00011,
B00011,
B11111,
B11111
};
byte glyph_d[9] = {
B00011,
B00011,
B00011,
B00011,
B00011,
B00011,
B11111,
B11111
};
byte glyph_e[9] = {
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11111,
B11111
};
byte glyph_f[9] = {
B11111,
B11111,
B11000,
B11000,
B11000,
B11000,
B11111,
B11111
};
byte glyph_g[9] = {
B11111,
B11111,
B00000,
B00000,
B00000,
B00000,
B11111,
B11111
};
byte glyph_h[9] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B11111,
B11111
};
byte glyph_i[9] = {
B00011,
B00011,
B00110,
B00110,
B01100,
B01100,
B11111,
B11111
};
byte glyph_j[9] = {
B11111,
B11111,
B00110,
B00110,
B01100,
B01100,
B11000,
B11000
};
byte glyph_k[9] = {
B00011,
B00011,
B00110,
B00110,
B01100,
B01100,
B11000,
B11000
};
byte glyph_l[9] = {
B11000,
B11000,
B01100,
B01100,
B00110,
B00110,
B00011,
B00011
};
char* array_0[5] = {"K","L","L","K"};
char* array_1[5] = {"Z","A","Z","A"};
char* array_2[5] = {"B","C","I","H"};
char* array_3[5] = {"B","C","H","D"};
char* array_4[5] = {"I","E","Z","A"};
char* array_5[5] = {"I","G","H","D"};
char* array_6[5] = {"I","H","E","K"};
char* array_7[5] = {"B","J","K","Z"};
char* array_8[5] = {"F","C","E","D"};
char* array_9[5] = {"I","C","Z","K"};
void setup()
{
Serial.begin(4800);
pinMode(backLight, OUTPUT);
digitalWrite(backLight, HIGH); // turn backlight on. Replace 'HIGH' with 'LOW' to turn it off.
lcd.begin(16,2); // columns, rows. use 16,2 for a 16x2 LCD, etc.
lcd.clear(); // start with a blank screen
// if you have a 4 row LCD, uncomment these lines to write to the bottom rows
// and change the lcd.begin() statement above.
//lcd.setCursor(0,2); // set cursor to column 0, row 2
//lcd.print("Row 3");
//lcd.setCursor(0,3); // set cursor to column 0, row 3
//lcd.print("Row 4");
createNumber_0();
}
void loop()
{
scheduler1.update();
}
void createNumber_0() { // analyze numbers (I)
memset(numberdigits,0,sizeof(numberdigits)); // empty numberdigits array
if(speednr > 199) { // numberdigits is always 3 numbers long, even if it starts with 0
numberdigits[0] = 2;
zehnerstelle = speednr-200;
digitsamount = 3;
createNumber_1();
} else if(speednr > 99) {
numberdigits[0] = 1;
zehnerstelle = speednr-100;
digitsamount = 3;
createNumber_1();
} else if(speednr > 9) {
numberdigits[0] = 0;
digitsamount = 2;
zehnerstelle = speednr;
createNumber_1();
} else {
numberdigits[0] = 0;
digitsamount = 1;
zehnerstelle = 0;
createNumber_1();
}
}
void createNumber_1() { // analyze numbers (II) and fill array numberdigits[]
digitround = 0;
if(zehnerstelle > 89) {
numberdigits[1] = 9;
numberdigits[2] = zehnerstelle - 90;
Serial.println("1. Digits Array created for this number.");
Serial.print(" ");Serial.print(numberdigits[0]);Serial.print(numberdigits[1]);Serial.println(numberdigits[2]);
createNumber_2();
} else if(zehnerstelle > 79) {
numberdigits[1] = 8;
numberdigits[2] = zehnerstelle - 80;
Serial.println("1. Digits Array created for this number.");
Serial.print(" ");Serial.print(numberdigits[0]);Serial.print(numberdigits[1]);Serial.println(numberdigits[2]);
createNumber_2();
} else if(zehnerstelle > 69) {
numberdigits[1] = 7;
numberdigits[2] = zehnerstelle - 70;
Serial.println("1. Digits Array created for this number.");
Serial.print(" ");Serial.print(numberdigits[0]);Serial.print(numberdigits[1]);Serial.println(numberdigits[2]);
createNumber_2();
} else if(zehnerstelle > 59) {
numberdigits[1] = 6;
numberdigits[2] = zehnerstelle - 60;
Serial.println("1. Digits Array created for this number.");
Serial.print(" ");Serial.print(numberdigits[0]);Serial.print(numberdigits[1]);Serial.println(numberdigits[2]);
createNumber_2();
} else if(zehnerstelle > 49) {
numberdigits[1] = 5;
numberdigits[2] = zehnerstelle - 50;
Serial.println("1. Digits Array created for this number.");
Serial.print(" ");Serial.print(numberdigits[0]);Serial.print(numberdigits[1]);Serial.println(numberdigits[2]);
createNumber_2();
} else if(zehnerstelle > 39) {
numberdigits[1] = 4;
numberdigits[2] = zehnerstelle - 40;
Serial.println("1. Digits Array created for this number.");
Serial.print(" ");Serial.print(numberdigits[0]);Serial.print(numberdigits[1]);Serial.println(numberdigits[2]);
createNumber_2();
} else if(zehnerstelle > 29) {
numberdigits[1] = 3;
numberdigits[2] = zehnerstelle - 30;
Serial.println("1. Digits Array created for this number.");
Serial.print(" ");Serial.print(numberdigits[0]);Serial.print(numberdigits[1]);Serial.println(numberdigits[2]);
createNumber_2();
} else if(zehnerstelle > 19) {
numberdigits[1] = 2;
numberdigits[2] = zehnerstelle - 20;
Serial.println("1. Digits Array created for this number.");
Serial.print(" ");Serial.print(numberdigits[0]);Serial.print(numberdigits[1]);Serial.println(numberdigits[2]);
createNumber_2();
} else if(zehnerstelle > 9) {
numberdigits[1] = 1;
numberdigits[2] = zehnerstelle - 10;
Serial.println("1. Digits Array created for this number.");
Serial.print(" ");Serial.print(numberdigits[0]);Serial.print(numberdigits[1]);Serial.println(numberdigits[2]);
createNumber_2();
} else {
numberdigits[1] = 0;
if(speednr < 10) {
numberdigits[2] = speednr;
} else if(speednr > 199) {
numberdigits[2] = speednr-200;
} else if(speednr > 99) {
numberdigits[2] = speednr-100;
}
Serial.println("1. Digits Array created for this number.");
Serial.print(" ");Serial.print(numberdigits[0]);Serial.print(numberdigits[1]);Serial.println(numberdigits[2]);
createNumber_2();
}
}