dashboardv4solarboat

Dependencies:   mbed

Fork of mbed_blinky by Mbed

Committer:
Marrkk_92
Date:
Sun May 21 19:33:42 2017 +0000
Revision:
17:f8d3d1f0d8d1
Parent:
16:21658c9e697c
dash v6

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Marrkk_92 16:21658c9e697c 1 #include "oled_characters.h" //all OLED chars + logos
Marrkk_92 16:21658c9e697c 2
Marrkk_92 16:21658c9e697c 3 #define PI 3.141592
Marrkk_92 17:f8d3d1f0d8d1 4 #define SPI_FREQUENCY 5000000
Marrkk_92 16:21658c9e697c 5
Marrkk_92 16:21658c9e697c 6 //digital outputs and SPI
Marrkk_92 17:f8d3d1f0d8d1 7 SPI spi(PB_15, NC, PB_13); // mosi, miso, sclk
Marrkk_92 17:f8d3d1f0d8d1 8 DigitalOut RST(PB_12); //reset 0: reset 1: normal operation
Marrkk_92 17:f8d3d1f0d8d1 9 DigitalOut DC(PA_10); //set input as data or command 0: command 1: data
Marrkk_92 17:f8d3d1f0d8d1 10
Marrkk_92 17:f8d3d1f0d8d1 11 DigitalOut battery_temp_alert_led(PC_1);
Marrkk_92 17:f8d3d1f0d8d1 12 DigitalOut motor_temp_alert_led(PA_8);
Marrkk_92 17:f8d3d1f0d8d1 13 DigitalOut battery_low_alert_led(PB_10);
Marrkk_92 17:f8d3d1f0d8d1 14 DigitalOut fly_ready_led(PB_0);
Marrkk_92 17:f8d3d1f0d8d1 15
Marrkk_92 17:f8d3d1f0d8d1 16 DigitalOut CS_1(PB_3); //chipSelect 0: selected 1: not selected
Marrkk_92 17:f8d3d1f0d8d1 17 DigitalOut CS_2(PB_5); //chipSelect 0: selected 1: not selected
Marrkk_92 17:f8d3d1f0d8d1 18 DigitalOut CS_3(PB_4); //chipSelect 0: selected 1: not selected
Marrkk_92 16:21658c9e697c 19
Marrkk_92 16:21658c9e697c 20 bool error_alert; //internal error booleaan
Marrkk_92 16:21658c9e697c 21
Marrkk_92 16:21658c9e697c 22 bool motor_temp_alert = true; //LED1 E01 motor temperature too high
Marrkk_92 16:21658c9e697c 23 bool battery_temp_alert = true; //LED2 E02 battery temperature too high
Marrkk_92 16:21658c9e697c 24 bool battery_low_alert = true; //LED3 E03 battery low power alert
Marrkk_92 16:21658c9e697c 25 bool fly_ready_alert = true; //LED4 E04 ready for flying
Marrkk_92 16:21658c9e697c 26 bool voltage_in_low = true; //DISPLAY E05 solar panel voltage is low
Marrkk_92 16:21658c9e697c 27 bool communication_not_working = true; //DISPLAY E06 communication (FONA) not working
Marrkk_92 16:21658c9e697c 28 bool dummy_1 = true; //DISPLAY E07 descr.
Marrkk_92 16:21658c9e697c 29 bool dummy_2 = true; //DISPLAY E08 descr.
Marrkk_92 16:21658c9e697c 30 bool dummy_3 = true; //DISPLAY E09 descr.
Marrkk_92 16:21658c9e697c 31 bool dummy_4 = true; //DISPLAY E10 descr.
Marrkk_92 16:21658c9e697c 32 bool dummy_5 = true; //DISPLAY E11 descr.
Marrkk_92 16:21658c9e697c 33 bool dummy_6 = true; //DISPLAY E12 descr.
Marrkk_92 16:21658c9e697c 34 bool dummy_7 = true; //DISPLAY E13 descr.
Marrkk_92 16:21658c9e697c 35 bool dummy_8 = true; //DISPLAY E14 descr.
Marrkk_92 16:21658c9e697c 36
Marrkk_92 16:21658c9e697c 37 void drawPixel(int screen_number, uint8_t row, uint8_t col, uint8_t brightness);
Marrkk_92 16:21658c9e697c 38 void writeNumber(int screen_number, int input_number, char row, char col, int digits, bool large);
Marrkk_92 16:21658c9e697c 39 void writeLetter(int screen_number, char input, int row, int col);
Marrkk_92 16:21658c9e697c 40 void drawBitmap(int screen_number, int number, char row, char col, int width, int height);
Marrkk_92 16:21658c9e697c 41 void updateBatteryBar(int screen_number, int percentage, int row, int col, int width, int height);
Marrkk_92 16:21658c9e697c 42 void clearDisplay(int screen_number);
Marrkk_92 16:21658c9e697c 43
Marrkk_92 16:21658c9e697c 44 void command(int screen_number, uint8_t c)
Marrkk_92 16:21658c9e697c 45 {
Marrkk_92 16:21658c9e697c 46 CS_1 = 1;
Marrkk_92 16:21658c9e697c 47 CS_2 = 1;
Marrkk_92 16:21658c9e697c 48 CS_3 = 1;
Marrkk_92 16:21658c9e697c 49
Marrkk_92 16:21658c9e697c 50 DC = 0;
Marrkk_92 16:21658c9e697c 51
Marrkk_92 16:21658c9e697c 52 if (screen_number == 1) CS_1 = 0;
Marrkk_92 16:21658c9e697c 53 else if (screen_number == 2) CS_2 = 0;
Marrkk_92 16:21658c9e697c 54 else if (screen_number == 3) CS_3 = 0;
Marrkk_92 16:21658c9e697c 55
Marrkk_92 16:21658c9e697c 56 spi.write(c);
Marrkk_92 16:21658c9e697c 57
Marrkk_92 16:21658c9e697c 58 CS_1 = 1;
Marrkk_92 16:21658c9e697c 59 CS_2 = 1;
Marrkk_92 16:21658c9e697c 60 CS_3 = 1;
Marrkk_92 16:21658c9e697c 61 };
Marrkk_92 16:21658c9e697c 62
Marrkk_92 16:21658c9e697c 63 void data(int screen_number, uint8_t c)
Marrkk_92 16:21658c9e697c 64 {
Marrkk_92 16:21658c9e697c 65 CS_1 = 1;
Marrkk_92 16:21658c9e697c 66 CS_2 = 1;
Marrkk_92 16:21658c9e697c 67 CS_3 = 1;
Marrkk_92 16:21658c9e697c 68
Marrkk_92 16:21658c9e697c 69 DC = 1;
Marrkk_92 16:21658c9e697c 70
Marrkk_92 16:21658c9e697c 71 if (screen_number == 1) CS_1 = 0;
Marrkk_92 16:21658c9e697c 72 else if (screen_number == 2) CS_2 = 0;
Marrkk_92 16:21658c9e697c 73 else if (screen_number == 3) CS_3 = 0;
Marrkk_92 16:21658c9e697c 74
Marrkk_92 16:21658c9e697c 75 spi.write(c);
Marrkk_92 16:21658c9e697c 76
Marrkk_92 16:21658c9e697c 77 CS_1 = 1;
Marrkk_92 16:21658c9e697c 78 CS_2 = 1;
Marrkk_92 16:21658c9e697c 79 CS_3 = 1;
Marrkk_92 16:21658c9e697c 80 };
Marrkk_92 16:21658c9e697c 81
Marrkk_92 16:21658c9e697c 82 void powerOnOLED(int screen_number)
Marrkk_92 16:21658c9e697c 83 {
Marrkk_92 16:21658c9e697c 84 if (screen_number == 2) spi.format(8,0); //SQUARE
Marrkk_92 16:21658c9e697c 85 else spi.format(8,3); //CIRCULAR
Marrkk_92 16:21658c9e697c 86 spi.frequency(SPI_FREQUENCY);
Marrkk_92 16:21658c9e697c 87
Marrkk_92 16:21658c9e697c 88 //internal Vdd regulator on
Marrkk_92 16:21658c9e697c 89 command(1, 0xAB);
Marrkk_92 16:21658c9e697c 90 command(1, 0x01);
Marrkk_92 16:21658c9e697c 91 command(3, 0xAB);
Marrkk_92 16:21658c9e697c 92 command(3, 0x01);
Marrkk_92 16:21658c9e697c 93
Marrkk_92 16:21658c9e697c 94 //give reset
Marrkk_92 16:21658c9e697c 95 wait(0.1);
Marrkk_92 16:21658c9e697c 96 RST = 0;
Marrkk_92 16:21658c9e697c 97 wait(0.1);
Marrkk_92 16:21658c9e697c 98 RST = 1;
Marrkk_92 16:21658c9e697c 99
Marrkk_92 16:21658c9e697c 100 //display on, normal mode
Marrkk_92 16:21658c9e697c 101 command(1, 0xAF);
Marrkk_92 16:21658c9e697c 102 command(1, 0xA4);
Marrkk_92 16:21658c9e697c 103 command(2, 0xAF);
Marrkk_92 16:21658c9e697c 104 command(2, 0xA4);
Marrkk_92 16:21658c9e697c 105 command(3, 0xAF);
Marrkk_92 16:21658c9e697c 106 command(3, 0xA4);
Marrkk_92 16:21658c9e697c 107
Marrkk_92 16:21658c9e697c 108 //Enable COM remap
Marrkk_92 16:21658c9e697c 109 command(1, 0xA0);
Marrkk_92 16:21658c9e697c 110 command(1, 0b01000000);
Marrkk_92 16:21658c9e697c 111 command(2, 0xA0);
Marrkk_92 16:21658c9e697c 112 command(2, 0b01000011);
Marrkk_92 16:21658c9e697c 113 command(3, 0xA0);
Marrkk_92 16:21658c9e697c 114 command(3, 0b01000000);
Marrkk_92 16:21658c9e697c 115 }
Marrkk_92 16:21658c9e697c 116
Marrkk_92 16:21658c9e697c 117 void welcomeScreen()
Marrkk_92 16:21658c9e697c 118 {
Marrkk_92 16:21658c9e697c 119 //dickbutt
Marrkk_92 16:21658c9e697c 120 drawBitmap(1, 75, 5, 5, 50, 100);
Marrkk_92 16:21658c9e697c 121 drawBitmap(3, 75, 5, 5, 50, 100);
Marrkk_92 16:21658c9e697c 122 //solar boat logo
Marrkk_92 16:21658c9e697c 123 drawBitmap(2, 74, 10, 0, 64, 64);
Marrkk_92 16:21658c9e697c 124 wait(0.05);
Marrkk_92 16:21658c9e697c 125 writeLetter(2, 'S', 12, 60);
Marrkk_92 16:21658c9e697c 126 wait(0.05);
Marrkk_92 16:21658c9e697c 127 writeLetter(2, 'o', 12, 56);
Marrkk_92 16:21658c9e697c 128 wait(0.05);
Marrkk_92 16:21658c9e697c 129 writeLetter(2, 'l', 12, 52);
Marrkk_92 16:21658c9e697c 130 wait(0.05);
Marrkk_92 16:21658c9e697c 131 writeLetter(2, 'a', 12, 48);
Marrkk_92 16:21658c9e697c 132 wait(0.05);
Marrkk_92 16:21658c9e697c 133 writeLetter(2, 'r', 12, 44);
Marrkk_92 16:21658c9e697c 134 wait(0.05);
Marrkk_92 16:21658c9e697c 135 writeLetter(2, 'B', 12, 38);
Marrkk_92 16:21658c9e697c 136 wait(0.05);
Marrkk_92 16:21658c9e697c 137 writeLetter(2, 'o', 12, 34);
Marrkk_92 16:21658c9e697c 138 wait(0.05);
Marrkk_92 16:21658c9e697c 139 writeLetter(2, 'a', 12, 30);
Marrkk_92 16:21658c9e697c 140 wait(0.05);
Marrkk_92 16:21658c9e697c 141 writeLetter(2, 't', 12, 26);
Marrkk_92 16:21658c9e697c 142 wait(0.05);
Marrkk_92 16:21658c9e697c 143 writeLetter(2, 'T', 12, 20);
Marrkk_92 16:21658c9e697c 144 wait(0.05);
Marrkk_92 16:21658c9e697c 145 writeLetter(2, 'w', 12, 16);
Marrkk_92 16:21658c9e697c 146 wait(0.05);
Marrkk_92 16:21658c9e697c 147 writeLetter(2, 'e', 12, 12);
Marrkk_92 16:21658c9e697c 148 wait(0.05);
Marrkk_92 16:21658c9e697c 149 writeLetter(2, 'n', 12, 8);
Marrkk_92 16:21658c9e697c 150 wait(0.05);
Marrkk_92 16:21658c9e697c 151 writeLetter(2, 't', 12, 4);
Marrkk_92 16:21658c9e697c 152 wait(0.05);
Marrkk_92 16:21658c9e697c 153 writeLetter(2, 'e', 12, 0);
Marrkk_92 16:21658c9e697c 154 wait(0.05);
Marrkk_92 16:21658c9e697c 155
Marrkk_92 16:21658c9e697c 156 clearDisplay(1);
Marrkk_92 16:21658c9e697c 157 clearDisplay(2);
Marrkk_92 16:21658c9e697c 158 clearDisplay(3);
Marrkk_92 16:21658c9e697c 159
Marrkk_92 16:21658c9e697c 160 //LEDs standard on (1)
Marrkk_92 16:21658c9e697c 161 motor_temp_alert_led = 1;
Marrkk_92 16:21658c9e697c 162 battery_temp_alert_led = 1;
Marrkk_92 16:21658c9e697c 163 battery_low_alert_led = 1;
Marrkk_92 16:21658c9e697c 164 fly_ready_led = 1;
Marrkk_92 16:21658c9e697c 165 }
Marrkk_92 16:21658c9e697c 166
Marrkk_92 16:21658c9e697c 167 void resetOLED()
Marrkk_92 16:21658c9e697c 168 {
Marrkk_92 16:21658c9e697c 169 wait(0.1);
Marrkk_92 16:21658c9e697c 170 RST = 0;
Marrkk_92 16:21658c9e697c 171 wait(0.1);
Marrkk_92 16:21658c9e697c 172 RST = 1;
Marrkk_92 16:21658c9e697c 173 }
Marrkk_92 16:21658c9e697c 174
Marrkk_92 16:21658c9e697c 175 void displayData1(int rpm_motor, int battery_temperature, int motor_temperature, int voltage_in, int power_out, int power_in)
Marrkk_92 16:21658c9e697c 176 {
Marrkk_92 16:21658c9e697c 177 if (rpm_motor < 1) rpm_motor = 0;
Marrkk_92 16:21658c9e697c 178 if (battery_temperature < 1) battery_temperature = 0;
Marrkk_92 16:21658c9e697c 179 if (motor_temperature < 1) motor_temperature = 0;
Marrkk_92 16:21658c9e697c 180 if (voltage_in < 1) voltage_in = 0;
Marrkk_92 16:21658c9e697c 181 if (power_in < 1) power_in = 0;
Marrkk_92 16:21658c9e697c 182 if (power_out < 1) power_out = 0;
Marrkk_92 16:21658c9e697c 183
Marrkk_92 16:21658c9e697c 184 writeLetter(2, 'P', 66, 59);
Marrkk_92 16:21658c9e697c 185 writeLetter(2, 'i', 66, 55);
Marrkk_92 16:21658c9e697c 186 writeLetter(2, 'n', 66, 51);
Marrkk_92 16:21658c9e697c 187 writeLetter(2, ':', 66, 47);
Marrkk_92 16:21658c9e697c 188
Marrkk_92 16:21658c9e697c 189 writeNumber(2, power_in, 66, 13, 5, false);
Marrkk_92 16:21658c9e697c 190 writeLetter(2, 'W', 66, 0);
Marrkk_92 16:21658c9e697c 191
Marrkk_92 16:21658c9e697c 192 writeLetter(2, 'P', 56, 59);
Marrkk_92 16:21658c9e697c 193 writeLetter(2, 'o', 56, 55);
Marrkk_92 16:21658c9e697c 194 writeLetter(2, 'u', 56, 51);
Marrkk_92 16:21658c9e697c 195 writeLetter(2, 't', 56, 47);
Marrkk_92 16:21658c9e697c 196 writeLetter(2, ':', 56, 43);
Marrkk_92 16:21658c9e697c 197
Marrkk_92 16:21658c9e697c 198 writeNumber(2, power_out, 56, 13, 5, false);
Marrkk_92 16:21658c9e697c 199 writeLetter(2, 'W', 56, 0);
Marrkk_92 16:21658c9e697c 200
Marrkk_92 16:21658c9e697c 201 writeLetter(2, 'V', 46, 59);
Marrkk_92 16:21658c9e697c 202 writeLetter(2, 'i', 46, 55);
Marrkk_92 16:21658c9e697c 203 writeLetter(2, 'n', 46, 51);
Marrkk_92 16:21658c9e697c 204 writeLetter(2, ':', 46, 47);
Marrkk_92 16:21658c9e697c 205
Marrkk_92 16:21658c9e697c 206 writeNumber(2, voltage_in, 46, 13, 5, false);
Marrkk_92 16:21658c9e697c 207 writeLetter(2, 'm', 46, 4);
Marrkk_92 16:21658c9e697c 208 writeLetter(2, 'V', 46, 0);
Marrkk_92 16:21658c9e697c 209
Marrkk_92 16:21658c9e697c 210 writeLetter(2, 'T', 36, 59);
Marrkk_92 16:21658c9e697c 211 writeLetter(2, 'm', 36, 55);
Marrkk_92 16:21658c9e697c 212 writeLetter(2, 'o', 36, 51);
Marrkk_92 16:21658c9e697c 213 writeLetter(2, 't', 36, 47);
Marrkk_92 16:21658c9e697c 214 writeLetter(2, ':', 36, 43);
Marrkk_92 16:21658c9e697c 215
Marrkk_92 16:21658c9e697c 216 writeNumber(2, motor_temperature, 36, 13, 3, false);
Marrkk_92 16:21658c9e697c 217 writeLetter(2, '*', 36, 4);
Marrkk_92 16:21658c9e697c 218 writeLetter(2, 'C', 36, 0);
Marrkk_92 16:21658c9e697c 219
Marrkk_92 16:21658c9e697c 220 writeLetter(2, 'T', 26, 59);
Marrkk_92 16:21658c9e697c 221 writeLetter(2, 'b', 26, 55);
Marrkk_92 16:21658c9e697c 222 writeLetter(2, 'a', 26, 51);
Marrkk_92 16:21658c9e697c 223 writeLetter(2, 't', 26, 47);
Marrkk_92 16:21658c9e697c 224 writeLetter(2, ':', 26, 43);
Marrkk_92 16:21658c9e697c 225
Marrkk_92 16:21658c9e697c 226 writeNumber(2, battery_temperature, 26, 13, 3, false);
Marrkk_92 16:21658c9e697c 227 writeLetter(2, '*', 26, 4);
Marrkk_92 16:21658c9e697c 228 writeLetter(2, 'C', 26, 0);
Marrkk_92 16:21658c9e697c 229
Marrkk_92 16:21658c9e697c 230 writeLetter(2, 'N', 16, 59);
Marrkk_92 16:21658c9e697c 231 writeLetter(2, 'm', 16, 55);
Marrkk_92 16:21658c9e697c 232 writeLetter(2, 'o', 16, 51);
Marrkk_92 16:21658c9e697c 233 writeLetter(2, 't', 16, 47);
Marrkk_92 16:21658c9e697c 234 writeLetter(2, ':', 16, 43);
Marrkk_92 16:21658c9e697c 235
Marrkk_92 16:21658c9e697c 236 writeNumber(2, rpm_motor, 16, 13, 4, false);
Marrkk_92 16:21658c9e697c 237 writeLetter(2, 'r', 16, 8);
Marrkk_92 16:21658c9e697c 238 writeLetter(2, 'p', 16, 4);
Marrkk_92 16:21658c9e697c 239 writeLetter(2, 'm', 16, 0);
Marrkk_92 16:21658c9e697c 240 }
Marrkk_92 16:21658c9e697c 241
Marrkk_92 16:21658c9e697c 242 void displayData2(int battery_voltage, int battery_temperature, int motor_temperature, int voltage_in, int power_out, int power_in)
Marrkk_92 16:21658c9e697c 243 {
Marrkk_92 16:21658c9e697c 244 if (battery_voltage < 1) battery_voltage = 0;
Marrkk_92 16:21658c9e697c 245
Marrkk_92 16:21658c9e697c 246 writeLetter(2, 'V', 66, 59);
Marrkk_92 16:21658c9e697c 247 writeLetter(2, 'b', 66, 55);
Marrkk_92 16:21658c9e697c 248 writeLetter(2, 'a', 66, 51);
Marrkk_92 16:21658c9e697c 249 writeLetter(2, 't', 66, 47);
Marrkk_92 16:21658c9e697c 250 writeLetter(2, ':', 66, 43);
Marrkk_92 16:21658c9e697c 251
Marrkk_92 16:21658c9e697c 252 writeNumber(2, battery_voltage, 66, 13, 5, false);
Marrkk_92 16:21658c9e697c 253 writeLetter(2, 'm', 66, 4);
Marrkk_92 16:21658c9e697c 254 writeLetter(2, 'V', 66, 0);
Marrkk_92 16:21658c9e697c 255
Marrkk_92 16:21658c9e697c 256 }
Marrkk_92 16:21658c9e697c 257
Marrkk_92 16:21658c9e697c 258 void checkForErrors(int current_menu, int velocity, int battery_temperature, int motor_temperature, int MAX_TEMP_MOTOR, int MAX_TEMP_BATTERY, int battery_percentage_left, int battery_minutes_left, int BATTERY_LOW_ALERT)
Marrkk_92 16:21658c9e697c 259 {
Marrkk_92 16:21658c9e697c 260 int amount_of_errors = 0;
Marrkk_92 16:21658c9e697c 261
Marrkk_92 16:21658c9e697c 262 //------------------------------CONDITIONS FOR ERRORS----------------------------------------------
Marrkk_92 16:21658c9e697c 263 //errors on LEDs (4x), also display in error overview, last LED end of function
Marrkk_92 16:21658c9e697c 264 if (battery_temperature > MAX_TEMP_BATTERY) battery_temp_alert = true; //battery temperature too high LED
Marrkk_92 16:21658c9e697c 265 else battery_temp_alert = false;
Marrkk_92 16:21658c9e697c 266 if (motor_temperature > MAX_TEMP_MOTOR) motor_temp_alert = true; //motor temperature too high LED
Marrkk_92 16:21658c9e697c 267 else motor_temp_alert = false;
Marrkk_92 16:21658c9e697c 268 if (battery_percentage_left <= BATTERY_LOW_ALERT || battery_minutes_left <= BATTERY_LOW_ALERT) battery_low_alert = true;//battery low LED
Marrkk_92 16:21658c9e697c 269 else battery_low_alert = false;
Marrkk_92 16:21658c9e697c 270 if (velocity > 20) fly_ready_alert = true; //Errors exist LED
Marrkk_92 16:21658c9e697c 271 else fly_ready_alert = false;
Marrkk_92 16:21658c9e697c 272 //------------------------------END CONDITIONS FOR ERRORS-----------------------------------------
Marrkk_92 16:21658c9e697c 273
Marrkk_92 16:21658c9e697c 274 //------------------------------REACTIONS FOR ERRORS----------------------------------------------
Marrkk_92 16:21658c9e697c 275 //set essential LEDs for significant errors
Marrkk_92 16:21658c9e697c 276 if (motor_temp_alert) motor_temp_alert_led = 1;
Marrkk_92 16:21658c9e697c 277 else motor_temp_alert_led = 0;
Marrkk_92 16:21658c9e697c 278 if (battery_temp_alert) battery_temp_alert_led = 1;
Marrkk_92 16:21658c9e697c 279 else battery_temp_alert_led = 0;
Marrkk_92 16:21658c9e697c 280 if (battery_low_alert) battery_low_alert_led = 1;
Marrkk_92 16:21658c9e697c 281 else battery_low_alert_led = 0;
Marrkk_92 16:21658c9e697c 282 if (fly_ready_alert) fly_ready_led = 1;
Marrkk_92 16:21658c9e697c 283 else fly_ready_led = 0;
Marrkk_92 16:21658c9e697c 284 //------------------------------END REACTIONS FOR ERRORS-----------------------------------------
Marrkk_92 16:21658c9e697c 285
Marrkk_92 16:21658c9e697c 286 //count errors for main screen
Marrkk_92 16:21658c9e697c 287 if (current_menu == 0) {
Marrkk_92 16:21658c9e697c 288 if (motor_temp_alert) amount_of_errors++;
Marrkk_92 16:21658c9e697c 289 if (battery_temp_alert) amount_of_errors++;
Marrkk_92 16:21658c9e697c 290 if (battery_low_alert) amount_of_errors++;
Marrkk_92 16:21658c9e697c 291 }
Marrkk_92 17:f8d3d1f0d8d1 292 /*
Marrkk_92 16:21658c9e697c 293 //if in error screen display ALL errors
Marrkk_92 16:21658c9e697c 294 if (current_menu == 1) {
Marrkk_92 16:21658c9e697c 295 writeLetter(2, 'E', 66, 59);
Marrkk_92 16:21658c9e697c 296 writeLetter(2, 'r', 66, 55);
Marrkk_92 16:21658c9e697c 297 writeLetter(2, 'r', 66, 51);
Marrkk_92 16:21658c9e697c 298 writeLetter(2, 'o', 66, 47);
Marrkk_92 16:21658c9e697c 299 writeLetter(2, 'r', 66, 43);
Marrkk_92 16:21658c9e697c 300 writeLetter(2, 's', 66, 39);
Marrkk_92 16:21658c9e697c 301 writeLetter(2, ':', 66, 35);
Marrkk_92 16:21658c9e697c 302
Marrkk_92 16:21658c9e697c 303 if (motor_temp_alert) {
Marrkk_92 16:21658c9e697c 304 writeLetter(2, 'E', 57 - (10*amount_of_errors), 59);
Marrkk_92 16:21658c9e697c 305 writeNumber(2, 1, 57 - (10*amount_of_errors), 55, 1, false);
Marrkk_92 16:21658c9e697c 306 amount_of_errors++;
Marrkk_92 16:21658c9e697c 307 }
Marrkk_92 16:21658c9e697c 308 if (battery_temp_alert) {
Marrkk_92 16:21658c9e697c 309 writeLetter(2, 'E', 57 - (10*amount_of_errors), 59);
Marrkk_92 16:21658c9e697c 310 writeNumber(2, 2, 57 - (10*amount_of_errors), 55, 1, false);
Marrkk_92 16:21658c9e697c 311 amount_of_errors++;
Marrkk_92 16:21658c9e697c 312 }
Marrkk_92 16:21658c9e697c 313 if (battery_low_alert) {
Marrkk_92 16:21658c9e697c 314 writeLetter(2, 'E', 57 - (10*amount_of_errors), 59);
Marrkk_92 16:21658c9e697c 315 writeNumber(2, 3, 57 - (10*amount_of_errors), 55, 1, false);
Marrkk_92 16:21658c9e697c 316 amount_of_errors++;
Marrkk_92 16:21658c9e697c 317 }
Marrkk_92 16:21658c9e697c 318 //if (error_alert) {
Marrkk_92 17:f8d3d1f0d8d1 319 // writeLetter(2, 'E', 57 - (10*amount_of_errors), 59);
Marrkk_92 17:f8d3d1f0d8d1 320 // writeNumber(2, 4, 57 - (10*amount_of_errors), 55, 1, false);
Marrkk_92 17:f8d3d1f0d8d1 321 // amount_of_errors++;
Marrkk_92 17:f8d3d1f0d8d1 322 // }
Marrkk_92 16:21658c9e697c 323
Marrkk_92 16:21658c9e697c 324 for (int j = amount_of_errors; j <= 25; j++) {
Marrkk_92 16:21658c9e697c 325 if (j < 6) {
Marrkk_92 16:21658c9e697c 326 writeLetter(2, ' ', 57 - (10*j), 59);
Marrkk_92 16:21658c9e697c 327 writeLetter(2, ' ', 57 - (10*j), 55);
Marrkk_92 16:21658c9e697c 328 }
Marrkk_92 16:21658c9e697c 329 //else if (j > 5 && j < 11) writeLetter(2, ' ', 64 - (10*(j-5)), 47);
Marrkk_92 17:f8d3d1f0d8d1 330 // else if (j > 10 && j < 16) writeLetter(2, ' ', 64 - (10*(j-10)), 35);
Marrkk_92 17:f8d3d1f0d8d1 331 // else if (j > 15 && j < 21) writeLetter(2, ' ', 64 - (10*(j-15)), 23);
Marrkk_92 17:f8d3d1f0d8d1 332 // else if (j > 20 && j < 26) writeLetter(2, ' ', 64 - (10*(j-20)), 11);
Marrkk_92 16:21658c9e697c 333 }
Marrkk_92 16:21658c9e697c 334
Marrkk_92 16:21658c9e697c 335 if (amount_of_errors < 1) {
Marrkk_92 16:21658c9e697c 336 amount_of_errors = 0;
Marrkk_92 16:21658c9e697c 337 error_alert = false;
Marrkk_92 16:21658c9e697c 338 } else error_alert = true;
Marrkk_92 16:21658c9e697c 339 if (amount_of_errors < 25) writeLetter(2, ' ', 66, 0);
Marrkk_92 16:21658c9e697c 340 else if (amount_of_errors > 25) {
Marrkk_92 16:21658c9e697c 341 amount_of_errors = 25;
Marrkk_92 16:21658c9e697c 342 writeLetter(2, '+', 66, 0);
Marrkk_92 16:21658c9e697c 343 }
Marrkk_92 16:21658c9e697c 344 writeNumber(2, amount_of_errors, 66, 4, 2, false);
Marrkk_92 16:21658c9e697c 345 }
Marrkk_92 16:21658c9e697c 346 if (current_menu == 0 && error_alert) {
Marrkk_92 16:21658c9e697c 347 //draw alert logo if errors
Marrkk_92 16:21658c9e697c 348 drawBitmap(2, 91, 64, 48, 7, 10);
Marrkk_92 16:21658c9e697c 349 } else if (current_menu == 0 && !error_alert) {
Marrkk_92 16:21658c9e697c 350 //clear if no errors
Marrkk_92 16:21658c9e697c 351 drawBitmap(2, 92, 64, 48, 7, 10);
Marrkk_92 17:f8d3d1f0d8d1 352 } */
Marrkk_92 16:21658c9e697c 353 }
Marrkk_92 16:21658c9e697c 354
Marrkk_92 16:21658c9e697c 355 void showBatteryMinutesLeft(int battery_minutes_left)
Marrkk_92 16:21658c9e697c 356 {
Marrkk_92 16:21658c9e697c 357 if (battery_minutes_left < 1) battery_minutes_left = 0;
Marrkk_92 16:21658c9e697c 358 //show minutes left
Marrkk_92 16:21658c9e697c 359 writeNumber(3, battery_minutes_left, 55, 20, 3, true);
Marrkk_92 16:21658c9e697c 360
Marrkk_92 16:21658c9e697c 361 writeLetter(3, 'm', 60, 13);
Marrkk_92 16:21658c9e697c 362 writeLetter(3, 'i', 60, 9);
Marrkk_92 16:21658c9e697c 363 writeLetter(3, 'n', 60, 5);
Marrkk_92 16:21658c9e697c 364 }
Marrkk_92 16:21658c9e697c 365
Marrkk_92 16:21658c9e697c 366 void showBatteryPercentageLeft(int battery_percentage_left)
Marrkk_92 16:21658c9e697c 367 {
Marrkk_92 16:21658c9e697c 368 if (battery_percentage_left > 99) battery_percentage_left = 100;
Marrkk_92 16:21658c9e697c 369 else if (battery_percentage_left < 0) battery_percentage_left = 0;
Marrkk_92 16:21658c9e697c 370
Marrkk_92 16:21658c9e697c 371 //show percentage left
Marrkk_92 16:21658c9e697c 372 writeNumber(3, battery_percentage_left, 85, 20, 3, true);
Marrkk_92 16:21658c9e697c 373
Marrkk_92 16:21658c9e697c 374 //drawBitmap(1, 91, 85, 10, 10, 20);
Marrkk_92 16:21658c9e697c 375 writeLetter(3, '%', 90, 13);
Marrkk_92 16:21658c9e697c 376
Marrkk_92 16:21658c9e697c 377 //show battery logo
Marrkk_92 16:21658c9e697c 378 for (int i = 18; i <= 35; i++) {
Marrkk_92 16:21658c9e697c 379 drawPixel(3, i, 18, 0x0F);
Marrkk_92 16:21658c9e697c 380 }
Marrkk_92 16:21658c9e697c 381 for (int i = 18; i <= 35; i++) {
Marrkk_92 16:21658c9e697c 382 drawPixel(3, i, 45, 0xF0);
Marrkk_92 16:21658c9e697c 383 }
Marrkk_92 16:21658c9e697c 384 for (int i = 18; i <= 45; i++) {
Marrkk_92 16:21658c9e697c 385 drawPixel(3, 18, i, 0xFF);
Marrkk_92 16:21658c9e697c 386 }
Marrkk_92 16:21658c9e697c 387 for (int i = 18; i <= 45; i++) {
Marrkk_92 16:21658c9e697c 388 drawPixel(3, 36, i, 0xFF);
Marrkk_92 16:21658c9e697c 389 }
Marrkk_92 16:21658c9e697c 390 for (int i = 22; i <= 31; i++) {
Marrkk_92 16:21658c9e697c 391 drawPixel(3, i, 16, 0xF0);
Marrkk_92 16:21658c9e697c 392 }
Marrkk_92 16:21658c9e697c 393 drawPixel(3, 22, 17, 0xFF);
Marrkk_92 16:21658c9e697c 394 drawPixel(3, 31, 17, 0xFF);
Marrkk_92 16:21658c9e697c 395
Marrkk_92 16:21658c9e697c 396 //drawBitmap(1, 75, 15, 20, 30, 24);
Marrkk_92 16:21658c9e697c 397 updateBatteryBar(3, battery_percentage_left, 20, 18, 26, 15);
Marrkk_92 16:21658c9e697c 398 }
Marrkk_92 16:21658c9e697c 399
Marrkk_92 16:21658c9e697c 400 void showRaceMinutesDone(int race_minutes_done)
Marrkk_92 16:21658c9e697c 401 {
Marrkk_92 16:21658c9e697c 402 if (race_minutes_done < 1) race_minutes_done = 0;
Marrkk_92 16:21658c9e697c 403 //show minutes left
Marrkk_92 16:21658c9e697c 404 writeNumber(1, race_minutes_done, 85, 20, 3, true);
Marrkk_92 16:21658c9e697c 405
Marrkk_92 16:21658c9e697c 406 writeLetter(1, 'm', 90, 13);
Marrkk_92 16:21658c9e697c 407 writeLetter(1, 'i', 90, 9);
Marrkk_92 16:21658c9e697c 408 writeLetter(1, 'n', 90, 5);
Marrkk_92 16:21658c9e697c 409 }
Marrkk_92 16:21658c9e697c 410
Marrkk_92 16:21658c9e697c 411 void showRaceMinutesLeft(int race_minutes_left)
Marrkk_92 16:21658c9e697c 412 {
Marrkk_92 16:21658c9e697c 413 if (race_minutes_left < 1) race_minutes_left = 0;
Marrkk_92 16:21658c9e697c 414 //show minutes left
Marrkk_92 16:21658c9e697c 415 writeNumber(1, race_minutes_left, 25, 20, 3, true);
Marrkk_92 16:21658c9e697c 416
Marrkk_92 16:21658c9e697c 417 writeLetter(1, 'm', 30, 13);
Marrkk_92 16:21658c9e697c 418 writeLetter(1, 'i', 30, 9);
Marrkk_92 16:21658c9e697c 419 writeLetter(1, 'n', 30, 5);
Marrkk_92 16:21658c9e697c 420 }
Marrkk_92 16:21658c9e697c 421
Marrkk_92 16:21658c9e697c 422 void showRacePercentageLeft(int race_percentage_left)
Marrkk_92 16:21658c9e697c 423 {
Marrkk_92 16:21658c9e697c 424 if (race_percentage_left > 99) race_percentage_left = 100;
Marrkk_92 16:21658c9e697c 425 else if (race_percentage_left < 0) race_percentage_left = 0;
Marrkk_92 16:21658c9e697c 426
Marrkk_92 16:21658c9e697c 427 //show percentage left
Marrkk_92 16:21658c9e697c 428 writeNumber(1, race_percentage_left, 55, 20, 3, true);
Marrkk_92 16:21658c9e697c 429 writeLetter(1, '%', 60, 13);
Marrkk_92 16:21658c9e697c 430 }
Marrkk_92 16:21658c9e697c 431
Marrkk_92 16:21658c9e697c 432 void checkTransmitter(bool transmitting)
Marrkk_92 16:21658c9e697c 433 {
Marrkk_92 16:21658c9e697c 434 if (time(0) % 2 == 0) transmitting = !transmitting;
Marrkk_92 16:21658c9e697c 435 if (transmitting) {
Marrkk_92 16:21658c9e697c 436 writeLetter(2, 'T', 65, 12);
Marrkk_92 16:21658c9e697c 437 writeLetter(2, 'x', 65, 8);
Marrkk_92 16:21658c9e697c 438 } else {
Marrkk_92 16:21658c9e697c 439 writeLetter(2, ' ', 65, 12);
Marrkk_92 16:21658c9e697c 440 writeLetter(2, ' ', 65, 8);
Marrkk_92 16:21658c9e697c 441 }
Marrkk_92 16:21658c9e697c 442 }
Marrkk_92 16:21658c9e697c 443
Marrkk_92 16:21658c9e697c 444 void displayTime()
Marrkk_92 16:21658c9e697c 445 {
Marrkk_92 16:21658c9e697c 446 //int seconds = (int) (time(NULL) % 60);
Marrkk_92 16:21658c9e697c 447 int minutes = (int) ((time(NULL) / 60) % 60);
Marrkk_92 16:21658c9e697c 448 int hours = (int) ((time(NULL) / (60*60)) % 24);
Marrkk_92 16:21658c9e697c 449
Marrkk_92 16:21658c9e697c 450 drawBitmap(2, hours / 10 % 10, 65, 39, 4, 7);
Marrkk_92 16:21658c9e697c 451 drawBitmap(2, hours % 10, 65, 35, 4, 7);
Marrkk_92 16:21658c9e697c 452 writeLetter(2, ':', 65, 31);
Marrkk_92 16:21658c9e697c 453 drawBitmap(2, minutes / 10 % 10, 65, 27, 4, 7);
Marrkk_92 16:21658c9e697c 454 drawBitmap(2, minutes % 10, 65, 23, 4, 7);
Marrkk_92 16:21658c9e697c 455 }
Marrkk_92 16:21658c9e697c 456
Marrkk_92 16:21658c9e697c 457 void displayAdvisedThrottle(int advised_throttle_power)
Marrkk_92 16:21658c9e697c 458 {
Marrkk_92 17:f8d3d1f0d8d1 459 // writeNumber(2, advised_throttle_power, 41, 31, 4, false);
Marrkk_92 17:f8d3d1f0d8d1 460 // writeLetter(2, 'r', 41, 21);
Marrkk_92 17:f8d3d1f0d8d1 461 // writeLetter(2, 'p', 41, 17);
Marrkk_92 17:f8d3d1f0d8d1 462 // writeLetter(2, 'm', 41, 13);
Marrkk_92 16:21658c9e697c 463 }
Marrkk_92 16:21658c9e697c 464
Marrkk_92 16:21658c9e697c 465 void displayThrottle(int throttle_power, bool reverse)
Marrkk_92 16:21658c9e697c 466 {
Marrkk_92 17:f8d3d1f0d8d1 467 writeNumber(2, throttle_power, 45, 31, 4, false);
Marrkk_92 17:f8d3d1f0d8d1 468 writeLetter(2, 'r', 45, 21);
Marrkk_92 17:f8d3d1f0d8d1 469 writeLetter(2, 'p', 45, 17);
Marrkk_92 17:f8d3d1f0d8d1 470 writeLetter(2, 'm', 45, 13);
Marrkk_92 16:21658c9e697c 471
Marrkk_92 16:21658c9e697c 472 if (reverse) {
Marrkk_92 16:21658c9e697c 473 writeLetter(2, 'R', 15, 31);
Marrkk_92 16:21658c9e697c 474 //blink box around R
Marrkk_92 16:21658c9e697c 475 if (time(0) % 2 == 0) {
Marrkk_92 16:21658c9e697c 476 for (int i = 12; i < 25; i++) {
Marrkk_92 16:21658c9e697c 477 drawPixel(2, i, 30, 0xF0);
Marrkk_92 16:21658c9e697c 478 }
Marrkk_92 16:21658c9e697c 479 for (int i = 12; i < 25; i++) {
Marrkk_92 16:21658c9e697c 480 drawPixel(2, i, 35, 0xF0);
Marrkk_92 16:21658c9e697c 481 }
Marrkk_92 16:21658c9e697c 482 for (int i = 31; i <= 35; i++) {
Marrkk_92 16:21658c9e697c 483 drawPixel(2, 12, i, 0xFF);
Marrkk_92 16:21658c9e697c 484 }
Marrkk_92 16:21658c9e697c 485 for (int i = 31; i <= 35; i++) {
Marrkk_92 16:21658c9e697c 486 drawPixel(2, 24, i, 0xFF);
Marrkk_92 16:21658c9e697c 487 }
Marrkk_92 16:21658c9e697c 488 } else {
Marrkk_92 16:21658c9e697c 489 for (int i = 12; i < 25; i++) {
Marrkk_92 16:21658c9e697c 490 drawPixel(2, i, 30, 0x00);
Marrkk_92 16:21658c9e697c 491 }
Marrkk_92 16:21658c9e697c 492 for (int i = 12; i < 25; i++) {
Marrkk_92 16:21658c9e697c 493 drawPixel(2, i, 35, 0x00);
Marrkk_92 16:21658c9e697c 494 }
Marrkk_92 16:21658c9e697c 495 for (int i = 31; i <= 35; i++) {
Marrkk_92 16:21658c9e697c 496 drawPixel(2, 12, i, 0x00);
Marrkk_92 16:21658c9e697c 497 }
Marrkk_92 16:21658c9e697c 498 for (int i = 31; i <= 35; i++) {
Marrkk_92 16:21658c9e697c 499 drawPixel(2, 24, i, 0x00);
Marrkk_92 16:21658c9e697c 500 }
Marrkk_92 16:21658c9e697c 501 }
Marrkk_92 16:21658c9e697c 502 }
Marrkk_92 16:21658c9e697c 503
Marrkk_92 16:21658c9e697c 504 else {
Marrkk_92 16:21658c9e697c 505 for (int i = 12; i < 25; i++) {
Marrkk_92 16:21658c9e697c 506 drawPixel(2, i, 30, 0xF0);
Marrkk_92 16:21658c9e697c 507 }
Marrkk_92 16:21658c9e697c 508 for (int i = 12; i < 25; i++) {
Marrkk_92 16:21658c9e697c 509 drawPixel(2, i, 35, 0xF0);
Marrkk_92 16:21658c9e697c 510 }
Marrkk_92 16:21658c9e697c 511 for (int i = 31; i <= 35; i++) {
Marrkk_92 16:21658c9e697c 512 drawPixel(2, 12, i, 0xFF);
Marrkk_92 16:21658c9e697c 513 }
Marrkk_92 16:21658c9e697c 514 for (int i = 31; i <= 35; i++) {
Marrkk_92 16:21658c9e697c 515 drawPixel(2, 24, i, 0xFF);
Marrkk_92 16:21658c9e697c 516 }
Marrkk_92 16:21658c9e697c 517 writeLetter(2, 'D', 15, 31);
Marrkk_92 16:21658c9e697c 518 }
Marrkk_92 16:21658c9e697c 519 }
Marrkk_92 16:21658c9e697c 520 void displayVelocity(int velocity)
Marrkk_92 16:21658c9e697c 521 {
Marrkk_92 16:21658c9e697c 522 if (velocity < 1) velocity = 0;
Marrkk_92 16:21658c9e697c 523
Marrkk_92 17:f8d3d1f0d8d1 524 writeNumber(2, velocity, 35, 31, 3, false);
Marrkk_92 17:f8d3d1f0d8d1 525 writeLetter(2, 'k', 35, 21);
Marrkk_92 17:f8d3d1f0d8d1 526 writeLetter(2, 'm', 35, 17);
Marrkk_92 17:f8d3d1f0d8d1 527 writeLetter(2, '/', 35, 13);
Marrkk_92 17:f8d3d1f0d8d1 528 writeLetter(2, 'h', 35, 9);
Marrkk_92 16:21658c9e697c 529 }
Marrkk_92 16:21658c9e697c 530
Marrkk_92 16:21658c9e697c 531 void writeLetter(int screen_number, char input, int row, int col)
Marrkk_92 16:21658c9e697c 532 {
Marrkk_92 16:21658c9e697c 533 int index_ = 63;
Marrkk_92 16:21658c9e697c 534 if (input == 'a') index_ = 10;
Marrkk_92 16:21658c9e697c 535 if (input == 'b') index_ = 11;
Marrkk_92 16:21658c9e697c 536 if (input == 'c') index_ = 12;
Marrkk_92 16:21658c9e697c 537 if (input == 'd') index_ = 13;
Marrkk_92 16:21658c9e697c 538 if (input == 'e') index_ = 14;
Marrkk_92 16:21658c9e697c 539 if (input == 'f') index_ = 15;
Marrkk_92 16:21658c9e697c 540 if (input == 'g') index_ = 16;
Marrkk_92 16:21658c9e697c 541 if (input == 'h') index_ = 17;
Marrkk_92 16:21658c9e697c 542 if (input == 'i') index_ = 18;
Marrkk_92 16:21658c9e697c 543 if (input == 'j') index_ = 19;
Marrkk_92 16:21658c9e697c 544 if (input == 'k') index_ = 20;
Marrkk_92 16:21658c9e697c 545 if (input == 'l') index_ = 21;
Marrkk_92 16:21658c9e697c 546 if (input == 'm') index_ = 22;
Marrkk_92 16:21658c9e697c 547 if (input == 'n') index_ = 23;
Marrkk_92 16:21658c9e697c 548 if (input == 'o') index_ = 24;
Marrkk_92 16:21658c9e697c 549 if (input == 'p') index_ = 25;
Marrkk_92 16:21658c9e697c 550 if (input == 'q') index_ = 26;
Marrkk_92 16:21658c9e697c 551 if (input == 'r') index_ = 27;
Marrkk_92 16:21658c9e697c 552 if (input == 's') index_ = 28;
Marrkk_92 16:21658c9e697c 553 if (input == 't') index_ = 29;
Marrkk_92 16:21658c9e697c 554 if (input == 'u') index_ = 30;
Marrkk_92 16:21658c9e697c 555 if (input == 'v') index_ = 31;
Marrkk_92 16:21658c9e697c 556 if (input == 'w') index_ = 32;
Marrkk_92 16:21658c9e697c 557 if (input == 'x') index_ = 33;
Marrkk_92 16:21658c9e697c 558 if (input == 'y') index_ = 34;
Marrkk_92 16:21658c9e697c 559 if (input == 'z') index_ = 35;
Marrkk_92 16:21658c9e697c 560 if (input == 'A') index_ = 36;
Marrkk_92 16:21658c9e697c 561 if (input == 'B') index_ = 37;
Marrkk_92 16:21658c9e697c 562 if (input == 'C') index_ = 38;
Marrkk_92 16:21658c9e697c 563 if (input == 'D') index_ = 39;
Marrkk_92 16:21658c9e697c 564 if (input == 'E') index_ = 40;
Marrkk_92 16:21658c9e697c 565 if (input == 'F') index_ = 41;
Marrkk_92 16:21658c9e697c 566 if (input == 'G') index_ = 42;
Marrkk_92 16:21658c9e697c 567 if (input == 'H') index_ = 43;
Marrkk_92 16:21658c9e697c 568 if (input == 'I') index_ = 44;
Marrkk_92 16:21658c9e697c 569 if (input == 'J') index_ = 45;
Marrkk_92 16:21658c9e697c 570 if (input == 'K') index_ = 46;
Marrkk_92 16:21658c9e697c 571 if (input == 'L') index_ = 47;
Marrkk_92 16:21658c9e697c 572 if (input == 'M') index_ = 48;
Marrkk_92 16:21658c9e697c 573 if (input == 'N') index_ = 49;
Marrkk_92 16:21658c9e697c 574 if (input == 'O') index_ = 50;
Marrkk_92 16:21658c9e697c 575 if (input == 'P') index_ = 51;
Marrkk_92 16:21658c9e697c 576 if (input == 'Q') index_ = 52;
Marrkk_92 16:21658c9e697c 577 if (input == 'R') index_ = 53;
Marrkk_92 16:21658c9e697c 578 if (input == 'S') index_ = 54;
Marrkk_92 16:21658c9e697c 579 if (input == 'T') index_ = 55;
Marrkk_92 16:21658c9e697c 580 if (input == 'U') index_ = 56;
Marrkk_92 16:21658c9e697c 581 if (input == 'V') index_ = 57;
Marrkk_92 16:21658c9e697c 582 if (input == 'W') index_ = 58;
Marrkk_92 16:21658c9e697c 583 if (input == 'X') index_ = 59;
Marrkk_92 16:21658c9e697c 584 if (input == 'Y') index_ = 60;
Marrkk_92 16:21658c9e697c 585 if (input == 'Z') index_ = 61;
Marrkk_92 16:21658c9e697c 586 if (input == ';') index_ = 62;
Marrkk_92 16:21658c9e697c 587 if (input == '-') index_ = 63;
Marrkk_92 16:21658c9e697c 588 if (input == ':') index_ = 64;
Marrkk_92 16:21658c9e697c 589 if (input == '+') index_ = 65;
Marrkk_92 16:21658c9e697c 590 if (input == '/') index_ = 66;
Marrkk_92 16:21658c9e697c 591 if (input == '%') index_ = 67;
Marrkk_92 16:21658c9e697c 592 if (input == '?') index_ = 68;
Marrkk_92 16:21658c9e697c 593 if (input == ',') index_ = 69;
Marrkk_92 16:21658c9e697c 594 if (input == '(') index_ = 70;
Marrkk_92 16:21658c9e697c 595 if (input == ')') index_ = 71;
Marrkk_92 16:21658c9e697c 596 if (input == '.') index_ = 72;
Marrkk_92 16:21658c9e697c 597 if (input == ' ') index_ = 73;
Marrkk_92 16:21658c9e697c 598 //logos
Marrkk_92 16:21658c9e697c 599 if (input == '*') index_ = 76;
Marrkk_92 16:21658c9e697c 600
Marrkk_92 16:21658c9e697c 601 drawBitmap(screen_number, index_, row, col, 4, 7);
Marrkk_92 16:21658c9e697c 602 }
Marrkk_92 16:21658c9e697c 603
Marrkk_92 16:21658c9e697c 604 void writeNumber(int screen_number, int input_number, char row, char col, int digits, bool large)
Marrkk_92 16:21658c9e697c 605 {
Marrkk_92 16:21658c9e697c 606 unsigned int number_of_digits = 0;
Marrkk_92 16:21658c9e697c 607 int counter = input_number;
Marrkk_92 16:21658c9e697c 608
Marrkk_92 16:21658c9e697c 609 do {
Marrkk_92 16:21658c9e697c 610 ++number_of_digits;
Marrkk_92 16:21658c9e697c 611 counter /= 10;
Marrkk_92 16:21658c9e697c 612 } while (counter);
Marrkk_92 16:21658c9e697c 613
Marrkk_92 16:21658c9e697c 614 for (int i = 0; i < number_of_digits; i++) {
Marrkk_92 16:21658c9e697c 615 int result = (int) pow((double) 10,i);
Marrkk_92 16:21658c9e697c 616 if (large) drawBitmap(screen_number, 80 + (input_number / (result) % 10), row, col + (11*i), 10, 20);
Marrkk_92 16:21658c9e697c 617 else drawBitmap(screen_number, input_number / (result) % 10, row, col + (4*i), 4, 7);
Marrkk_92 16:21658c9e697c 618 }
Marrkk_92 16:21658c9e697c 619 for (int i = number_of_digits; i < digits; i++) {
Marrkk_92 16:21658c9e697c 620 if (large) drawBitmap(screen_number, 90, row, col + (11*i), 10, 20);
Marrkk_92 16:21658c9e697c 621 else writeLetter(screen_number, ' ', row, col + (4*i));
Marrkk_92 16:21658c9e697c 622 }
Marrkk_92 16:21658c9e697c 623 }
Marrkk_92 16:21658c9e697c 624
Marrkk_92 16:21658c9e697c 625 void drawPixel(int screen_number, uint8_t row, uint8_t col, uint8_t brightness)
Marrkk_92 16:21658c9e697c 626 {
Marrkk_92 16:21658c9e697c 627 command(screen_number, 0x15);
Marrkk_92 16:21658c9e697c 628 command(screen_number, col);
Marrkk_92 16:21658c9e697c 629 command(screen_number, col);
Marrkk_92 16:21658c9e697c 630
Marrkk_92 16:21658c9e697c 631 command(screen_number, 0x75);
Marrkk_92 16:21658c9e697c 632 command(screen_number, row);
Marrkk_92 16:21658c9e697c 633 command(screen_number, row);
Marrkk_92 16:21658c9e697c 634
Marrkk_92 16:21658c9e697c 635 data(screen_number, brightness);
Marrkk_92 16:21658c9e697c 636 }
Marrkk_92 16:21658c9e697c 637
Marrkk_92 16:21658c9e697c 638 void clearDisplay(int screen_number)
Marrkk_92 16:21658c9e697c 639 {
Marrkk_92 16:21658c9e697c 640 command(screen_number, 0x15);
Marrkk_92 16:21658c9e697c 641 command(screen_number, 0x00);
Marrkk_92 16:21658c9e697c 642 command(screen_number, 0xFF);
Marrkk_92 16:21658c9e697c 643
Marrkk_92 16:21658c9e697c 644 command(screen_number, 0x75);
Marrkk_92 16:21658c9e697c 645 command(screen_number, 0x00);
Marrkk_92 16:21658c9e697c 646 command(screen_number, 0xFF);
Marrkk_92 16:21658c9e697c 647
Marrkk_92 16:21658c9e697c 648 if (screen_number == 2) {
Marrkk_92 16:21658c9e697c 649 for (int i = 0; i < (128*64); i++) {
Marrkk_92 16:21658c9e697c 650 data(screen_number, 0x00);
Marrkk_92 16:21658c9e697c 651 }
Marrkk_92 16:21658c9e697c 652 } else {
Marrkk_92 16:21658c9e697c 653 for (int i = 0; i < (128*128); i++) {
Marrkk_92 16:21658c9e697c 654 data(screen_number, 0x00);
Marrkk_92 16:21658c9e697c 655 }
Marrkk_92 16:21658c9e697c 656 }
Marrkk_92 16:21658c9e697c 657 }
Marrkk_92 16:21658c9e697c 658
Marrkk_92 16:21658c9e697c 659 void updateProgressCircle(int screen_number, int percentage)
Marrkk_92 16:21658c9e697c 660 {
Marrkk_92 16:21658c9e697c 661 //circular battery percentage bar
Marrkk_92 16:21658c9e697c 662 int radius = 31;
Marrkk_92 16:21658c9e697c 663 for (double theta = 0; theta <= 0.01*percentage*2*PI; theta += 0.01) {
Marrkk_92 16:21658c9e697c 664 drawPixel(screen_number, (64+2*radius*(cos(theta))), (32+radius*(sin(theta))), 0xFF);
Marrkk_92 16:21658c9e697c 665 }
Marrkk_92 16:21658c9e697c 666 for (double theta = 0.01*percentage*2*PI; theta <= 2*PI ; theta += 0.01) {
Marrkk_92 16:21658c9e697c 667 drawPixel(screen_number, (64+2*radius*(cos(theta))), (32+radius*(sin(theta))), 0x00);
Marrkk_92 16:21658c9e697c 668 }
Marrkk_92 16:21658c9e697c 669 }
Marrkk_92 16:21658c9e697c 670
Marrkk_92 16:21658c9e697c 671 void updatePowerBars(int power_out, int power_in, int MAX_POWER_OUT, int MAX_POWER_IN)
Marrkk_92 16:21658c9e697c 672 {
Marrkk_92 16:21658c9e697c 673 if (power_in < 1) power_in = 0;
Marrkk_92 16:21658c9e697c 674 else if (power_in > MAX_POWER_IN) power_in = MAX_POWER_IN;
Marrkk_92 16:21658c9e697c 675 if (power_out < 1) power_out = 0;
Marrkk_92 16:21658c9e697c 676 else if (power_out > MAX_POWER_OUT) power_out = MAX_POWER_OUT;
Marrkk_92 16:21658c9e697c 677
Marrkk_92 16:21658c9e697c 678 //draw Powerbars
Marrkk_92 16:21658c9e697c 679 for (int i = 12; i < 74; i++) {
Marrkk_92 16:21658c9e697c 680 drawPixel(2, i, 0, 0x0F);
Marrkk_92 16:21658c9e697c 681 }
Marrkk_92 16:21658c9e697c 682 for (int i = 12; i < 74; i++) {
Marrkk_92 16:21658c9e697c 683 drawPixel(2, i, 4, 0xF0);
Marrkk_92 16:21658c9e697c 684 }
Marrkk_92 16:21658c9e697c 685 for (int i = 0; i <= 4; i++) {
Marrkk_92 16:21658c9e697c 686 drawPixel(2, 12, i, 0xFF);
Marrkk_92 16:21658c9e697c 687 }
Marrkk_92 16:21658c9e697c 688 for (int i = 0; i <= 4; i++) {
Marrkk_92 16:21658c9e697c 689 drawPixel(2, 73, i, 0xFF);
Marrkk_92 16:21658c9e697c 690 }
Marrkk_92 16:21658c9e697c 691 for (int i = 12; i < 74; i++) {
Marrkk_92 16:21658c9e697c 692 drawPixel(2, i, 59, 0x0F);
Marrkk_92 16:21658c9e697c 693 }
Marrkk_92 16:21658c9e697c 694 for (int i = 12; i < 74; i++) {
Marrkk_92 16:21658c9e697c 695 drawPixel(2, i, 63, 0xF0);
Marrkk_92 16:21658c9e697c 696 }
Marrkk_92 16:21658c9e697c 697 for (int i = 59; i <= 63; i++) {
Marrkk_92 16:21658c9e697c 698 drawPixel(2, 12, i, 0xFF);
Marrkk_92 16:21658c9e697c 699 }
Marrkk_92 16:21658c9e697c 700 for (int i = 59; i <= 63; i++) {
Marrkk_92 16:21658c9e697c 701 drawPixel(2, 73, i, 0xFF);
Marrkk_92 16:21658c9e697c 702 }
Marrkk_92 16:21658c9e697c 703
Marrkk_92 16:21658c9e697c 704 // writeLetter(2 , 'P', 12, 55);
Marrkk_92 16:21658c9e697c 705 // writeLetter(2 , 'i', 12, 51);
Marrkk_92 16:21658c9e697c 706 // writeLetter(2 , 'n', 12, 47);
Marrkk_92 16:21658c9e697c 707 //
Marrkk_92 16:21658c9e697c 708 // writeLetter(2 , 'P', 12, 17);
Marrkk_92 16:21658c9e697c 709 // writeLetter(2 , 'o', 12, 13);
Marrkk_92 16:21658c9e697c 710 // writeLetter(2 , 'u', 12, 9);
Marrkk_92 16:21658c9e697c 711 // writeLetter(2 , 't', 12, 5);
Marrkk_92 16:21658c9e697c 712
Marrkk_92 16:21658c9e697c 713 writeLetter(2 , 'I', 12, 55);
Marrkk_92 16:21658c9e697c 714 writeLetter(2 , 'n', 12, 51);
Marrkk_92 16:21658c9e697c 715
Marrkk_92 16:21658c9e697c 716 writeLetter(2 , 'O', 12, 13);
Marrkk_92 16:21658c9e697c 717 writeLetter(2 , 'u', 12, 9);
Marrkk_92 16:21658c9e697c 718 writeLetter(2 , 't', 12, 5);
Marrkk_92 16:21658c9e697c 719
Marrkk_92 16:21658c9e697c 720 //left hand side
Marrkk_92 16:21658c9e697c 721 for (int i = 0; i < (58*power_in/MAX_POWER_IN); i++) {
Marrkk_92 16:21658c9e697c 722 for (int j = 0; j < 3; j++) {
Marrkk_92 16:21658c9e697c 723 drawPixel(2, 14 + i, 60 + j, 0xFF);
Marrkk_92 16:21658c9e697c 724 }
Marrkk_92 16:21658c9e697c 725 }
Marrkk_92 16:21658c9e697c 726 for (int i = (58*power_in/MAX_POWER_IN); i <= 58; i++) {
Marrkk_92 16:21658c9e697c 727 for (int j = 0; j < 3; j++) {
Marrkk_92 16:21658c9e697c 728 drawPixel(2, 14 + i, 60 + j, 0x00);
Marrkk_92 16:21658c9e697c 729 }
Marrkk_92 16:21658c9e697c 730 }
Marrkk_92 16:21658c9e697c 731 //right hand side
Marrkk_92 16:21658c9e697c 732 for (int i = 0; i < (58*power_out/MAX_POWER_OUT); i++) {
Marrkk_92 16:21658c9e697c 733 for (int j = 0; j < 3; j++) {
Marrkk_92 16:21658c9e697c 734 drawPixel(2, 14 + i, 1 + j, 0xFF);
Marrkk_92 16:21658c9e697c 735 }
Marrkk_92 16:21658c9e697c 736 }
Marrkk_92 16:21658c9e697c 737 for (int i = (58*power_out/MAX_POWER_OUT); i <= 58; i++) {
Marrkk_92 16:21658c9e697c 738 for (int j = 0; j < 3; j++) {
Marrkk_92 16:21658c9e697c 739 drawPixel(2, 14 + i, 1 + j, 0x00);
Marrkk_92 16:21658c9e697c 740 }
Marrkk_92 16:21658c9e697c 741 }
Marrkk_92 16:21658c9e697c 742 }
Marrkk_92 16:21658c9e697c 743
Marrkk_92 16:21658c9e697c 744 void updateBatteryBar(int screen_number, int percentage, int row, int col, int width, int height)
Marrkk_92 16:21658c9e697c 745 {
Marrkk_92 16:21658c9e697c 746 for (int i = 0; i < (percentage*width/100); i++) {
Marrkk_92 16:21658c9e697c 747 for (int j = 0; j < height; j++) {
Marrkk_92 16:21658c9e697c 748 drawPixel(screen_number, row + j, width + col - i, 0xFF);
Marrkk_92 16:21658c9e697c 749 }
Marrkk_92 16:21658c9e697c 750 }
Marrkk_92 16:21658c9e697c 751 for (int i = (percentage*width/100); i < width; i++) {
Marrkk_92 16:21658c9e697c 752 for (int j = 0; j < height; j++) {
Marrkk_92 16:21658c9e697c 753 drawPixel(screen_number, row + j, width + col - i, 0x00);
Marrkk_92 16:21658c9e697c 754 }
Marrkk_92 16:21658c9e697c 755 }
Marrkk_92 16:21658c9e697c 756 }
Marrkk_92 16:21658c9e697c 757
Marrkk_92 16:21658c9e697c 758 void drawBitmap(int screen_number, int index_number, char row, char col, int width, int height)
Marrkk_92 16:21658c9e697c 759 {
Marrkk_92 16:21658c9e697c 760 command(screen_number, 0x15);
Marrkk_92 16:21658c9e697c 761 command(screen_number, col);
Marrkk_92 16:21658c9e697c 762 command(screen_number, (col + (width-1)));
Marrkk_92 16:21658c9e697c 763
Marrkk_92 16:21658c9e697c 764 command(screen_number, 0x75);
Marrkk_92 16:21658c9e697c 765 command(screen_number, row);
Marrkk_92 16:21658c9e697c 766 command(screen_number, (row + (height-1)));
Marrkk_92 16:21658c9e697c 767
Marrkk_92 16:21658c9e697c 768 for(int i = (width*height-1); i >= 0; i--) {
Marrkk_92 16:21658c9e697c 769
Marrkk_92 16:21658c9e697c 770 switch (index_number) {
Marrkk_92 16:21658c9e697c 771
Marrkk_92 16:21658c9e697c 772 case 0:
Marrkk_92 16:21658c9e697c 773 data(screen_number, number_0_small[i]);
Marrkk_92 16:21658c9e697c 774 break;
Marrkk_92 16:21658c9e697c 775 case 1:
Marrkk_92 16:21658c9e697c 776 data(screen_number, number_1_small[i]);
Marrkk_92 16:21658c9e697c 777 break;
Marrkk_92 16:21658c9e697c 778 case 2:
Marrkk_92 16:21658c9e697c 779 data(screen_number, number_2_small[i]);
Marrkk_92 16:21658c9e697c 780 break;
Marrkk_92 16:21658c9e697c 781 case 3:
Marrkk_92 16:21658c9e697c 782 data(screen_number, number_3_small[i]);
Marrkk_92 16:21658c9e697c 783 break;
Marrkk_92 16:21658c9e697c 784 case 4:
Marrkk_92 16:21658c9e697c 785 data(screen_number, number_4_small[i]);
Marrkk_92 16:21658c9e697c 786 break;
Marrkk_92 16:21658c9e697c 787 case 5:
Marrkk_92 16:21658c9e697c 788 data(screen_number, number_5_small[i]);
Marrkk_92 16:21658c9e697c 789 break;
Marrkk_92 16:21658c9e697c 790 case 6:
Marrkk_92 16:21658c9e697c 791 data(screen_number, number_6_small[i]);
Marrkk_92 16:21658c9e697c 792 break;
Marrkk_92 16:21658c9e697c 793 case 7:
Marrkk_92 16:21658c9e697c 794 data(screen_number, number_7_small[i]);
Marrkk_92 16:21658c9e697c 795 break;
Marrkk_92 16:21658c9e697c 796 case 8:
Marrkk_92 16:21658c9e697c 797 data(screen_number, number_8_small[i]);
Marrkk_92 16:21658c9e697c 798 break;
Marrkk_92 16:21658c9e697c 799 case 9:
Marrkk_92 16:21658c9e697c 800 data(screen_number, number_9_small[i]);
Marrkk_92 16:21658c9e697c 801 break;
Marrkk_92 16:21658c9e697c 802 case 10:
Marrkk_92 16:21658c9e697c 803 data(screen_number, letter_a_small[i]);
Marrkk_92 16:21658c9e697c 804 break;
Marrkk_92 16:21658c9e697c 805 case 11:
Marrkk_92 16:21658c9e697c 806 data(screen_number, letter_b_small[i]);
Marrkk_92 16:21658c9e697c 807 break;
Marrkk_92 16:21658c9e697c 808 case 12:
Marrkk_92 16:21658c9e697c 809 data(screen_number, letter_c_small[i]);
Marrkk_92 16:21658c9e697c 810 break;
Marrkk_92 16:21658c9e697c 811 case 13:
Marrkk_92 16:21658c9e697c 812 data(screen_number, letter_d_small[i]);
Marrkk_92 16:21658c9e697c 813 break;
Marrkk_92 16:21658c9e697c 814 case 14:
Marrkk_92 16:21658c9e697c 815 data(screen_number, letter_e_small[i]);
Marrkk_92 16:21658c9e697c 816 break;
Marrkk_92 16:21658c9e697c 817 case 15:
Marrkk_92 16:21658c9e697c 818 data(screen_number, letter_f_small[i]);
Marrkk_92 16:21658c9e697c 819 break;
Marrkk_92 16:21658c9e697c 820 case 16:
Marrkk_92 16:21658c9e697c 821 data(screen_number, letter_g_small[i]);
Marrkk_92 16:21658c9e697c 822 break;
Marrkk_92 16:21658c9e697c 823 case 17:
Marrkk_92 16:21658c9e697c 824 data(screen_number, letter_h_small[i]);
Marrkk_92 16:21658c9e697c 825 break;
Marrkk_92 16:21658c9e697c 826 case 18:
Marrkk_92 16:21658c9e697c 827 data(screen_number, letter_i_small[i]);
Marrkk_92 16:21658c9e697c 828 break;
Marrkk_92 16:21658c9e697c 829 case 19:
Marrkk_92 16:21658c9e697c 830 data(screen_number, letter_j_small[i]);
Marrkk_92 16:21658c9e697c 831 break;
Marrkk_92 16:21658c9e697c 832 case 20:
Marrkk_92 16:21658c9e697c 833 data(screen_number, letter_k_small[i]);
Marrkk_92 16:21658c9e697c 834 break;
Marrkk_92 16:21658c9e697c 835 case 21:
Marrkk_92 16:21658c9e697c 836 data(screen_number, letter_l_small[i]);
Marrkk_92 16:21658c9e697c 837 break;
Marrkk_92 16:21658c9e697c 838 case 22:
Marrkk_92 16:21658c9e697c 839 data(screen_number, letter_m_small[i]);
Marrkk_92 16:21658c9e697c 840 break;
Marrkk_92 16:21658c9e697c 841 case 23:
Marrkk_92 16:21658c9e697c 842 data(screen_number, letter_n_small[i]);
Marrkk_92 16:21658c9e697c 843 break;
Marrkk_92 16:21658c9e697c 844 case 24:
Marrkk_92 16:21658c9e697c 845 data(screen_number, letter_o_small[i]);
Marrkk_92 16:21658c9e697c 846 break;
Marrkk_92 16:21658c9e697c 847 case 25:
Marrkk_92 16:21658c9e697c 848 data(screen_number, letter_p_small[i]);
Marrkk_92 16:21658c9e697c 849 break;
Marrkk_92 16:21658c9e697c 850 case 26:
Marrkk_92 16:21658c9e697c 851 data(screen_number, letter_q_small[i]);
Marrkk_92 16:21658c9e697c 852 break;
Marrkk_92 16:21658c9e697c 853 case 27:
Marrkk_92 16:21658c9e697c 854 data(screen_number, letter_r_small[i]);
Marrkk_92 16:21658c9e697c 855 break;
Marrkk_92 16:21658c9e697c 856 case 28:
Marrkk_92 16:21658c9e697c 857 data(screen_number, letter_s_small[i]);
Marrkk_92 16:21658c9e697c 858 break;
Marrkk_92 16:21658c9e697c 859 case 29:
Marrkk_92 16:21658c9e697c 860 data(screen_number, letter_t_small[i]);
Marrkk_92 16:21658c9e697c 861 break;
Marrkk_92 16:21658c9e697c 862 case 30:
Marrkk_92 16:21658c9e697c 863 data(screen_number, letter_u_small[i]);
Marrkk_92 16:21658c9e697c 864 break;
Marrkk_92 16:21658c9e697c 865 case 31:
Marrkk_92 16:21658c9e697c 866 data(screen_number, letter_v_small[i]);
Marrkk_92 16:21658c9e697c 867 break;
Marrkk_92 16:21658c9e697c 868 case 32:
Marrkk_92 16:21658c9e697c 869 data(screen_number, letter_w_small[i]);
Marrkk_92 16:21658c9e697c 870 break;
Marrkk_92 16:21658c9e697c 871 case 33:
Marrkk_92 16:21658c9e697c 872 data(screen_number, letter_x_small[i]);
Marrkk_92 16:21658c9e697c 873 break;
Marrkk_92 16:21658c9e697c 874 case 34:
Marrkk_92 16:21658c9e697c 875 data(screen_number, letter_y_small[i]);
Marrkk_92 16:21658c9e697c 876 break;
Marrkk_92 16:21658c9e697c 877 case 35:
Marrkk_92 16:21658c9e697c 878 data(screen_number, letter_z_small[i]);
Marrkk_92 16:21658c9e697c 879 break;
Marrkk_92 16:21658c9e697c 880 case 36:
Marrkk_92 16:21658c9e697c 881 data(screen_number, letter_a_large[i]);
Marrkk_92 16:21658c9e697c 882 break;
Marrkk_92 16:21658c9e697c 883 case 37:
Marrkk_92 16:21658c9e697c 884 data(screen_number, letter_b_large[i]);
Marrkk_92 16:21658c9e697c 885 break;
Marrkk_92 16:21658c9e697c 886 case 38:
Marrkk_92 16:21658c9e697c 887 data(screen_number, letter_c_large[i]);
Marrkk_92 16:21658c9e697c 888 break;
Marrkk_92 16:21658c9e697c 889 case 39:
Marrkk_92 16:21658c9e697c 890 data(screen_number, letter_d_large[i]);
Marrkk_92 16:21658c9e697c 891 break;
Marrkk_92 16:21658c9e697c 892 case 40:
Marrkk_92 16:21658c9e697c 893 data(screen_number, letter_e_large[i]);
Marrkk_92 16:21658c9e697c 894 break;
Marrkk_92 16:21658c9e697c 895 case 41:
Marrkk_92 16:21658c9e697c 896 data(screen_number, letter_f_large[i]);
Marrkk_92 16:21658c9e697c 897 break;
Marrkk_92 16:21658c9e697c 898 case 42:
Marrkk_92 16:21658c9e697c 899 data(screen_number, letter_g_large[i]);
Marrkk_92 16:21658c9e697c 900 break;
Marrkk_92 16:21658c9e697c 901 case 43:
Marrkk_92 16:21658c9e697c 902 data(screen_number, letter_h_large[i]);
Marrkk_92 16:21658c9e697c 903 break;
Marrkk_92 16:21658c9e697c 904 case 44:
Marrkk_92 16:21658c9e697c 905 data(screen_number, letter_i_large[i]);
Marrkk_92 16:21658c9e697c 906 break;
Marrkk_92 16:21658c9e697c 907 case 45:
Marrkk_92 16:21658c9e697c 908 data(screen_number, letter_j_large[i]);
Marrkk_92 16:21658c9e697c 909 break;
Marrkk_92 16:21658c9e697c 910 case 46:
Marrkk_92 16:21658c9e697c 911 data(screen_number, letter_k_large[i]);
Marrkk_92 16:21658c9e697c 912 break;
Marrkk_92 16:21658c9e697c 913 case 47:
Marrkk_92 16:21658c9e697c 914 data(screen_number, letter_l_large[i]);
Marrkk_92 16:21658c9e697c 915 break;
Marrkk_92 16:21658c9e697c 916 case 48:
Marrkk_92 16:21658c9e697c 917 data(screen_number, letter_m_large[i]);
Marrkk_92 16:21658c9e697c 918 break;
Marrkk_92 16:21658c9e697c 919 case 49:
Marrkk_92 16:21658c9e697c 920 data(screen_number, letter_n_large[i]);
Marrkk_92 16:21658c9e697c 921 break;
Marrkk_92 16:21658c9e697c 922 case 50:
Marrkk_92 16:21658c9e697c 923 data(screen_number, letter_o_large[i]);
Marrkk_92 16:21658c9e697c 924 break;
Marrkk_92 16:21658c9e697c 925 case 51:
Marrkk_92 16:21658c9e697c 926 data(screen_number, letter_p_large[i]);
Marrkk_92 16:21658c9e697c 927 break;
Marrkk_92 16:21658c9e697c 928 case 52:
Marrkk_92 16:21658c9e697c 929 data(screen_number, letter_q_large[i]);
Marrkk_92 16:21658c9e697c 930 break;
Marrkk_92 16:21658c9e697c 931 case 53:
Marrkk_92 16:21658c9e697c 932 data(screen_number, letter_r_large[i]);
Marrkk_92 16:21658c9e697c 933 break;
Marrkk_92 16:21658c9e697c 934 case 54:
Marrkk_92 16:21658c9e697c 935 data(screen_number, letter_s_large[i]);
Marrkk_92 16:21658c9e697c 936 break;
Marrkk_92 16:21658c9e697c 937 case 55:
Marrkk_92 16:21658c9e697c 938 data(screen_number, letter_t_large[i]);
Marrkk_92 16:21658c9e697c 939 break;
Marrkk_92 16:21658c9e697c 940 case 56:
Marrkk_92 16:21658c9e697c 941 data(screen_number, letter_u_large[i]);
Marrkk_92 16:21658c9e697c 942 break;
Marrkk_92 16:21658c9e697c 943 case 57:
Marrkk_92 16:21658c9e697c 944 data(screen_number, letter_v_large[i]);
Marrkk_92 16:21658c9e697c 945 break;
Marrkk_92 16:21658c9e697c 946 case 58:
Marrkk_92 16:21658c9e697c 947 data(screen_number, letter_w_large[i]);
Marrkk_92 16:21658c9e697c 948 break;
Marrkk_92 16:21658c9e697c 949 case 59:
Marrkk_92 16:21658c9e697c 950 data(screen_number, letter_x_large[i]);
Marrkk_92 16:21658c9e697c 951 break;
Marrkk_92 16:21658c9e697c 952 case 60:
Marrkk_92 16:21658c9e697c 953 data(screen_number, letter_y_large[i]);
Marrkk_92 16:21658c9e697c 954 break;
Marrkk_92 16:21658c9e697c 955 case 61:
Marrkk_92 16:21658c9e697c 956 data(screen_number, letter_z_large[i]);
Marrkk_92 16:21658c9e697c 957 break;
Marrkk_92 16:21658c9e697c 958 case 62:
Marrkk_92 16:21658c9e697c 959 data(screen_number, letter_semicolon[i]);
Marrkk_92 16:21658c9e697c 960 break;
Marrkk_92 16:21658c9e697c 961 case 63:
Marrkk_92 16:21658c9e697c 962 data(screen_number, letter_minus[i]);
Marrkk_92 16:21658c9e697c 963 break;
Marrkk_92 16:21658c9e697c 964 case 64:
Marrkk_92 16:21658c9e697c 965 data(screen_number, letter_dubbelepunt[i]);
Marrkk_92 16:21658c9e697c 966 break;
Marrkk_92 16:21658c9e697c 967 case 65:
Marrkk_92 16:21658c9e697c 968 data(screen_number, letter_plus[i]);
Marrkk_92 16:21658c9e697c 969 break;
Marrkk_92 16:21658c9e697c 970 case 66:
Marrkk_92 16:21658c9e697c 971 data(screen_number, letter_slash[i]);
Marrkk_92 16:21658c9e697c 972 break;
Marrkk_92 16:21658c9e697c 973 case 67:
Marrkk_92 16:21658c9e697c 974 data(screen_number, letter_percent[i]);
Marrkk_92 16:21658c9e697c 975 break;
Marrkk_92 16:21658c9e697c 976 case 68:
Marrkk_92 16:21658c9e697c 977 data(screen_number, letter_questionmark[i]);
Marrkk_92 16:21658c9e697c 978 break;
Marrkk_92 16:21658c9e697c 979 case 69:
Marrkk_92 16:21658c9e697c 980 data(screen_number, letter_comma[i]);
Marrkk_92 16:21658c9e697c 981 break;
Marrkk_92 16:21658c9e697c 982 case 70:
Marrkk_92 16:21658c9e697c 983 data(screen_number, letter_open[i]);
Marrkk_92 16:21658c9e697c 984 break;
Marrkk_92 16:21658c9e697c 985 case 71:
Marrkk_92 16:21658c9e697c 986 data(screen_number, letter_close[i]);
Marrkk_92 16:21658c9e697c 987 break;
Marrkk_92 16:21658c9e697c 988 case 72:
Marrkk_92 16:21658c9e697c 989 data(screen_number, letter_dot[i]);
Marrkk_92 16:21658c9e697c 990 break;
Marrkk_92 16:21658c9e697c 991 case 73:
Marrkk_92 16:21658c9e697c 992 data(screen_number, letter_space[i]);
Marrkk_92 16:21658c9e697c 993 break;
Marrkk_92 16:21658c9e697c 994 case 74:
Marrkk_92 16:21658c9e697c 995 data(screen_number, logo_solar_boat[i]);
Marrkk_92 16:21658c9e697c 996 break;
Marrkk_92 16:21658c9e697c 997 case 75:
Marrkk_92 16:21658c9e697c 998 data(screen_number, logo_dickbutt[i]);
Marrkk_92 16:21658c9e697c 999 break;
Marrkk_92 16:21658c9e697c 1000 case 76:
Marrkk_92 16:21658c9e697c 1001 data(screen_number, letter_degree[i]);
Marrkk_92 16:21658c9e697c 1002 break;
Marrkk_92 16:21658c9e697c 1003 //+80 for large numbers
Marrkk_92 16:21658c9e697c 1004 case 80:
Marrkk_92 16:21658c9e697c 1005 data(screen_number, large_0[i]);
Marrkk_92 16:21658c9e697c 1006 break;
Marrkk_92 16:21658c9e697c 1007 case 81:
Marrkk_92 16:21658c9e697c 1008 data(screen_number, large_1[i]);
Marrkk_92 16:21658c9e697c 1009 break;
Marrkk_92 16:21658c9e697c 1010 case 82:
Marrkk_92 16:21658c9e697c 1011 data(screen_number, large_2[i]);
Marrkk_92 16:21658c9e697c 1012 break;
Marrkk_92 16:21658c9e697c 1013 case 83:
Marrkk_92 16:21658c9e697c 1014 data(screen_number, large_3[i]);
Marrkk_92 16:21658c9e697c 1015 break;
Marrkk_92 16:21658c9e697c 1016 case 84:
Marrkk_92 16:21658c9e697c 1017 data(screen_number, large_4[i]);
Marrkk_92 16:21658c9e697c 1018 break;
Marrkk_92 16:21658c9e697c 1019 case 85:
Marrkk_92 16:21658c9e697c 1020 data(screen_number, large_5[i]);
Marrkk_92 16:21658c9e697c 1021 break;
Marrkk_92 16:21658c9e697c 1022 case 86:
Marrkk_92 16:21658c9e697c 1023 data(screen_number, large_6[i]);
Marrkk_92 16:21658c9e697c 1024 break;
Marrkk_92 16:21658c9e697c 1025 case 87:
Marrkk_92 16:21658c9e697c 1026 data(screen_number, large_7[i]);
Marrkk_92 16:21658c9e697c 1027 break;
Marrkk_92 16:21658c9e697c 1028 case 88:
Marrkk_92 16:21658c9e697c 1029 data(screen_number, large_8[i]);
Marrkk_92 16:21658c9e697c 1030 break;
Marrkk_92 16:21658c9e697c 1031 case 89:
Marrkk_92 16:21658c9e697c 1032 data(screen_number, large_9[i]);
Marrkk_92 16:21658c9e697c 1033 break;
Marrkk_92 16:21658c9e697c 1034 case 90:
Marrkk_92 16:21658c9e697c 1035 data(screen_number, large_space[i]);
Marrkk_92 16:21658c9e697c 1036 break;
Marrkk_92 16:21658c9e697c 1037 case 91:
Marrkk_92 16:21658c9e697c 1038 data(screen_number, alert_sign[i]);
Marrkk_92 16:21658c9e697c 1039 break;
Marrkk_92 16:21658c9e697c 1040 case 92:
Marrkk_92 16:21658c9e697c 1041 data(screen_number, alert_sign_space[i]);
Marrkk_92 16:21658c9e697c 1042 break;
Marrkk_92 16:21658c9e697c 1043 }
Marrkk_92 16:21658c9e697c 1044 }
Marrkk_92 16:21658c9e697c 1045 }