LPC1768 programm for the led matrix.

Dependencies:   BufferedSerial DS3231 mbed-rtos mbed

Committer:
JOEV
Date:
Wed Jan 17 07:12:35 2018 +0000
Revision:
3:bd1352d4dbb8
Parent:
2:d5472e4a55bf
first release -> not everything has been commented yet but should work

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JOEV 3:bd1352d4dbb8 1 #include "initalize.h" //Funktionenprototypen
JOEV 3:bd1352d4dbb8 2 #include "alphabet.h" //Header mit allen Buchstaben und Zeichen Variationen
JOEV 3:bd1352d4dbb8 3 #include "mbed.h" //
JOEV 3:bd1352d4dbb8 4 #include <string> //
JOEV 3:bd1352d4dbb8 5 #include "rtos.h" //Verwendet für RtosTimer
JOEV 3:bd1352d4dbb8 6 #include <BufferedSerial.h> //MCU besitzt eine Buffer-Limite von 16 bytes. Diese Library erweitert diese Limite
JOEV 3:bd1352d4dbb8 7 #include "DS3231.h" //Library für die Echtzeituhr DS3231
JOEV 3:bd1352d4dbb8 8 #include "project.h" //Definitionen
JOEV 3:bd1352d4dbb8 9 #include "time_adjustment_dates.h" //Daten für die Winter und Sommerzeit
JOEV 3:bd1352d4dbb8 10
JOEV 3:bd1352d4dbb8 11 //============================================================================================
JOEV 3:bd1352d4dbb8 12 //VARIABLEN
JOEV 3:bd1352d4dbb8 13
JOEV 2:d5472e4a55bf 14
JOEV 3:bd1352d4dbb8 15 struct LED_Matrix
JOEV 3:bd1352d4dbb8 16 {
JOEV 3:bd1352d4dbb8 17 DigitalOut ds,oe,stcp,shcp,mr;
JOEV 3:bd1352d4dbb8 18 LED_Matrix(PinName pin1, PinName pin2, PinName pin3, PinName pin4, PinName pin5) : ds(pin1), oe(pin2), stcp(pin3), shcp(pin4), mr(pin5) {};
JOEV 3:bd1352d4dbb8 19 };
JOEV 3:bd1352d4dbb8 20 //PIN-ASSIGNMENT------------------------------------------------------------------------------
JOEV 3:bd1352d4dbb8 21 DS3231 RTC(p28,p27); //RTC über p28(SDA) und p27(SCL) verbunden
JOEV 3:bd1352d4dbb8 22
JOEV 3:bd1352d4dbb8 23 BusOut led(LED1,LED2,LED3,LED4);
JOEV 3:bd1352d4dbb8 24
JOEV 3:bd1352d4dbb8 25 LED_Matrix matrix(p5, p6, p7, p8, p9); //LED-Matrix Data, Enable, Storage, Shift, Masterreset
JOEV 3:bd1352d4dbb8 26
JOEV 3:bd1352d4dbb8 27 RtosTimer customDuration(CustomTextCycleFinished); //Timer für benutzerdefinierter Text
JOEV 3:bd1352d4dbb8 28 RtosTimer TimerTextSwitch(textSwitcher); //Timer für den Wechsel zwischen Zeit und Datum
JOEV 3:bd1352d4dbb8 29
JOEV 3:bd1352d4dbb8 30 BufferedSerial bluetooth(p13,p14); //Bluetooth Modul, tx, rx
JOEV 2:d5472e4a55bf 31
JOEV 3:bd1352d4dbb8 32 //GLOBAL VARIABLE----------------------------------------------------------------------------------
JOEV 3:bd1352d4dbb8 33 //Clock
JOEV 3:bd1352d4dbb8 34 int rtc_hour; //Stunden
JOEV 3:bd1352d4dbb8 35 int rtc_minute; //Minuten
JOEV 3:bd1352d4dbb8 36 int rtc_second; //Sekunden
JOEV 3:bd1352d4dbb8 37 int rtc_date; //Datum
JOEV 3:bd1352d4dbb8 38 int rtc_dayOfWeek; //Tag der Woche
JOEV 3:bd1352d4dbb8 39 int rtc_month; //Monat
JOEV 3:bd1352d4dbb8 40 int rtc_year; //Jahr
JOEV 3:bd1352d4dbb8 41 //
JOEV 3:bd1352d4dbb8 42 //Time Values
JOEV 3:bd1352d4dbb8 43 int CustomDuration = TIME_CUSTOM_DEF;
JOEV 2:d5472e4a55bf 44
JOEV 3:bd1352d4dbb8 45 //bluetooth
JOEV 3:bd1352d4dbb8 46 string TextBluetooth ("");
JOEV 3:bd1352d4dbb8 47 char ErrorValue = 0;
JOEV 3:bd1352d4dbb8 48
JOEV 3:bd1352d4dbb8 49 //matrix
JOEV 3:bd1352d4dbb8 50 bool matrix_setScroll = 1;
JOEV 3:bd1352d4dbb8 51 char textSwitch = matrixTIME;
JOEV 3:bd1352d4dbb8 52 string TextMatrix ("");
JOEV 3:bd1352d4dbb8 53
JOEV 3:bd1352d4dbb8 54 int matrixPos = 0;
JOEV 3:bd1352d4dbb8 55 int matrix_frames; // Bilder-Counter
JOEV 3:bd1352d4dbb8 56 int matrix_moveFrame = 0; // Variable zum Verschieben des Textes
JOEV 3:bd1352d4dbb8 57
JOEV 3:bd1352d4dbb8 58
JOEV 3:bd1352d4dbb8 59 //ENUM & STRUCT-------------------------------------------------------------------------------
JOEV 3:bd1352d4dbb8 60
JOEV 3:bd1352d4dbb8 61 //============================================================================================
JOEV 2:d5472e4a55bf 62
JOEV 3:bd1352d4dbb8 63 //============================================================================================
JOEV 3:bd1352d4dbb8 64 //▄ ▄ ▄▄▄ ▄▄▄▄▄ ▄▄▄▄ ▄▄▄ ▄ ▄
JOEV 3:bd1352d4dbb8 65 //█▀▄ ▄▀█ █ █ █ █ █ █ █ █
JOEV 3:bd1352d4dbb8 66 //█ ▀ █ █▄▄▄█ █ █▄▄▄▀ █ ▀▄▀
JOEV 3:bd1352d4dbb8 67 //█ █ █ █ █ █ ▀▄ █ ▄▀ ▀▄
JOEV 3:bd1352d4dbb8 68 //█ █ █ █ █ █ ▀▄ ▄█▄ █ █
JOEV 3:bd1352d4dbb8 69 //MATRIX=======================================================================
JOEV 3:bd1352d4dbb8 70 //Autor: Joel von Rotz
JOEV 3:bd1352d4dbb8 71 //Typ: void
JOEV 3:bd1352d4dbb8 72 //parameter: int m_length, int m_height, char *matrix_value
JOEV 3:bd1352d4dbb8 73 // Matrixlänge Matrixhöhe Array für Textwerte
JOEV 3:bd1352d4dbb8 74 //Beschreibung:
JOEV 3:bd1352d4dbb8 75 //=============================================================================
JOEV 3:bd1352d4dbb8 76 void Matrix(int m_length, int m_height, char *matrix_value)
JOEV 2:d5472e4a55bf 77 {
JOEV 3:bd1352d4dbb8 78 matrix.oe = 1; //Matrix ausschalten, damit keine unerwünschte LEDs leuchten.
JOEV 3:bd1352d4dbb8 79 TextMatrix = TextStandard; //Standard-Text zuweisen
JOEV 2:d5472e4a55bf 80 wait(0.5);
JOEV 3:bd1352d4dbb8 81 matrix.oe = 0; //Matrix wieder einschalten
JOEV 3:bd1352d4dbb8 82
JOEV 3:bd1352d4dbb8 83 RTC.setI2Cfrequency(400000);
JOEV 3:bd1352d4dbb8 84 bluetooth.baud(115200); //Bluetooth Module Communication
JOEV 3:bd1352d4dbb8 85
JOEV 3:bd1352d4dbb8 86 TimerTextSwitch.start(TIME_CHANGE);
JOEV 3:bd1352d4dbb8 87
JOEV 3:bd1352d4dbb8 88 while(1)
JOEV 3:bd1352d4dbb8 89 {
JOEV 3:bd1352d4dbb8 90 initVal(); //Variabeln initialisieren
JOEV 3:bd1352d4dbb8 91
JOEV 3:bd1352d4dbb8 92 for(int x = 0; x < 512; x++) //matrix_value "leeren"
JOEV 3:bd1352d4dbb8 93 matrix_value[x] = 0x00;
JOEV 3:bd1352d4dbb8 94
JOEV 3:bd1352d4dbb8 95
JOEV 3:bd1352d4dbb8 96 ReadTimeToString(); //Lese Zeit und konvertiere zu einem String
JOEV 3:bd1352d4dbb8 97
JOEV 3:bd1352d4dbb8 98
JOEV 3:bd1352d4dbb8 99 TextMatrixConvert(TextMatrix,matrix_value, m_length);
JOEV 3:bd1352d4dbb8 100
JOEV 3:bd1352d4dbb8 101 /*Überprüft ob es sich um Winterzeit oder Sommerzeit handelt*/
JOEV 3:bd1352d4dbb8 102 WinterSummerTime(rtc_year,rtc_month,rtc_date,rtc_hour,rtc_second);
JOEV 3:bd1352d4dbb8 103 //----------------------------//
JOEV 3:bd1352d4dbb8 104 if((matrix_frames-64) > m_length)
JOEV 3:bd1352d4dbb8 105 {
JOEV 3:bd1352d4dbb8 106 matrix_setScroll = 1;
JOEV 3:bd1352d4dbb8 107 }
JOEV 3:bd1352d4dbb8 108 else
JOEV 3:bd1352d4dbb8 109 {
JOEV 3:bd1352d4dbb8 110 matrix_setScroll = 0;
JOEV 3:bd1352d4dbb8 111 }
JOEV 3:bd1352d4dbb8 112 if(!matrix_setScroll)
JOEV 3:bd1352d4dbb8 113 {
JOEV 3:bd1352d4dbb8 114 matrix_moveFrame = 64;
JOEV 3:bd1352d4dbb8 115 }
JOEV 3:bd1352d4dbb8 116 //----------------------------//
JOEV 3:bd1352d4dbb8 117 setMatrix(m_height, m_length, matrix_value);
JOEV 3:bd1352d4dbb8 118 //----------------------------//
JOEV 3:bd1352d4dbb8 119 if(bluetooth.readable())
JOEV 3:bd1352d4dbb8 120 {
JOEV 3:bd1352d4dbb8 121 bluetooth_matrix(m_length,m_height,matrix_value);
JOEV 3:bd1352d4dbb8 122 }
JOEV 3:bd1352d4dbb8 123 //----------------------------//
JOEV 3:bd1352d4dbb8 124 }
JOEV 2:d5472e4a55bf 125 }
JOEV 2:d5472e4a55bf 126
JOEV 3:bd1352d4dbb8 127 //TEXTSWITCHER=================================================================
JOEV 3:bd1352d4dbb8 128 //Autor: Joel von Rotz
JOEV 3:bd1352d4dbb8 129 //Typ: void
JOEV 3:bd1352d4dbb8 130 //parameter: void
JOEV 3:bd1352d4dbb8 131 //Beschreibung: Wird für das Wechseln des Textes benötigt
JOEV 3:bd1352d4dbb8 132 //=============================================================================
JOEV 3:bd1352d4dbb8 133 void textSwitcher(void)
JOEV 3:bd1352d4dbb8 134 {
JOEV 3:bd1352d4dbb8 135 matrixPos = 0;
JOEV 3:bd1352d4dbb8 136 matrix_moveFrame = 0;
JOEV 3:bd1352d4dbb8 137 textSwitch = !textSwitch;
JOEV 3:bd1352d4dbb8 138 }
JOEV 3:bd1352d4dbb8 139
JOEV 3:bd1352d4dbb8 140 void CustomTextCycleFinished(void)
JOEV 3:bd1352d4dbb8 141 {
JOEV 3:bd1352d4dbb8 142 TimerTextSwitch.start(TIME_CHANGE);
JOEV 3:bd1352d4dbb8 143 customDuration.stop();
JOEV 3:bd1352d4dbb8 144 textSwitch = matrixTIME;
JOEV 3:bd1352d4dbb8 145 TextMatrix = TextStandard;
JOEV 3:bd1352d4dbb8 146
JOEV 3:bd1352d4dbb8 147 }
JOEV 3:bd1352d4dbb8 148
JOEV 3:bd1352d4dbb8 149 //INITVAL======================================================================
JOEV 3:bd1352d4dbb8 150 //Autor: Joel von Rotz
JOEV 3:bd1352d4dbb8 151 //Typ: void
JOEV 3:bd1352d4dbb8 152 //parameter: void
JOEV 3:bd1352d4dbb8 153 //Beschreibung: Initialisierung der Variabeln und Ein-Ausgängen
JOEV 3:bd1352d4dbb8 154 //=============================================================================
JOEV 3:bd1352d4dbb8 155 void initVal(void)
JOEV 2:d5472e4a55bf 156 {
JOEV 3:bd1352d4dbb8 157 //Überprüfung, ob Text verschoben werden muss auf dem Display
JOEV 3:bd1352d4dbb8 158
JOEV 3:bd1352d4dbb8 159 //=====================
JOEV 3:bd1352d4dbb8 160 //Output
JOEV 3:bd1352d4dbb8 161 matrix.mr = 1;
JOEV 3:bd1352d4dbb8 162 matrix.oe = 1;
JOEV 3:bd1352d4dbb8 163 matrix.ds = 0;
JOEV 3:bd1352d4dbb8 164 matrix.stcp = 0;
JOEV 3:bd1352d4dbb8 165 matrix.shcp = 0;
JOEV 3:bd1352d4dbb8 166 //=====================
JOEV 3:bd1352d4dbb8 167 //Variabeln
JOEV 3:bd1352d4dbb8 168 matrix_frames = 0;
JOEV 3:bd1352d4dbb8 169 TextBluetooth = "";
JOEV 3:bd1352d4dbb8 170 reset_srg();
JOEV 3:bd1352d4dbb8 171 }
JOEV 3:bd1352d4dbb8 172
JOEV 3:bd1352d4dbb8 173 //MATRIX=======================================================================
JOEV 3:bd1352d4dbb8 174 //Autor: Joel von Rotz
JOEV 3:bd1352d4dbb8 175 //Typ: void
JOEV 3:bd1352d4dbb8 176 //parameter: int m_height, int m_length, char *matrix_value
JOEV 3:bd1352d4dbb8 177 //Beschreibung: Lässt Text oder anderes auf einer LED-Matrix anzeigen
JOEV 3:bd1352d4dbb8 178 //=============================================================================
JOEV 3:bd1352d4dbb8 179 // MATRIX
JOEV 3:bd1352d4dbb8 180 //Lässt einen Text auf dem Display anzeigen
JOEV 3:bd1352d4dbb8 181 void setMatrix(int m_height,int m_length, char *matrix_value)
JOEV 3:bd1352d4dbb8 182 {
JOEV 3:bd1352d4dbb8 183 //clock wird als Zählvariable verwendet, darunter als Bitshifter und Multiplexer
JOEV 3:bd1352d4dbb8 184 for(int frequency = 0; frequency < 4; frequency++)
JOEV 3:bd1352d4dbb8 185 {
JOEV 3:bd1352d4dbb8 186 for(int clock = 0; clock < 8; clock++)
JOEV 3:bd1352d4dbb8 187 {
JOEV 3:bd1352d4dbb8 188 //Der Text muss von hinten nach vorne abgearbeitet werden, darum wird eine Variable
JOEV 3:bd1352d4dbb8 189 //names matrixPos verwendet, die die Position des Textes bestimmt.
JOEV 3:bd1352d4dbb8 190 if(matrixPos <= 0)
JOEV 3:bd1352d4dbb8 191 matrixPos = m_length; //setze matrixPos auf die letzte Position des Textes zurück
JOEV 3:bd1352d4dbb8 192
JOEV 3:bd1352d4dbb8 193
JOEV 3:bd1352d4dbb8 194 for(int fill = 0; fill < (m_length/8); fill++)
JOEV 3:bd1352d4dbb8 195 {
JOEV 3:bd1352d4dbb8 196 for(int column = 8; column > 0; column--)
JOEV 3:bd1352d4dbb8 197 {
JOEV 3:bd1352d4dbb8 198 matrix.ds = (matrix_value[matrixPos-column+matrix_moveFrame] >> clock) & 1;
JOEV 3:bd1352d4dbb8 199 shift_srg();
JOEV 3:bd1352d4dbb8 200 }
JOEV 3:bd1352d4dbb8 201 matrixPos -= 8;
JOEV 3:bd1352d4dbb8 202 }
JOEV 3:bd1352d4dbb8 203 //Multiplexer
JOEV 3:bd1352d4dbb8 204 //mit dieser For-Schleife wird der Multiplex-Bit gesetzt
JOEV 3:bd1352d4dbb8 205 for(int cell = 0; cell < 8; cell++)
JOEV 3:bd1352d4dbb8 206 {
JOEV 3:bd1352d4dbb8 207 if(clock == cell) //ist clock gleich cell?
JOEV 3:bd1352d4dbb8 208 matrix.ds = 1; //setze Data-Pin auf 1
JOEV 3:bd1352d4dbb8 209 else //Sonst
JOEV 3:bd1352d4dbb8 210 matrix.ds = 0; //setze auf 0
JOEV 3:bd1352d4dbb8 211 shift_srg(); //Schiebe Data in die Register hinein
JOEV 3:bd1352d4dbb8 212 }
JOEV 3:bd1352d4dbb8 213
JOEV 3:bd1352d4dbb8 214 store_srg();
JOEV 3:bd1352d4dbb8 215 matrix.oe = 0;
JOEV 3:bd1352d4dbb8 216 wait_us(1000);
JOEV 3:bd1352d4dbb8 217 matrix.oe = 1;
JOEV 3:bd1352d4dbb8 218 }
JOEV 3:bd1352d4dbb8 219
JOEV 3:bd1352d4dbb8 220 }
JOEV 3:bd1352d4dbb8 221 //===================================================================
JOEV 3:bd1352d4dbb8 222 if(matrix_setScroll)
JOEV 3:bd1352d4dbb8 223 {
JOEV 3:bd1352d4dbb8 224 matrix_moveFrame++;
JOEV 3:bd1352d4dbb8 225 }
JOEV 3:bd1352d4dbb8 226 if(matrix_moveFrame >= matrix_frames)
JOEV 3:bd1352d4dbb8 227 {
JOEV 3:bd1352d4dbb8 228 matrix_moveFrame = 0;
JOEV 3:bd1352d4dbb8 229 }
JOEV 3:bd1352d4dbb8 230 //===================================================================
JOEV 2:d5472e4a55bf 231 }
JOEV 2:d5472e4a55bf 232
JOEV 2:d5472e4a55bf 233
JOEV 3:bd1352d4dbb8 234 //Schieberegister mit einem Bit befüllen
JOEV 2:d5472e4a55bf 235 void shift_srg()
JOEV 2:d5472e4a55bf 236 {
JOEV 3:bd1352d4dbb8 237 matrix.shcp = 1;
JOEV 3:bd1352d4dbb8 238 matrix.shcp = 0;
JOEV 2:d5472e4a55bf 239 }
JOEV 2:d5472e4a55bf 240
JOEV 3:bd1352d4dbb8 241 //Speicher von den Schieberegister herausgeben
JOEV 3:bd1352d4dbb8 242 void store_srg()
JOEV 3:bd1352d4dbb8 243 {
JOEV 3:bd1352d4dbb8 244 matrix.stcp = 1;
JOEV 3:bd1352d4dbb8 245 matrix.stcp = 0;
JOEV 3:bd1352d4dbb8 246 }
JOEV 3:bd1352d4dbb8 247
JOEV 3:bd1352d4dbb8 248 //Schieberegister zurücksetzen
JOEV 2:d5472e4a55bf 249 void reset_srg()
JOEV 2:d5472e4a55bf 250 {
JOEV 3:bd1352d4dbb8 251 matrix.mr = 0;
JOEV 3:bd1352d4dbb8 252 matrix.mr = 1;
JOEV 2:d5472e4a55bf 253 }
JOEV 2:d5472e4a55bf 254
JOEV 3:bd1352d4dbb8 255 /*Steuerung für die LED-Matrix*/
JOEV 3:bd1352d4dbb8 256 void bluetooth_matrix(int m_length, int m_height, char *matrix_value)
JOEV 2:d5472e4a55bf 257 {
JOEV 3:bd1352d4dbb8 258 TextBluetooth = "";
JOEV 3:bd1352d4dbb8 259 ErrorValue = NO_ERROR;
JOEV 3:bd1352d4dbb8 260 string buff;
JOEV 3:bd1352d4dbb8 261
JOEV 3:bd1352d4dbb8 262 while(bluetooth.readable())
JOEV 3:bd1352d4dbb8 263 {
JOEV 3:bd1352d4dbb8 264 TextBluetooth += bluetooth.getc();
JOEV 3:bd1352d4dbb8 265 }
JOEV 3:bd1352d4dbb8 266 //------------------------------------------
JOEV 3:bd1352d4dbb8 267 //Bluetooth Nachrichten
JOEV 3:bd1352d4dbb8 268 if(TextBluetooth.size()==28 && TextBluetooth.find("matrixCONNECT") != string::npos)
JOEV 3:bd1352d4dbb8 269 {
JOEV 3:bd1352d4dbb8 270 TextMatrix = "Connected!";
JOEV 3:bd1352d4dbb8 271 bluetooth.printf("Hallo! Schreibe etwas...");
JOEV 3:bd1352d4dbb8 272 }
JOEV 3:bd1352d4dbb8 273 else if(TextBluetooth.size()==17 && TextBluetooth.find("matrixNEW_PAIRING") != string::npos ||
JOEV 3:bd1352d4dbb8 274 TextBluetooth.size()==16 && TextBluetooth.find("matrixDISCONNECT") != string::npos )
JOEV 3:bd1352d4dbb8 275 {
JOEV 3:bd1352d4dbb8 276 TextBluetooth = "";
JOEV 3:bd1352d4dbb8 277 }
JOEV 3:bd1352d4dbb8 278 //------------------------------------------
JOEV 3:bd1352d4dbb8 279 //Zeit einstellen
JOEV 3:bd1352d4dbb8 280 else if(TextBluetooth.at(0) == '?') //ist das erste Zeichen ein Befehlszeichen
JOEV 3:bd1352d4dbb8 281 {
JOEV 3:bd1352d4dbb8 282 TextBluetooth.erase(0,1);
JOEV 3:bd1352d4dbb8 283 /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
JOEV 3:bd1352d4dbb8 284 if(TextBluetooth.find("ST ")== 0) //Konfiguration Zeit
JOEV 3:bd1352d4dbb8 285 { TextBluetooth.erase(0,3);
JOEV 3:bd1352d4dbb8 286 if(TextBluetooth.size() == 8)
JOEV 3:bd1352d4dbb8 287 {
JOEV 3:bd1352d4dbb8 288
JOEV 3:bd1352d4dbb8 289 buff.assign(TextBluetooth,0,2);
JOEV 3:bd1352d4dbb8 290 rtc_hour = atoi(buff.c_str());
JOEV 3:bd1352d4dbb8 291 buff.assign(TextBluetooth,3,2);
JOEV 3:bd1352d4dbb8 292 rtc_minute = atoi(buff.c_str());
JOEV 3:bd1352d4dbb8 293 buff.assign(TextBluetooth,6,2);
JOEV 3:bd1352d4dbb8 294 rtc_second = atoi(buff.c_str());
JOEV 3:bd1352d4dbb8 295 if(rtc_hour <= 23 && rtc_minute <= 59 && rtc_second <= 59)
JOEV 3:bd1352d4dbb8 296 {
JOEV 3:bd1352d4dbb8 297 RTC.setTime(rtc_hour,rtc_minute,rtc_second);
JOEV 3:bd1352d4dbb8 298 }
JOEV 3:bd1352d4dbb8 299 else
JOEV 3:bd1352d4dbb8 300 {
JOEV 3:bd1352d4dbb8 301 ErrorValue = CMD_NOT_IN_RANGE;
JOEV 3:bd1352d4dbb8 302 }
JOEV 3:bd1352d4dbb8 303 }
JOEV 3:bd1352d4dbb8 304 else
JOEV 3:bd1352d4dbb8 305 {
JOEV 3:bd1352d4dbb8 306 ErrorValue = CMD_NOT_COMPLETE;
JOEV 3:bd1352d4dbb8 307 }
JOEV 3:bd1352d4dbb8 308 }
JOEV 3:bd1352d4dbb8 309 /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
JOEV 3:bd1352d4dbb8 310 else if(TextBluetooth.find("SD ")== 0) //Konfiguration Datum
JOEV 3:bd1352d4dbb8 311 { TextBluetooth.erase(0,3);
JOEV 3:bd1352d4dbb8 312 if(TextBluetooth.size() == 10)
JOEV 3:bd1352d4dbb8 313 {
JOEV 3:bd1352d4dbb8 314 /*Konvertiere String zu Int*/
JOEV 3:bd1352d4dbb8 315 buff.assign(TextBluetooth,0,2);
JOEV 3:bd1352d4dbb8 316 rtc_date = atoi(buff.c_str());
JOEV 3:bd1352d4dbb8 317 buff.assign(TextBluetooth,3,2);
JOEV 3:bd1352d4dbb8 318 rtc_month = atoi(buff.c_str());
JOEV 3:bd1352d4dbb8 319 buff.assign(TextBluetooth,6,4);
JOEV 3:bd1352d4dbb8 320 rtc_year = atoi(buff.c_str());
JOEV 3:bd1352d4dbb8 321 if(rtc_year <= 2100 && rtc_year >= 1900 && checkDate(rtc_year,rtc_month,rtc_date))
JOEV 3:bd1352d4dbb8 322 {
JOEV 3:bd1352d4dbb8 323 RTC.setDate(0,rtc_date,rtc_month,rtc_year);
JOEV 3:bd1352d4dbb8 324 }
JOEV 3:bd1352d4dbb8 325 else if( ErrorValue == FEB_NO_LEAP) {}
JOEV 3:bd1352d4dbb8 326 else
JOEV 3:bd1352d4dbb8 327 {
JOEV 3:bd1352d4dbb8 328 ErrorValue = CMD_NOT_IN_RANGE;
JOEV 3:bd1352d4dbb8 329 }
JOEV 3:bd1352d4dbb8 330 }
JOEV 3:bd1352d4dbb8 331 else
JOEV 3:bd1352d4dbb8 332 {
JOEV 3:bd1352d4dbb8 333 ErrorValue = CMD_NOT_COMPLETE;
JOEV 3:bd1352d4dbb8 334 }
JOEV 3:bd1352d4dbb8 335 }
JOEV 3:bd1352d4dbb8 336 /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
JOEV 3:bd1352d4dbb8 337 else if(TextBluetooth.find("SW ")== 0) //Konfiguration Winterzeit
JOEV 3:bd1352d4dbb8 338 { TextBluetooth.erase(0,3);
JOEV 3:bd1352d4dbb8 339 TextBluetooth = "Winterzeit";
JOEV 3:bd1352d4dbb8 340 }
JOEV 3:bd1352d4dbb8 341 /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
JOEV 3:bd1352d4dbb8 342 else if(TextBluetooth.find("SS ")== 0) //Konfiguration Sommerzeit
JOEV 3:bd1352d4dbb8 343 { TextBluetooth.erase(0,3);
JOEV 3:bd1352d4dbb8 344 TextBluetooth = "Sommerzeit";
JOEV 3:bd1352d4dbb8 345 }
JOEV 3:bd1352d4dbb8 346 /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
JOEV 3:bd1352d4dbb8 347 else if(TextBluetooth.find("CD ")== 0) //Konfiguration Benutzerdefinierte Textdauer
JOEV 3:bd1352d4dbb8 348 { TextBluetooth.erase(0,3);
JOEV 3:bd1352d4dbb8 349 if(TextBluetooth.size() == 3)
JOEV 3:bd1352d4dbb8 350 {
JOEV 3:bd1352d4dbb8 351 CustomDuration = atoi(TextBluetooth.c_str());
JOEV 3:bd1352d4dbb8 352 if(CustomDuration <= 600 && CustomDuration >= 1){}
JOEV 3:bd1352d4dbb8 353 else
JOEV 3:bd1352d4dbb8 354 {
JOEV 3:bd1352d4dbb8 355 ErrorValue = CMD_NOT_IN_RANGE;
JOEV 3:bd1352d4dbb8 356 CustomDuration = TIME_CUSTOM_DEF;
JOEV 3:bd1352d4dbb8 357 }
JOEV 3:bd1352d4dbb8 358 }
JOEV 3:bd1352d4dbb8 359 else
JOEV 3:bd1352d4dbb8 360 {
JOEV 3:bd1352d4dbb8 361 ErrorValue = CMD_NOT_COMPLETE;
JOEV 3:bd1352d4dbb8 362 }
JOEV 3:bd1352d4dbb8 363 }
JOEV 3:bd1352d4dbb8 364 /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
JOEV 3:bd1352d4dbb8 365 else
JOEV 3:bd1352d4dbb8 366 {
JOEV 3:bd1352d4dbb8 367 ErrorValue = INVALID_CMD;
JOEV 3:bd1352d4dbb8 368 }
JOEV 3:bd1352d4dbb8 369 BLE_ErrorHandler(ErrorValue);
JOEV 3:bd1352d4dbb8 370 }
JOEV 3:bd1352d4dbb8 371 //-----------------------------------------------------
JOEV 3:bd1352d4dbb8 372 //Benutzerdefinierter Text
JOEV 3:bd1352d4dbb8 373 else
JOEV 3:bd1352d4dbb8 374 {
JOEV 3:bd1352d4dbb8 375 TextMatrix = TextBluetooth;
JOEV 3:bd1352d4dbb8 376 textSwitch = matrixCUSTOM;
JOEV 3:bd1352d4dbb8 377 TimerTextSwitch.stop(); //Stoppe den Timer für den Zeit-Datum-Wechsel
JOEV 3:bd1352d4dbb8 378 customDuration.start(CustomDuration*1000); //2 Minuten eigener Text
JOEV 3:bd1352d4dbb8 379 }
JOEV 2:d5472e4a55bf 380 }
JOEV 2:d5472e4a55bf 381
JOEV 3:bd1352d4dbb8 382 void BLE_ErrorHandler(char value)
JOEV 3:bd1352d4dbb8 383 {
JOEV 3:bd1352d4dbb8 384 switch(value)
JOEV 3:bd1352d4dbb8 385 {
JOEV 3:bd1352d4dbb8 386 case NO_ERROR:
JOEV 3:bd1352d4dbb8 387 TimerTextSwitch.start(TIME_CHANGE);
JOEV 3:bd1352d4dbb8 388 customDuration.stop();
JOEV 3:bd1352d4dbb8 389 textSwitch = matrixTIME;
JOEV 3:bd1352d4dbb8 390 break;
JOEV 3:bd1352d4dbb8 391 case INVALID_CMD:
JOEV 3:bd1352d4dbb8 392 TextMatrix = "ERROR: Invalid Command";
JOEV 3:bd1352d4dbb8 393 break;
JOEV 3:bd1352d4dbb8 394 case CMD_NOT_COMPLETE:
JOEV 3:bd1352d4dbb8 395 TextMatrix = "ERROR: Missing Command Parameters";
JOEV 3:bd1352d4dbb8 396 break;
JOEV 3:bd1352d4dbb8 397 case CMD_NOT_IN_RANGE:
JOEV 3:bd1352d4dbb8 398 TextMatrix = "ERROR: Values Not In Range";
JOEV 3:bd1352d4dbb8 399 break;
JOEV 3:bd1352d4dbb8 400 case FEB_NO_LEAP:
JOEV 3:bd1352d4dbb8 401 TextMatrix = "ERROR: February-Date Too Big (Not a Leapyear)";
JOEV 3:bd1352d4dbb8 402 break;
JOEV 3:bd1352d4dbb8 403 }
JOEV 3:bd1352d4dbb8 404 if(value != NO_ERROR)
JOEV 3:bd1352d4dbb8 405 {
JOEV 3:bd1352d4dbb8 406 textSwitch = matrixCUSTOM;
JOEV 3:bd1352d4dbb8 407 TimerTextSwitch.stop(); //Stoppe den Timer für den Zeit-Datum-Wechsel
JOEV 3:bd1352d4dbb8 408 customDuration.start(10000); //2 Minuten eigener Text
JOEV 3:bd1352d4dbb8 409 }
JOEV 3:bd1352d4dbb8 410 }
JOEV 3:bd1352d4dbb8 411
JOEV 3:bd1352d4dbb8 412 void WinterSummerTime(int yearVal,int monthVal,int dateVal,int hourVal,int secondVal)
JOEV 3:bd1352d4dbb8 413 {
JOEV 3:bd1352d4dbb8 414 /*timeLock wird als Wiederholungsstop verwendet. Da bei der Winterzeit eine Stunden *
JOEV 3:bd1352d4dbb8 415 *zurückgestellt wird, wird die Zeit immer wieder um eine Stunde zurückgestellt. */
JOEV 3:bd1352d4dbb8 416 static bool timeLock = 0;
JOEV 3:bd1352d4dbb8 417
JOEV 3:bd1352d4dbb8 418 //Summertime
JOEV 3:bd1352d4dbb8 419 if( dateVal == summerdates[(yearVal % 2000)][0] &&
JOEV 3:bd1352d4dbb8 420 monthVal == summerdates[(yearVal % 2000)][1] &&
JOEV 3:bd1352d4dbb8 421 (yearVal % 2000)== summerdates[(yearVal % 2000)][2] &&
JOEV 3:bd1352d4dbb8 422 hourVal == summerdates[(yearVal % 2000)][3] &&
JOEV 3:bd1352d4dbb8 423 secondVal== summerdates[(yearVal % 2000)][4] &&
JOEV 3:bd1352d4dbb8 424 timeLock == 1)
JOEV 3:bd1352d4dbb8 425 {
JOEV 3:bd1352d4dbb8 426 timeLock = 0;
JOEV 3:bd1352d4dbb8 427 hourVal += 1;
JOEV 3:bd1352d4dbb8 428 RTC.setTime(hourVal,rtc_minute,rtc_second);
JOEV 3:bd1352d4dbb8 429 }
JOEV 3:bd1352d4dbb8 430 //WINTERTIME
JOEV 3:bd1352d4dbb8 431 if( dateVal == winterdates[(yearVal % 2000)][0] &&
JOEV 3:bd1352d4dbb8 432 monthVal == winterdates[(yearVal % 2000)][1] &&
JOEV 3:bd1352d4dbb8 433 (yearVal % 2000)== winterdates[(yearVal % 2000)][2] &&
JOEV 3:bd1352d4dbb8 434 hourVal == winterdates[(yearVal % 2000)][3] &&
JOEV 3:bd1352d4dbb8 435 secondVal== winterdates[(yearVal % 2000)][4] &&
JOEV 3:bd1352d4dbb8 436 timeLock == 0)
JOEV 3:bd1352d4dbb8 437 {
JOEV 3:bd1352d4dbb8 438 timeLock = 1;
JOEV 3:bd1352d4dbb8 439 hourVal -= 1;
JOEV 3:bd1352d4dbb8 440 RTC.setTime(hourVal,rtc_minute,rtc_second);
JOEV 3:bd1352d4dbb8 441 }
JOEV 3:bd1352d4dbb8 442 }
JOEV 3:bd1352d4dbb8 443
JOEV 3:bd1352d4dbb8 444 //=============================================================================
JOEV 3:bd1352d4dbb8 445
JOEV 2:d5472e4a55bf 446
JOEV 3:bd1352d4dbb8 447 //TimeStringConvert============================================================
JOEV 3:bd1352d4dbb8 448 //Autor: Joel von Rotz
JOEV 3:bd1352d4dbb8 449 //Typ: void
JOEV 3:bd1352d4dbb8 450 //parameter: void
JOEV 3:bd1352d4dbb8 451 //Beschreibung:
JOEV 3:bd1352d4dbb8 452 // Das Datum und die Uhrzeit wird am Terminal angezeigt.
JOEV 3:bd1352d4dbb8 453 //=============================================================================
JOEV 3:bd1352d4dbb8 454 void ReadTimeToString(void)
JOEV 2:d5472e4a55bf 455 {
JOEV 3:bd1352d4dbb8 456 RTC.readDateTime(&rtc_dayOfWeek,&rtc_date,&rtc_month,&rtc_year,&rtc_hour,&rtc_minute,&rtc_second);
JOEV 3:bd1352d4dbb8 457 char buff[100];
JOEV 3:bd1352d4dbb8 458 if(textSwitch == matrixTIME)
JOEV 3:bd1352d4dbb8 459 {
JOEV 3:bd1352d4dbb8 460 sprintf(buff," %02i:%02i:%02i",rtc_hour,rtc_minute,rtc_second);
JOEV 3:bd1352d4dbb8 461
JOEV 3:bd1352d4dbb8 462 }
JOEV 3:bd1352d4dbb8 463 else if(textSwitch == matrixDATE)
JOEV 3:bd1352d4dbb8 464 {
JOEV 3:bd1352d4dbb8 465 sprintf(buff," %02i.%02i.%04i",rtc_date,rtc_month,rtc_year);
JOEV 3:bd1352d4dbb8 466 }
JOEV 3:bd1352d4dbb8 467 if(textSwitch != matrixCUSTOM)
JOEV 2:d5472e4a55bf 468 {
JOEV 3:bd1352d4dbb8 469 TextMatrix = buff;
JOEV 3:bd1352d4dbb8 470 }
JOEV 2:d5472e4a55bf 471 }
JOEV 3:bd1352d4dbb8 472 //=============================================================================
JOEV 3:bd1352d4dbb8 473
JOEV 3:bd1352d4dbb8 474 //SETDATEMAX===================================================================
JOEV 3:bd1352d4dbb8 475 //Autor: Joel von Rotz
JOEV 3:bd1352d4dbb8 476 //Typ: char
JOEV 3:bd1352d4dbb8 477 //parameter: int monthVal (Monat wird übergeben)
JOEV 3:bd1352d4dbb8 478 //Beschreibung:
JOEV 3:bd1352d4dbb8 479 // Es wird anhand dem Monat die dazugehörigen maximalen Tagen zurück-
JOEV 3:bd1352d4dbb8 480 // gegeben.
JOEV 3:bd1352d4dbb8 481 //=============================================================================
JOEV 3:bd1352d4dbb8 482 bool checkDate(int yearVal, int monthVal, int dateVal)
JOEV 3:bd1352d4dbb8 483 {
JOEV 3:bd1352d4dbb8 484 const char month_limit[12]={31,28,31,30,31,30,31,31,30,31,30,31};
JOEV 3:bd1352d4dbb8 485 if(monthVal == februar && checkLeapyear(yearVal))
JOEV 3:bd1352d4dbb8 486 { return true; }
JOEV 3:bd1352d4dbb8 487 else if(dateVal > 28 && monthVal == februar)
JOEV 3:bd1352d4dbb8 488 {
JOEV 3:bd1352d4dbb8 489 ErrorValue = FEB_NO_LEAP;
JOEV 3:bd1352d4dbb8 490 return false;
JOEV 3:bd1352d4dbb8 491 }
JOEV 3:bd1352d4dbb8 492 if(dateVal <= month_limit[monthVal-1] && dateVal >= 1)
JOEV 3:bd1352d4dbb8 493 { return true; }
JOEV 3:bd1352d4dbb8 494 else
JOEV 3:bd1352d4dbb8 495 { return false; }
JOEV 3:bd1352d4dbb8 496 }
JOEV 3:bd1352d4dbb8 497 //=============================================================================
JOEV 2:d5472e4a55bf 498
JOEV 2:d5472e4a55bf 499
JOEV 3:bd1352d4dbb8 500 //CHECKLEAPYEAR================================================================
JOEV 3:bd1352d4dbb8 501 //Autor: Joel von Rotz
JOEV 3:bd1352d4dbb8 502 //Typ: bool
JOEV 3:bd1352d4dbb8 503 //parameter: int yearVal
JOEV 3:bd1352d4dbb8 504 //Beschreibung:
JOEV 3:bd1352d4dbb8 505 // Es wird überprüft, ob das Jahr ein Schaltjahr ist oder nicht.
JOEV 3:bd1352d4dbb8 506 // Dabei ist das Jahr NUR ein Schaltjahr, wenn das Jahr durch 4 oder durch 400
JOEV 3:bd1352d4dbb8 507 // teilbar, aber sobald es durch 100 teilbar ist, ist es kein Schaltjahr.
JOEV 3:bd1352d4dbb8 508 // Source -> Gregorianischer Kalender
JOEV 3:bd1352d4dbb8 509 //=============================================================================
JOEV 3:bd1352d4dbb8 510 #define ISLEAPYEAR 1
JOEV 3:bd1352d4dbb8 511 #define ISNOTLEAPYEAR 0
JOEV 3:bd1352d4dbb8 512 bool checkLeapyear(int yearVal)
JOEV 2:d5472e4a55bf 513 {
JOEV 3:bd1352d4dbb8 514 if(yearVal % 4 == 0)
JOEV 3:bd1352d4dbb8 515 {
JOEV 3:bd1352d4dbb8 516 if(yearVal % 100 == 0)
JOEV 3:bd1352d4dbb8 517 {
JOEV 3:bd1352d4dbb8 518 if(yearVal % 400 == 0)
JOEV 3:bd1352d4dbb8 519 {
JOEV 3:bd1352d4dbb8 520 return ISLEAPYEAR; //ist Schaltjahr
JOEV 3:bd1352d4dbb8 521 }
JOEV 3:bd1352d4dbb8 522 return ISNOTLEAPYEAR; //ist nicht Schaltjahr
JOEV 3:bd1352d4dbb8 523 }
JOEV 3:bd1352d4dbb8 524 return ISLEAPYEAR; //ist Schaltjahr
JOEV 3:bd1352d4dbb8 525 }
JOEV 3:bd1352d4dbb8 526 return ISNOTLEAPYEAR; //ist nicht Schaltjahr
JOEV 3:bd1352d4dbb8 527 }
JOEV 3:bd1352d4dbb8 528 //=============================================================================
JOEV 3:bd1352d4dbb8 529
JOEV 3:bd1352d4dbb8 530 void initArray(int const *letter, int size, char *matrix_value)
JOEV 3:bd1352d4dbb8 531 {
JOEV 3:bd1352d4dbb8 532 matrix_frames = matrix_frames + 1; /*A small space, about 1 led column, is being added. */
JOEV 2:d5472e4a55bf 533
JOEV 2:d5472e4a55bf 534 for(int position = 0; position < size; position++)
JOEV 2:d5472e4a55bf 535 {
JOEV 3:bd1352d4dbb8 536 /* Hex-values are added to the matrix-text and matrix_frames is incremented */
JOEV 3:bd1352d4dbb8 537 matrix_value[matrix_frames] = letter[position];
JOEV 3:bd1352d4dbb8 538 matrix_frames++;
JOEV 2:d5472e4a55bf 539 }
JOEV 3:bd1352d4dbb8 540 matrix_value[matrix_frames] = 0x00;
JOEV 2:d5472e4a55bf 541 }
JOEV 2:d5472e4a55bf 542
JOEV 3:bd1352d4dbb8 543 //=============================================================================//
JOEV 3:bd1352d4dbb8 544 //=============================================================================//
JOEV 3:bd1352d4dbb8 545 void TextMatrixConvert(const string& text_convertion, char *matrix_value, int m_length)
JOEV 2:d5472e4a55bf 546 {
JOEV 3:bd1352d4dbb8 547 matrix_frames = matrix_frames + 64;
JOEV 3:bd1352d4dbb8 548 for(int LetterPos = 0; LetterPos < text_convertion.size(); LetterPos++)
JOEV 2:d5472e4a55bf 549 {
JOEV 2:d5472e4a55bf 550 //Letters ------------------------
JOEV 3:bd1352d4dbb8 551 if (text_convertion.at(LetterPos) == 'A')
JOEV 2:d5472e4a55bf 552 {
JOEV 3:bd1352d4dbb8 553 initArray(A,4,matrix_value);
JOEV 2:d5472e4a55bf 554 }
JOEV 3:bd1352d4dbb8 555 else if(text_convertion.at(LetterPos) == 'a')
JOEV 2:d5472e4a55bf 556 {
JOEV 3:bd1352d4dbb8 557 initArray(a,4,matrix_value);
JOEV 2:d5472e4a55bf 558 }
JOEV 3:bd1352d4dbb8 559 else if(text_convertion.at(LetterPos) == 'B')
JOEV 2:d5472e4a55bf 560 {
JOEV 3:bd1352d4dbb8 561 initArray(B,4,matrix_value);
JOEV 2:d5472e4a55bf 562 }
JOEV 3:bd1352d4dbb8 563 else if(text_convertion.at(LetterPos) == 'b')
JOEV 2:d5472e4a55bf 564 {
JOEV 3:bd1352d4dbb8 565 initArray(b,4,matrix_value);
JOEV 2:d5472e4a55bf 566 }
JOEV 3:bd1352d4dbb8 567 else if(text_convertion.at(LetterPos) == 'C')
JOEV 2:d5472e4a55bf 568 {
JOEV 3:bd1352d4dbb8 569 initArray(C,4,matrix_value);
JOEV 2:d5472e4a55bf 570 }
JOEV 3:bd1352d4dbb8 571 else if(text_convertion.at(LetterPos) == 'c')
JOEV 2:d5472e4a55bf 572 {
JOEV 3:bd1352d4dbb8 573 initArray(c,4,matrix_value);
JOEV 2:d5472e4a55bf 574 }
JOEV 3:bd1352d4dbb8 575 else if(text_convertion.at(LetterPos) == 'D')
JOEV 2:d5472e4a55bf 576 {
JOEV 3:bd1352d4dbb8 577 initArray(D,4,matrix_value);
JOEV 2:d5472e4a55bf 578 }
JOEV 3:bd1352d4dbb8 579 else if(text_convertion.at(LetterPos) == 'd')
JOEV 2:d5472e4a55bf 580 {
JOEV 3:bd1352d4dbb8 581 initArray(d,5,matrix_value);
JOEV 2:d5472e4a55bf 582 }
JOEV 3:bd1352d4dbb8 583 else if(text_convertion.at(LetterPos) == 'E')
JOEV 2:d5472e4a55bf 584 {
JOEV 3:bd1352d4dbb8 585 initArray(E,4,matrix_value);
JOEV 2:d5472e4a55bf 586 }
JOEV 3:bd1352d4dbb8 587 else if(text_convertion.at(LetterPos) == 'e')
JOEV 2:d5472e4a55bf 588 {
JOEV 3:bd1352d4dbb8 589 initArray(e,4,matrix_value);
JOEV 2:d5472e4a55bf 590 }
JOEV 3:bd1352d4dbb8 591 else if(text_convertion.at(LetterPos) == 'F')
JOEV 2:d5472e4a55bf 592 {
JOEV 3:bd1352d4dbb8 593 initArray(F,4,matrix_value);
JOEV 2:d5472e4a55bf 594 }
JOEV 3:bd1352d4dbb8 595 else if(text_convertion.at(LetterPos) == 'f')
JOEV 2:d5472e4a55bf 596 {
JOEV 3:bd1352d4dbb8 597 initArray(f,3,matrix_value);
JOEV 2:d5472e4a55bf 598 }
JOEV 3:bd1352d4dbb8 599 else if(text_convertion.at(LetterPos) == 'G')
JOEV 2:d5472e4a55bf 600 {
JOEV 3:bd1352d4dbb8 601 initArray(G,4,matrix_value);
JOEV 2:d5472e4a55bf 602 }
JOEV 3:bd1352d4dbb8 603 else if(text_convertion.at(LetterPos) == 'g')
JOEV 2:d5472e4a55bf 604 {
JOEV 3:bd1352d4dbb8 605 initArray(g,4,matrix_value);
JOEV 2:d5472e4a55bf 606 }
JOEV 3:bd1352d4dbb8 607 else if(text_convertion.at(LetterPos) == 'H')
JOEV 2:d5472e4a55bf 608 {
JOEV 3:bd1352d4dbb8 609 initArray(H,4,matrix_value);
JOEV 2:d5472e4a55bf 610 }
JOEV 3:bd1352d4dbb8 611 else if(text_convertion.at(LetterPos) == 'h')
JOEV 2:d5472e4a55bf 612 {
JOEV 3:bd1352d4dbb8 613 initArray(h,5,matrix_value);
JOEV 2:d5472e4a55bf 614 }
JOEV 3:bd1352d4dbb8 615 else if(text_convertion.at(LetterPos) == 'I')
JOEV 2:d5472e4a55bf 616 {
JOEV 3:bd1352d4dbb8 617 initArray(I,3,matrix_value);
JOEV 2:d5472e4a55bf 618 }
JOEV 3:bd1352d4dbb8 619 else if(text_convertion.at(LetterPos) == 'i')
JOEV 2:d5472e4a55bf 620 {
JOEV 3:bd1352d4dbb8 621 initArray(i,3,matrix_value);
JOEV 2:d5472e4a55bf 622 }
JOEV 3:bd1352d4dbb8 623 else if(text_convertion.at(LetterPos) == 'J')
JOEV 2:d5472e4a55bf 624 {
JOEV 3:bd1352d4dbb8 625 initArray(J,4,matrix_value);
JOEV 2:d5472e4a55bf 626 }
JOEV 3:bd1352d4dbb8 627 else if(text_convertion.at(LetterPos) == 'j')
JOEV 2:d5472e4a55bf 628 {
JOEV 3:bd1352d4dbb8 629 initArray(j,3,matrix_value);
JOEV 2:d5472e4a55bf 630 }
JOEV 3:bd1352d4dbb8 631 else if(text_convertion.at(LetterPos) == 'K')
JOEV 2:d5472e4a55bf 632 {
JOEV 3:bd1352d4dbb8 633 initArray(K,5,matrix_value);
JOEV 2:d5472e4a55bf 634 }
JOEV 3:bd1352d4dbb8 635 else if(text_convertion.at(LetterPos) == 'k')
JOEV 2:d5472e4a55bf 636 {
JOEV 3:bd1352d4dbb8 637 initArray(k,4,matrix_value);
JOEV 2:d5472e4a55bf 638 }
JOEV 3:bd1352d4dbb8 639 else if(text_convertion.at(LetterPos) == 'L')
JOEV 2:d5472e4a55bf 640 {
JOEV 3:bd1352d4dbb8 641 initArray(L,4,matrix_value);
JOEV 2:d5472e4a55bf 642 }
JOEV 3:bd1352d4dbb8 643 else if(text_convertion.at(LetterPos) == 'l')
JOEV 2:d5472e4a55bf 644 {
JOEV 3:bd1352d4dbb8 645 initArray(l,3,matrix_value);
JOEV 2:d5472e4a55bf 646 }
JOEV 3:bd1352d4dbb8 647 else if(text_convertion.at(LetterPos) == 'M')
JOEV 2:d5472e4a55bf 648 {
JOEV 3:bd1352d4dbb8 649 initArray(M,5,matrix_value);
JOEV 2:d5472e4a55bf 650 }
JOEV 3:bd1352d4dbb8 651 else if(text_convertion.at(LetterPos) == 'm')
JOEV 2:d5472e4a55bf 652 {
JOEV 3:bd1352d4dbb8 653 initArray(m,5,matrix_value);
JOEV 2:d5472e4a55bf 654 }
JOEV 3:bd1352d4dbb8 655 else if(text_convertion.at(LetterPos) == 'N')
JOEV 2:d5472e4a55bf 656 {
JOEV 3:bd1352d4dbb8 657 initArray(N,5,matrix_value);
JOEV 2:d5472e4a55bf 658 }
JOEV 3:bd1352d4dbb8 659 else if(text_convertion.at(LetterPos) == 'n')
JOEV 2:d5472e4a55bf 660 {
JOEV 3:bd1352d4dbb8 661 initArray(n,4,matrix_value);
JOEV 2:d5472e4a55bf 662 }
JOEV 3:bd1352d4dbb8 663 else if(text_convertion.at(LetterPos) == 'O')
JOEV 2:d5472e4a55bf 664 {
JOEV 3:bd1352d4dbb8 665 initArray(O,4,matrix_value);
JOEV 2:d5472e4a55bf 666 }
JOEV 3:bd1352d4dbb8 667 else if(text_convertion.at(LetterPos) == 'o')
JOEV 2:d5472e4a55bf 668 {
JOEV 3:bd1352d4dbb8 669 initArray(o,5,matrix_value);
JOEV 2:d5472e4a55bf 670 }
JOEV 3:bd1352d4dbb8 671 else if(text_convertion.at(LetterPos) == 'P')
JOEV 2:d5472e4a55bf 672 {
JOEV 3:bd1352d4dbb8 673 initArray(P,4,matrix_value);
JOEV 2:d5472e4a55bf 674 }
JOEV 3:bd1352d4dbb8 675 else if(text_convertion.at(LetterPos) == 'p')
JOEV 2:d5472e4a55bf 676 {
JOEV 3:bd1352d4dbb8 677 initArray(p,4,matrix_value);
JOEV 2:d5472e4a55bf 678 }
JOEV 3:bd1352d4dbb8 679 else if(text_convertion.at(LetterPos) == 'Q')
JOEV 2:d5472e4a55bf 680 {
JOEV 3:bd1352d4dbb8 681 initArray(Q,5,matrix_value);
JOEV 2:d5472e4a55bf 682 }
JOEV 3:bd1352d4dbb8 683 else if(text_convertion.at(LetterPos) == 'q')
JOEV 2:d5472e4a55bf 684 {
JOEV 3:bd1352d4dbb8 685 initArray(q,4,matrix_value);
JOEV 2:d5472e4a55bf 686 }
JOEV 3:bd1352d4dbb8 687 else if(text_convertion.at(LetterPos) == 'R')
JOEV 2:d5472e4a55bf 688 {
JOEV 3:bd1352d4dbb8 689 initArray(R,4,matrix_value);
JOEV 2:d5472e4a55bf 690 }
JOEV 3:bd1352d4dbb8 691 else if(text_convertion.at(LetterPos) == 'r')
JOEV 2:d5472e4a55bf 692 {
JOEV 3:bd1352d4dbb8 693 initArray(r,3,matrix_value);
JOEV 2:d5472e4a55bf 694 }
JOEV 3:bd1352d4dbb8 695 else if(text_convertion.at(LetterPos) == 'S')
JOEV 2:d5472e4a55bf 696 {
JOEV 3:bd1352d4dbb8 697 initArray(S,4,matrix_value);
JOEV 2:d5472e4a55bf 698 }
JOEV 3:bd1352d4dbb8 699 else if(text_convertion.at(LetterPos) == 's')
JOEV 2:d5472e4a55bf 700 {
JOEV 3:bd1352d4dbb8 701 initArray(s,4,matrix_value);
JOEV 2:d5472e4a55bf 702 }
JOEV 3:bd1352d4dbb8 703 else if(text_convertion.at(LetterPos) == 'T')
JOEV 2:d5472e4a55bf 704 {
JOEV 3:bd1352d4dbb8 705 initArray(T,5,matrix_value);
JOEV 2:d5472e4a55bf 706 }
JOEV 3:bd1352d4dbb8 707 else if(text_convertion.at(LetterPos) == 't')
JOEV 2:d5472e4a55bf 708 {
JOEV 3:bd1352d4dbb8 709 initArray(t,3,matrix_value);
JOEV 2:d5472e4a55bf 710 }
JOEV 3:bd1352d4dbb8 711 else if(text_convertion.at(LetterPos) == 'U')
JOEV 2:d5472e4a55bf 712 {
JOEV 3:bd1352d4dbb8 713 initArray(U,4,matrix_value);
JOEV 2:d5472e4a55bf 714 }
JOEV 3:bd1352d4dbb8 715 else if(text_convertion.at(LetterPos) == 'u')
JOEV 2:d5472e4a55bf 716 {
JOEV 3:bd1352d4dbb8 717 initArray(u,5,matrix_value);
JOEV 2:d5472e4a55bf 718 }
JOEV 3:bd1352d4dbb8 719 else if(text_convertion.at(LetterPos) == 'V')
JOEV 2:d5472e4a55bf 720 {
JOEV 3:bd1352d4dbb8 721 initArray(V,5,matrix_value);
JOEV 2:d5472e4a55bf 722 }
JOEV 3:bd1352d4dbb8 723 else if(text_convertion.at(LetterPos) == 'v')
JOEV 2:d5472e4a55bf 724 {
JOEV 3:bd1352d4dbb8 725 initArray(v,5,matrix_value);
JOEV 2:d5472e4a55bf 726 }
JOEV 3:bd1352d4dbb8 727 else if(text_convertion.at(LetterPos) == 'W')
JOEV 2:d5472e4a55bf 728 {
JOEV 3:bd1352d4dbb8 729 initArray(W,5,matrix_value);
JOEV 2:d5472e4a55bf 730 }
JOEV 3:bd1352d4dbb8 731 else if(text_convertion.at(LetterPos) == 'w')
JOEV 2:d5472e4a55bf 732 {
JOEV 3:bd1352d4dbb8 733 initArray(w,5,matrix_value);
JOEV 2:d5472e4a55bf 734 }
JOEV 3:bd1352d4dbb8 735 else if(text_convertion.at(LetterPos) == 'X')
JOEV 2:d5472e4a55bf 736 {
JOEV 3:bd1352d4dbb8 737 initArray(X,4,matrix_value);
JOEV 2:d5472e4a55bf 738 }
JOEV 3:bd1352d4dbb8 739 else if(text_convertion.at(LetterPos) == 'x')
JOEV 2:d5472e4a55bf 740 {
JOEV 3:bd1352d4dbb8 741 initArray(x,4,matrix_value);
JOEV 2:d5472e4a55bf 742 }
JOEV 3:bd1352d4dbb8 743 else if(text_convertion.at(LetterPos) == 'Y')
JOEV 2:d5472e4a55bf 744 {
JOEV 3:bd1352d4dbb8 745 initArray(Y,5,matrix_value);
JOEV 2:d5472e4a55bf 746 }
JOEV 3:bd1352d4dbb8 747 else if(text_convertion.at(LetterPos) == 'y')
JOEV 2:d5472e4a55bf 748 {
JOEV 3:bd1352d4dbb8 749 initArray(y,5,matrix_value);
JOEV 2:d5472e4a55bf 750 }
JOEV 3:bd1352d4dbb8 751 else if(text_convertion.at(LetterPos) == 'Z')
JOEV 2:d5472e4a55bf 752 {
JOEV 3:bd1352d4dbb8 753 initArray(Z,4,matrix_value);
JOEV 2:d5472e4a55bf 754 }
JOEV 3:bd1352d4dbb8 755 else if(text_convertion.at(LetterPos) == 'z')
JOEV 2:d5472e4a55bf 756 {
JOEV 3:bd1352d4dbb8 757 initArray(z,4,matrix_value);
JOEV 2:d5472e4a55bf 758 }
JOEV 2:d5472e4a55bf 759 // Numbers -----------------------
JOEV 3:bd1352d4dbb8 760 else if(text_convertion.at(LetterPos) == '0')
JOEV 2:d5472e4a55bf 761 {
JOEV 3:bd1352d4dbb8 762 initArray(zero,4,matrix_value);
JOEV 2:d5472e4a55bf 763 }
JOEV 3:bd1352d4dbb8 764 else if(text_convertion.at(LetterPos) == '1')
JOEV 2:d5472e4a55bf 765 {
JOEV 3:bd1352d4dbb8 766 initArray(one,4,matrix_value);
JOEV 2:d5472e4a55bf 767 }
JOEV 3:bd1352d4dbb8 768 else if(text_convertion.at(LetterPos) == '2')
JOEV 2:d5472e4a55bf 769 {
JOEV 3:bd1352d4dbb8 770 initArray(two,4,matrix_value);
JOEV 2:d5472e4a55bf 771 }
JOEV 3:bd1352d4dbb8 772 else if(text_convertion.at(LetterPos) == '3')
JOEV 2:d5472e4a55bf 773 {
JOEV 3:bd1352d4dbb8 774 initArray(three,4,matrix_value);
JOEV 2:d5472e4a55bf 775 }
JOEV 3:bd1352d4dbb8 776 else if(text_convertion.at(LetterPos) == '4')
JOEV 2:d5472e4a55bf 777 {
JOEV 3:bd1352d4dbb8 778 initArray(four,4,matrix_value);
JOEV 2:d5472e4a55bf 779 }
JOEV 3:bd1352d4dbb8 780 else if(text_convertion.at(LetterPos) == '5')
JOEV 2:d5472e4a55bf 781 {
JOEV 3:bd1352d4dbb8 782 initArray(five,4,matrix_value);
JOEV 2:d5472e4a55bf 783 }
JOEV 3:bd1352d4dbb8 784 else if(text_convertion.at(LetterPos) == '6')
JOEV 2:d5472e4a55bf 785 {
JOEV 3:bd1352d4dbb8 786 initArray(six,4,matrix_value);
JOEV 2:d5472e4a55bf 787 }
JOEV 3:bd1352d4dbb8 788 else if(text_convertion.at(LetterPos) == '7')
JOEV 2:d5472e4a55bf 789 {
JOEV 3:bd1352d4dbb8 790 initArray(seven,4,matrix_value);
JOEV 2:d5472e4a55bf 791 }
JOEV 3:bd1352d4dbb8 792 else if(text_convertion.at(LetterPos) == '8')
JOEV 2:d5472e4a55bf 793 {
JOEV 3:bd1352d4dbb8 794 initArray(eight,4,matrix_value);
JOEV 2:d5472e4a55bf 795 }
JOEV 3:bd1352d4dbb8 796 else if(text_convertion.at(LetterPos) == '9')
JOEV 2:d5472e4a55bf 797 {
JOEV 3:bd1352d4dbb8 798 initArray(nine,4,matrix_value);
JOEV 2:d5472e4a55bf 799 }
JOEV 2:d5472e4a55bf 800 // Symbols -----------------------
JOEV 3:bd1352d4dbb8 801 else if(text_convertion.at(LetterPos) == '!')
JOEV 2:d5472e4a55bf 802 {
JOEV 3:bd1352d4dbb8 803 initArray(exclam,1,matrix_value);
JOEV 2:d5472e4a55bf 804 }
JOEV 3:bd1352d4dbb8 805 else if(text_convertion.at(LetterPos) == '?')
JOEV 2:d5472e4a55bf 806 {
JOEV 3:bd1352d4dbb8 807 initArray(quest,3,matrix_value);
JOEV 2:d5472e4a55bf 808 }
JOEV 3:bd1352d4dbb8 809 else if(text_convertion.at(LetterPos) == 34)
JOEV 2:d5472e4a55bf 810 {
JOEV 3:bd1352d4dbb8 811 initArray(quote,3,matrix_value);
JOEV 2:d5472e4a55bf 812 }
JOEV 3:bd1352d4dbb8 813 else if(text_convertion.at(LetterPos) == '#')
JOEV 2:d5472e4a55bf 814 {
JOEV 3:bd1352d4dbb8 815 initArray(hash,5,matrix_value);
JOEV 2:d5472e4a55bf 816 }
JOEV 3:bd1352d4dbb8 817 else if(text_convertion.at(LetterPos) == '$')
JOEV 2:d5472e4a55bf 818 {
JOEV 3:bd1352d4dbb8 819 initArray(dollar,5,matrix_value);
JOEV 2:d5472e4a55bf 820 }
JOEV 3:bd1352d4dbb8 821 else if(text_convertion.at(LetterPos) == '%')
JOEV 2:d5472e4a55bf 822 {
JOEV 3:bd1352d4dbb8 823 initArray(prcent,7,matrix_value);
JOEV 2:d5472e4a55bf 824 }
JOEV 3:bd1352d4dbb8 825 else if(text_convertion.at(LetterPos) == '&')
JOEV 2:d5472e4a55bf 826 {
JOEV 3:bd1352d4dbb8 827 initArray(_and,5,matrix_value);
JOEV 2:d5472e4a55bf 828 }
JOEV 3:bd1352d4dbb8 829 else if(text_convertion.at(LetterPos) == '(')
JOEV 2:d5472e4a55bf 830 {
JOEV 3:bd1352d4dbb8 831 initArray(round_o,2,matrix_value);
JOEV 2:d5472e4a55bf 832 }
JOEV 3:bd1352d4dbb8 833 else if(text_convertion.at(LetterPos) == ')')
JOEV 2:d5472e4a55bf 834 {
JOEV 3:bd1352d4dbb8 835 initArray(round_c,2,matrix_value);
JOEV 2:d5472e4a55bf 836 }
JOEV 3:bd1352d4dbb8 837 else if(text_convertion.at(LetterPos) == '*')
JOEV 2:d5472e4a55bf 838 {
JOEV 3:bd1352d4dbb8 839 initArray(star,5,matrix_value);
JOEV 2:d5472e4a55bf 840 }
JOEV 3:bd1352d4dbb8 841 else if(text_convertion.at(LetterPos) == '+')
JOEV 2:d5472e4a55bf 842 {
JOEV 3:bd1352d4dbb8 843 initArray(plus,5,matrix_value);
JOEV 2:d5472e4a55bf 844 }
JOEV 3:bd1352d4dbb8 845 else if(text_convertion.at(LetterPos) == '-')
JOEV 2:d5472e4a55bf 846 {
JOEV 3:bd1352d4dbb8 847 initArray(minus,3,matrix_value);
JOEV 2:d5472e4a55bf 848 }
JOEV 3:bd1352d4dbb8 849 else if(text_convertion.at(LetterPos) == '=')
JOEV 2:d5472e4a55bf 850 {
JOEV 3:bd1352d4dbb8 851 initArray(_equal,4,matrix_value);
JOEV 2:d5472e4a55bf 852 }
JOEV 3:bd1352d4dbb8 853 else if(text_convertion.at(LetterPos) == ',')
JOEV 2:d5472e4a55bf 854 {
JOEV 3:bd1352d4dbb8 855 initArray(comma,2,matrix_value);
JOEV 2:d5472e4a55bf 856 }
JOEV 3:bd1352d4dbb8 857 else if(text_convertion.at(LetterPos) == '.')
JOEV 2:d5472e4a55bf 858 {
JOEV 3:bd1352d4dbb8 859 initArray(point,1,matrix_value);
JOEV 2:d5472e4a55bf 860 }
JOEV 3:bd1352d4dbb8 861 else if(text_convertion.at(LetterPos) == '/')
JOEV 2:d5472e4a55bf 862 {
JOEV 3:bd1352d4dbb8 863 initArray(slash,5,matrix_value);
JOEV 2:d5472e4a55bf 864 }
JOEV 3:bd1352d4dbb8 865 else if(text_convertion.at(LetterPos) == 58)
JOEV 2:d5472e4a55bf 866 {
JOEV 3:bd1352d4dbb8 867 initArray(d_point,1,matrix_value);
JOEV 2:d5472e4a55bf 868 }
JOEV 3:bd1352d4dbb8 869 else if(text_convertion.at(LetterPos) == 59)
JOEV 2:d5472e4a55bf 870 {
JOEV 3:bd1352d4dbb8 871 initArray(poicom,2,matrix_value);
JOEV 2:d5472e4a55bf 872 }
JOEV 3:bd1352d4dbb8 873 else if(text_convertion.at(LetterPos) == 95)
JOEV 2:d5472e4a55bf 874 {
JOEV 3:bd1352d4dbb8 875 initArray(undlin,4,matrix_value);
JOEV 2:d5472e4a55bf 876 }
JOEV 3:bd1352d4dbb8 877 else if(text_convertion.at(LetterPos) == 92)
JOEV 2:d5472e4a55bf 878 {
JOEV 3:bd1352d4dbb8 879 initArray(b_slash,5,matrix_value);
JOEV 2:d5472e4a55bf 880 }
JOEV 3:bd1352d4dbb8 881 else if(text_convertion.at(LetterPos) == 64)
JOEV 2:d5472e4a55bf 882 {
JOEV 3:bd1352d4dbb8 883 initArray(at,5,matrix_value);
JOEV 2:d5472e4a55bf 884 }
JOEV 3:bd1352d4dbb8 885 else if(text_convertion.at(LetterPos) == 62)
JOEV 2:d5472e4a55bf 886 {
JOEV 3:bd1352d4dbb8 887 initArray(more,4,matrix_value);
JOEV 2:d5472e4a55bf 888 }
JOEV 3:bd1352d4dbb8 889 else if(text_convertion.at(LetterPos) == 60)
JOEV 2:d5472e4a55bf 890 {
JOEV 3:bd1352d4dbb8 891 initArray(less,4,matrix_value);
JOEV 2:d5472e4a55bf 892 }
JOEV 3:bd1352d4dbb8 893 else if(text_convertion.at(LetterPos) == '[')
JOEV 2:d5472e4a55bf 894 {
JOEV 3:bd1352d4dbb8 895 initArray(brack_o,2,matrix_value);
JOEV 2:d5472e4a55bf 896 }
JOEV 3:bd1352d4dbb8 897 else if(text_convertion.at(LetterPos) == ']')
JOEV 2:d5472e4a55bf 898 {
JOEV 3:bd1352d4dbb8 899 initArray(brack_c,2,matrix_value);
JOEV 2:d5472e4a55bf 900 }
JOEV 3:bd1352d4dbb8 901 else if(text_convertion.at(LetterPos) == 94)
JOEV 2:d5472e4a55bf 902 {
JOEV 3:bd1352d4dbb8 903 initArray(roof,3,matrix_value);
JOEV 2:d5472e4a55bf 904 }
JOEV 3:bd1352d4dbb8 905 else if(text_convertion.at(LetterPos) == '{')
JOEV 2:d5472e4a55bf 906 {
JOEV 3:bd1352d4dbb8 907 initArray(brace_o,3,matrix_value);
JOEV 2:d5472e4a55bf 908 }
JOEV 3:bd1352d4dbb8 909 else if(text_convertion.at(LetterPos) == '}')
JOEV 2:d5472e4a55bf 910 {
JOEV 3:bd1352d4dbb8 911 initArray(brace_c,3,matrix_value);
JOEV 2:d5472e4a55bf 912 }
JOEV 3:bd1352d4dbb8 913 else if(text_convertion.at(LetterPos) == '~')
JOEV 2:d5472e4a55bf 914 {
JOEV 3:bd1352d4dbb8 915 initArray(wave,4,matrix_value);
JOEV 2:d5472e4a55bf 916 }
JOEV 3:bd1352d4dbb8 917 else if(text_convertion.at(LetterPos) == '|')
JOEV 2:d5472e4a55bf 918 {
JOEV 3:bd1352d4dbb8 919 initArray(stick,1,matrix_value);
JOEV 2:d5472e4a55bf 920 }
JOEV 3:bd1352d4dbb8 921 else if(text_convertion.at(LetterPos) == '`')
JOEV 2:d5472e4a55bf 922 {
JOEV 3:bd1352d4dbb8 923 initArray(frapo,2,matrix_value);
JOEV 2:d5472e4a55bf 924 }
JOEV 3:bd1352d4dbb8 925 else if(text_convertion.at(LetterPos) == ' ')
JOEV 2:d5472e4a55bf 926 {
JOEV 3:bd1352d4dbb8 927 initArray(space,3,matrix_value);
JOEV 2:d5472e4a55bf 928 }
JOEV 2:d5472e4a55bf 929 }
JOEV 3:bd1352d4dbb8 930 }
JOEV 3:bd1352d4dbb8 931
JOEV 3:bd1352d4dbb8 932 //============================================================================================
JOEV 3:bd1352d4dbb8 933 //▄▄▄ ▄▄ ▄▄ ▄▄ ▄▄ ▄
JOEV 3:bd1352d4dbb8 934 //█ █ █ ▀ ▀ █ ▀ █ ▀ █ ▀█
JOEV 3:bd1352d4dbb8 935 //█ █ ▀▄▄ ▄▄▀ ▄▄▀ ▄▄▀ █
JOEV 3:bd1352d4dbb8 936 //█ █ █ █ █ █ █
JOEV 3:bd1352d4dbb8 937 //█▄▄▀ ▀▄▄▀ ▀▄▄▀ ▀▄▄▀ ▀▄▄▀ ▄█▄