dashboardv4solarboat

Dependencies:   mbed

Fork of mbed_blinky by Mbed

Committer:
Marrkk_92
Date:
Tue May 02 17:25:18 2017 +0000
Revision:
16:21658c9e697c
Child:
17:f8d3d1f0d8d1
dashboard_SBT_v4

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