new throttle bar :P

Dependents:   SOS_V1

Committer:
Marrkk_92
Date:
Tue May 23 21:40:31 2017 +0000
Revision:
9:39b8675b6176
Parent:
8:0a9f811c3ae6
update for temp bars and comment-out updateThrottleBar

Who changed what in which revision?

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