Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SDFileSystem mbed
main.cpp
00001 //E233SideLED E233系側面LED再現 00002 //Ver:0.90 00003 00004 //簡単な説明,また表示データを以下で配布しています。 00005 //https://chirashitech.wordpress.com/ 00006 00007 //このソースはSDカードが存在することが前提です。 00008 //SDカードがない状態で停車駅スクロールが有効になっている場合エラー文が出力されるため起動までに時間がかかります。 00009 //SDカードがない場合ScrollEnableを0にしてください。 00010 00011 00012 #include "mbed.h" 00013 #include "SDFileSystem.h" 00014 00015 #define bitRead(value, bit) (((value) >> (bit)) & 0x01) 00016 #define bitSet(value, bit) ((value) |= (1UL << (bit))) 00017 #define bitClear(value, bit) ((value) &= ~(1UL << (bit))) 00018 #define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) 00019 00020 #define LOW 0 00021 #define HIGH 1 00022 00023 #define R_Debug1 0 00024 #define R_Debug2 0 00025 #define R_Debug3 0 00026 #define R_Debug4 0 00027 00028 #define G_Debug1 0 00029 #define G_Debug2 0 00030 #define G_Debug3 0 00031 #define G_Debug4 0 00032 00033 #define B_Debug1 0 00034 #define B_Debug2 0 00035 #define B_Debug3 0 00036 #define B_Debug4 0 00037 00038 //表示幅を増やす場合ここ以外も変更が必要 00039 #define LED_Width 128 00040 #define LED_Height 16 00041 00042 //表示処理Wait 00043 //ここを変更することで輝度調整可能 00044 //ただし消費電力も変動します。出力に余裕のない電源を利用している場合変更しないでください 00045 #define DisplayWait 15 00046 00047 //最大停車駅数 00048 #define MaxStopStation 100 00049 00050 //将来的な複数機器連動用の機器ID 00051 //0:全機器一斉送信用 1:前面LED 2:側面LED(暫定) 00052 #define DeviceID 2 00053 00054 00055 //SDCard 00056 //MOSI - D11(PA7) 00057 //MISO - D12(PA6) 00058 //SCK - D13(PA5) 00059 //CS - D10(PB6) 00060 00061 SDFileSystem sd(D11, D12, D13, D10, "sd"); 00062 00063 //Serial USB 00064 Serial pc(USBTX,USBRX ); 00065 00066 //Bluetooth Serial6 00067 //Serial pc(PA_11,PA_12 ); 00068 00069 00070 //LEDModule 00071 //R1,R2,G1,G2,B1,B2はモジュールによりコネクタのピンアサインが異なります。 00072 //色が違う場合DigitalOutのピンアサインを変更してください。 00073 00074 //R1 - D4(PB5) 00075 //R2 - D5(PB4) 00076 //G1 - D6(PB10) 00077 //G2 - D7(PA8) 00078 //B1 - D2(PA10) 00079 //B2 - D3(PB3) 00080 //or 00081 //R1 - D6(PB5) 00082 //R2 - D7(PB4) 00083 //G1 - D2(PB10) 00084 //G2 - D3(PA8) 00085 //B1 - D4(PA10) 00086 //B2 - D5(PB3) 00087 00088 //A - D8(PA9) 00089 //B - D9(PC7) 00090 //C - PB13 00091 //D - PC5 00092 00093 //CLK - PB14 00094 //LAT - PB15 00095 //OE - PB1 00096 00097 BusOut ABC(D8,D9,PB_13,PC_5); // Row address. 00098 DigitalOut CLK(PB_14); // Data clock - rising edge 00099 DigitalOut LAT(PB_15); // Data latch - active low (pulse up after data load) 00100 DigitalOut OE(PB_1); // Output enable - active low (hold high during data load, bring low after LAT pulse) 00101 00102 DigitalOut R1(D4); // RED Serial in for upper half 00103 DigitalOut R2(D5); // RED Serial in for lower half 00104 DigitalOut G1(D6); // GREEN Serial in for upper half 00105 DigitalOut G2(D7); // GREEN Serial in for lower half 00106 DigitalOut B1(D2); // BLUE Serial in for upper half 00107 DigitalOut B2(D3); // BLUE Serial in for lower half 00108 00109 00110 //SumSW(現状未使用) 00111 DigitalOut SCK(PB_7); 00112 DigitalOut SI(PC_13); 00113 DigitalOut RCK(PC_14); 00114 00115 DigitalIn SumSW1(PA_0); 00116 DigitalIn SumSW2(PA_1); 00117 DigitalIn SumSW4(PA_4); 00118 DigitalIn SumSW8(PB_0); 00119 //BusIn SumSWNum(PA_0,PA_1,PA_4,PB_0); 00120 00121 DigitalIn Button1 (USER_BUTTON); 00122 00123 //表示切替用タイマ 00124 Ticker ChangeTimer; 00125 //表示切替用タイマ(テスト表示用) 00126 Ticker ChangeTimerTest; 00127 00128 00129 //スクロール用タイマ 00130 Ticker ScrollTimer; 00131 00132 00133 00134 00135 00136 00137 //Debug 00138 bool Debug = 0; 00139 00140 00141 //Mode(未使用?) 00142 //1固定 00143 int WriteMode = 1; 00144 00145 00146 00147 //1:3段階 LEDBuffer-LEDBuffer2-LEDBuffer3 00148 //2:2段階 LEDBuffer5-LEDBuffer6 00149 //3:固定 LEDBuffer 00150 //4:2段階 LEDBuffer2-LEDBuffer3(次駅あり) 00151 //5:4段階 LEDBuffer-LEDBuffer4-LEDBuffer2-LEDBuffer3 00152 int DisplayMode = 1; 00153 00154 //スクロール有効/無効 00155 bool Scroll = 1; 00156 00157 //起動時スクロール読み込み有効/無効(SDがない場合0にする) 00158 //(1になっている場合SDカードが刺さっていないと起動に数分かかります) 00159 bool ScrollEnable = 1; 00160 00161 00162 int ChangeCount = 0; 00163 //テスト表示用 00164 int ChangeCountTest = 0; 00165 //路線コード 00166 int LineNumber = 1; 00167 //種別コード 00168 int KindNumber = 22; 00169 //行先コード 00170 int ForNumber = 114; 00171 //次駅コード 00172 int NextStaNumber = 1; 00173 //運用パターン番号 00174 int RoutePatternNumber = 1; 00175 //始発駅コード 00176 int DeptStaNumber = 3; 00177 //終着駅コード 00178 int TermStaNumber = 32; 00179 00180 00181 char SerialBuffer[60]; 00182 //シリアル処理用バッファ 00183 char ABuffer[60]; 00184 bool busyflag = false; 00185 int count = 0; 00186 00187 //スクロール用変数 00188 int ScrollCount = 0; 00189 int ScrollWriteCount = 80; 00190 00191 00192 //SDCardFilePath 00193 char SDFilePath[80]= "/sd/a.txt"; 00194 00195 unsigned long CT; 00196 00197 //StopStationCode:停車駅コード(最大100駅 それ以上の場合MaxStopStationを増やしてください) 00198 //停車駅コード終端は0にする 00199 //StationNameLength:駅名の文字数(最大8文字) 00200 int StopStationCode[MaxStopStation] = {320,319,318,317,316,315,314,313,312,311,310,309,308,307,306,305,304,303,302,301,351,352,353,354,355,356,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,0}; 00201 int StationNameLength[100] = {0,2,2,4,3,3,3,3,3,4,3,2,3,3,2,3,4,2,3,3,2,3,4,5,3,4,2,2,2,2,3,4,2,3,2,3,3,2,2,2,2,3,3,2,2,3,3,7,4,2,3,1,5,3,3,3,8,3}; 00202 00203 00204 00205 00206 int8_t LEDBuffer [32][LED_Width] = { 00207 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00208 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00209 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00210 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00211 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00212 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00213 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00214 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00215 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00216 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,15,15,15,15,15,15,7,7,7,7,7,7,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00217 {0,0,0,0,15,15,15,15,15,15,15,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00218 {15,15,15,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00219 {0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,15,15,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00220 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00221 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,0,0,0,0,0,0,0,0,7,7,7,0,0,7,7,7,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,0,0,0,0}, 00222 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,0,0,0,0,0,0,0,0,7,7,7,0,0,7,7,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,7,7,7,15,0,0,0,0,0,0,0,0,0,15,7,7,7,0,0,0,0,0}, 00223 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,7,0,0,0,0,0,0,0,7,7,7,0,0,7,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,7,7,7,15,0,0,0,0,0,0,0,15,7,7,7,0,0,0,0,0,0}, 00224 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,7,7,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,15,0,0,0,0,0,15,7,7,7,0,0,0,0,0,0,0}, 00225 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,7,7,7,0,0,0,0,0,7,7,7,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,15,0,0,0,15,7,7,7,0,0,0,0,0,0,0,0}, 00226 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,7,7,7,7,0,0,0,0,7,7,7,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,15,0,15,7,7,7,0,0,0,0,0,0,0,0,0}, 00227 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,7,7,7,7,7,0,0,0,7,7,7,0,0,0,0,0,0,7,7,7,15,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,7,7,15,1,15,7,7,0,0,0,0,0,0,0,0,0,0}, 00228 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,0,7,7,7,7,7,0,0,7,7,7,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0}, 00229 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,0,0,7,7,7,7,7,0,7,7,7,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0}, 00230 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,0,0,0,7,7,7,7,7,7,7,7,0,0,0,0,0,0,7,7,7,15,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,15,7,1,1,1,7,15,0,0,0,0,0,0,0,0,0,0}, 00231 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,0,0,0,0,7,7,7,7,7,7,7,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,0,7,7,7,15,0,0,0,0,0,0,0,0,0}, 00232 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,0,0,0,0,0,7,7,7,7,7,7,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,0,0,0,7,7,7,15,0,0,0,0,0,0,0,0}, 00233 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,0,0,0,0,0,0,7,7,7,7,7,0,0,0,0,0,0,7,7,7,15,15,15,15,15,15,15,15,15,15,15,0,0,0,0,15,7,7,7,0,0,0,0,0,7,7,7,15,0,0,0,0,0,0,0}, 00234 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,0,0,0,0,0,0,0,7,7,7,7,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,15,7,7,7,0,0,0,0,0,0,0,7,7,7,15,0,0,0,0,0,0}, 00235 {14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,7,7,7,14,14,14,14,14,14,14,14,7,7,7,14,14,14,14,14,14,7,7,7,7,7,7,7,7,7,7,7,7,7,7,14,14,15,7,7,7,14,14,14,14,14,14,14,14,14,7,7,7,15,14,14,14,14,14}, 00236 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,1,1,1,1,1,1,1,1,1,7,7,1,1,1,1,1,1,7,7,7,7,7,7,7,7,7,7,7,7,7,7,1,1,7,7,7,1,1,1,1,1,1,1,1,1,1,1,7,7,7,1,1,1,1,1}, 00237 {14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14}, 00238 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} 00239 00240 00241 }; 00242 00243 int8_t LEDBuffer2[32][LED_Width] = { 00244 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00245 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,7,7,7,7,0,0,7,7,7,7,7,7,7,7,7,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,7,7,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00246 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,7,7,7,7,0,7,7,7,7,7,7,7,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,7,7,0,0,7,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0}, 00247 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,7,7,0,0,7,7,7,0,0,0,0,0,0,0,0,0}, 00248 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,7,0,0,0,0,0,7,7,7,7,7,7,7,7,7,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,7,7,7,7,7,7,0,0,7,7,0,7,7,7,0,0,0,0,0,0,0,0,0,0}, 00249 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,7,7,7,7,0,0,0,7,7,7,7,7,7,7,7,7,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,7,7,7,7,7,7,0,0,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0}, 00250 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,0,0,0,7,7,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,7,7,7,7,0,0,7,7,0,0,7,7,0,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0,7,7,0,0,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0}, 00251 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,7,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,7,0,0,0,7,7,0,0,7,7,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,7,7,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00252 {9,7,7,9,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,9,9,9,9,9,9,9,7,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,7,0,0,7,7,0,0,7,7,0,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0,7,7,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00253 {9,7,7,9,7,7,9,7,9,7,7,7,7,7,7,7,7,7,7,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,7,7,7,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00254 {9,7,7,9,7,7,9,7,7,9,9,9,9,9,7,7,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,0,0,0,0,7,0,0,0,7,7,0,0,0,7,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,7,7,7,7,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00255 {9,7,7,9,7,7,9,7,7,9,9,9,9,9,7,7,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,7,7,9,9,9,9,7,7,9,9,0,0,0,7,7,7,0,0,7,7,0,0,7,7,7,0,0,0,0,0,0,7,7,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,7,7,7,7,7,7,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0}, 00256 {9,7,7,9,7,7,9,7,7,9,9,9,9,9,7,7,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,7,7,9,9,9,9,7,7,9,9,0,0,7,7,7,0,0,0,7,7,0,0,0,7,7,7,7,0,0,0,7,7,7,0,7,7,7,7,0,0,0,7,7,7,7,0,0,0,0,0,7,7,7,0,7,7,0,7,7,7,0,0,0,0,0,7,7,7,7,0,7,7,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0}, 00257 {9,7,7,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,7,7,9,9,9,9,7,7,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,0,7,7,7,0,0,7,7,7,7,0,0,0,0,7,7,7,7,0,7,7,7,0,7,7,7,7,0,0,0,0,0,7,7,7,7,0,7,7,7,7,7,0,0,7,7,0,0,7,7,7,7,7,0,0,0,7,0,0,0,7,7,0,0,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0}, 00258 {9,7,7,9,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,7,7,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,0,0,7,0,0,0,0,7,7,0,0,0,0,0,0,7,7,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,7,0,0,7,7,7,7,0,0,0,7,7,0,0,0,7,7,7,7,0,0,0,0,0,0,0,7,7,0,0,0,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0}, 00259 {9,9,9,9,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,9,9,9,7,7,9,9,9,9,9,9,9,7,7,7,7,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00260 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,7,7,7,7,7,7,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,7,7,0,0,0,0,0}, 00261 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,7,7,7,7,7,7,7,7,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,7,7,7,7,7,7,7,7,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,7,7,7,0,0,0,7,7,7,7,7,7,7,7,0,0}, 00262 {9,9,9,9,7,7,9,9,9,9,9,9,9,7,7,7,7,7,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,7,7,7,7,9,7,7,9,7,7,7,7,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,7,7,7,7,7,7,7,7,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,7,7,0,7,0,0,7,7,7,7,7,7,7,7,0,0}, 00263 {9,9,9,9,7,7,9,9,9,9,9,9,9,7,7,9,7,7,9,9,9,9,9,9,9,9,9,9,7,7,9,7,7,7,7,7,9,9,7,7,9,9,7,7,7,7,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,0,0,0,0,7,7,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,7,7,0,7,7,0,0,7,7,0,0,0,0,7,7,0,0}, 00264 {9,9,9,9,7,7,9,9,9,9,9,9,7,7,7,9,7,7,7,9,9,9,9,9,9,9,9,9,7,7,9,7,7,7,9,9,9,9,7,7,9,9,9,9,7,7,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,0,0,7,7,7,7,7,7,7,7,0,0}, 00265 {9,9,9,9,7,7,9,9,9,9,9,7,7,7,9,9,9,7,7,7,9,9,9,9,9,9,9,7,7,7,7,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,7,7,7,7,7,7,7,7,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,7,7,7,7,0,0,0,7,7,0,0,0,0,7,7,0,0}, 00266 {9,9,9,9,7,7,9,9,9,7,7,7,7,9,9,9,9,9,7,7,7,9,9,9,9,9,7,7,7,7,7,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,7,7,7,0,0,7,7,0,0,0,0,7,7,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,7,7,0,7,7,0,7,7,7,7,7,7,7,7,0,0}, 00267 {9,9,9,9,7,7,9,7,7,7,7,7,9,9,9,9,9,9,9,7,7,7,7,9,9,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,0,0,0,0,0,7,7,7,7,0,7,7,7,7,7,7,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,0,0}, 00268 {9,9,9,9,7,7,9,7,7,7,9,9,9,9,9,9,9,9,9,9,7,7,7,9,9,9,7,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,0,0,7,7,0,7,7,7,7,7,7,7,7,7,7,0,0,0,7,7,7,7,7,7,7,7,0,0,0,7,7,0,0,0,7,0}, 00269 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,7,7,7,7,7,0,7,7,7,0,7,7,0,0,0,7,7,0,0,0,7,7,0,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,7,7,0,7,7,7,7,0,7,7,7,0,0,7,0}, 00270 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,7,0,0,7,7,0,7,7,7,0,7,7,0,0,0,0,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,7,7,0,7,7,7,0,0,0,7,0,7,7,7,0,7,0,0}, 00271 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,7,7,0,0,7,7,7,7,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,7,7,0,7,7,0,7,0,0,7,0,7,7,7,7,0,0,0}, 00272 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,7,7,0,7,7,0,7,0,7,7,0,7,7,0,7,0,0,0}, 00273 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,7,7,7,7,0,7,7,7,0,0,0,0,7,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,7,7,0,7,7,0,0,0,7,0,0,7,7,0,7,7,0,0}, 00274 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,7,7,0,0,0,7,7,7,7,0,7,7,7,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,7,7,0,0,7,7,0}, 00275 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,0,0,0,0,0,7,7,0,0,0,7,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0} 00276 00277 }; 00278 00279 int8_t LEDBuffer3[32][LED_Width] = { 00280 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00281 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00282 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,7,7,0,7,7,0,0,0,0,0,0,0,0,0,0}, 00283 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,7,7,0,7,7,0,0,0,0,0,0,0,0,0,0}, 00284 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,0,0,0,7,7,0,7,7,0,0,0,0,0,0,0,0,0,0}, 00285 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,0,0,0,7,7,0,7,7,7,0,0,0,0,0,0,0,0,0}, 00286 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,7,7,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0}, 00287 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,7,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0}, 00288 {9,7,7,9,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,9,9,9,9,9,9,9,7,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,7,7,7,0,0,0,7,7,7,0,0,0,0,0,0,0,0}, 00289 {9,7,7,9,7,7,9,7,9,7,7,7,7,7,7,7,7,7,7,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,7,7,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0}, 00290 {9,7,7,9,7,7,9,7,7,9,9,9,9,9,7,7,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,7,7,7,7,7,0,0,0,0,0,7,7,7,7,0,0,0,0,0,0}, 00291 {9,7,7,9,7,7,9,7,7,9,9,9,9,9,7,7,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,7,7,9,9,9,9,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,0,7,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0}, 00292 {9,7,7,9,7,7,9,7,7,9,9,9,9,9,7,7,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,7,7,9,9,9,9,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00293 {9,7,7,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,7,7,9,9,9,9,7,7,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,7,7,0,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0}, 00294 {9,7,7,9,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,7,7,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0}, 00295 {9,9,9,9,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,9,9,9,7,7,9,9,9,9,9,9,9,7,7,7,7,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0}, 00296 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,7,7,7,7,7,7,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0}, 00297 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,7,7,7,7,7,7,7,7,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0}, 00298 {9,9,9,9,7,7,9,9,9,9,9,9,9,7,7,7,7,7,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,7,7,7,7,9,7,7,9,7,7,7,7,9,9,9,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0}, 00299 {9,9,9,9,7,7,9,9,9,9,9,9,9,7,7,9,7,7,9,9,9,9,9,9,9,9,9,9,7,7,9,7,7,7,7,7,9,9,7,7,9,9,7,7,7,7,7,9,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,7,7,0,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0}, 00300 {9,9,9,9,7,7,9,9,9,9,9,9,7,7,7,9,7,7,7,9,9,9,9,9,9,9,9,9,7,7,9,7,7,7,9,9,9,9,7,7,9,9,9,9,7,7,7,9,0,0,0,0,0,0,0,0,7,7,7,7,0,0,0,0,0,0,0,0,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,7,7,0,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0}, 00301 {9,9,9,9,7,7,9,9,9,9,9,7,7,7,9,9,9,7,7,7,9,9,9,9,9,9,9,7,7,7,7,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,0,0,0,0,0,0,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,7,7,0,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0}, 00302 {9,9,9,9,7,7,9,9,9,7,7,7,7,9,9,9,9,9,7,7,7,9,9,9,9,9,7,7,7,7,7,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,7,0,0,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0}, 00303 {9,9,9,9,7,7,9,7,7,7,7,7,9,9,9,9,9,9,9,7,7,7,7,9,9,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00304 {9,9,9,9,7,7,9,7,7,7,9,9,9,9,9,9,9,9,9,9,7,7,7,9,9,9,7,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00305 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00306 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,7,0,7,7,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00307 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,7,7,7,0,0,7,0,0,0,7,0,7,7,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00308 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,7,0,0,0,7,0,0,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00309 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,7,7,0,7,0,0,0,7,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00310 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,7,0,0,0,0,7,7,0,7,0,7,0,0,0,7,0,0,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00311 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} 00312 00313 }; 00314 00315 int8_t LEDBuffer4[32][LED_Width] = { 00316 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00317 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00318 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,7,7,0,7,7,0,0,0,0,0,0,0,0,0,0}, 00319 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,7,7,0,7,7,0,0,0,0,0,0,0,0,0,0}, 00320 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,0,0,0,7,7,0,7,7,0,0,0,0,0,0,0,0,0,0}, 00321 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,0,0,0,7,7,0,7,7,7,0,0,0,0,0,0,0,0,0}, 00322 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,7,7,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0}, 00323 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,7,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0}, 00324 {9,7,7,9,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,9,9,9,9,9,9,9,7,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,7,7,7,0,0,0,7,7,7,0,0,0,0,0,0,0,0}, 00325 {9,7,7,9,7,7,9,7,9,7,7,7,7,7,7,7,7,7,7,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,7,7,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0}, 00326 {9,7,7,9,7,7,9,7,7,9,9,9,9,9,7,7,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,7,7,7,7,7,0,0,0,0,0,7,7,7,7,0,0,0,0,0,0}, 00327 {9,7,7,9,7,7,9,7,7,9,9,9,9,9,7,7,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,7,7,9,9,9,9,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,0,7,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0}, 00328 {9,7,7,9,7,7,9,7,7,9,9,9,9,9,7,7,9,9,9,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,7,7,9,9,9,9,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00329 {9,7,7,9,7,7,9,9,9,9,9,9,9,9,7,7,9,9,9,7,7,9,9,9,9,7,7,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,7,7,0,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0}, 00330 {9,7,7,9,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,7,7,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0}, 00331 {9,9,9,9,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,9,9,9,7,7,9,9,9,9,9,9,9,7,7,7,7,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0}, 00332 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,7,7,7,7,7,7,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0}, 00333 {9,9,9,9,7,7,9,9,9,9,9,9,9,9,7,7,7,9,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,9,9,7,7,7,7,7,7,7,7,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0}, 00334 {9,9,9,9,7,7,9,9,9,9,9,9,9,7,7,7,7,7,9,9,9,9,9,9,9,9,9,9,7,7,9,9,9,7,7,7,7,9,7,7,9,7,7,7,7,9,9,9,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,0,7,7,0,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0}, 00335 {9,9,9,9,7,7,9,9,9,9,9,9,9,7,7,9,7,7,9,9,9,9,9,9,9,9,9,9,7,7,9,7,7,7,7,7,9,9,7,7,9,9,7,7,7,7,7,9,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,7,7,0,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0}, 00336 {9,9,9,9,7,7,9,9,9,9,9,9,7,7,7,9,7,7,7,9,9,9,9,9,9,9,9,9,7,7,9,7,7,7,9,9,9,9,7,7,9,9,9,9,7,7,7,9,0,0,0,0,0,0,0,0,7,7,7,7,0,0,0,0,0,0,0,0,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,7,7,0,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0}, 00337 {9,9,9,9,7,7,9,9,9,9,9,7,7,7,9,9,9,7,7,7,9,9,9,9,9,9,9,7,7,7,7,9,9,9,9,9,9,9,7,7,9,9,9,9,9,9,9,9,0,0,0,0,0,0,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,7,7,0,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0}, 00338 {9,9,9,9,7,7,9,9,9,7,7,7,7,9,9,9,9,9,7,7,7,9,9,9,9,9,7,7,7,7,7,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,7,0,0,7,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0}, 00339 {9,9,9,9,7,7,9,7,7,7,7,7,9,9,9,9,9,9,9,7,7,7,7,9,9,7,7,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00340 {9,9,9,9,7,7,9,7,7,7,9,9,9,9,9,9,9,9,9,9,7,7,7,9,9,9,7,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00341 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00342 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,7,0,7,7,0,0,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00343 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,7,7,7,0,0,7,0,0,0,7,0,7,7,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00344 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,7,0,0,0,7,0,0,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00345 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,7,7,0,7,0,0,0,7,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00346 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,7,0,0,0,0,7,7,0,7,0,7,0,0,0,7,0,0,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 00347 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} 00348 00349 }; 00350 00351 int8_t LEDBuffer5[32][LED_Width] = { 00352 00353 }; 00354 00355 int8_t LEDBuffer6[32][LED_Width] = { 00356 00357 }; 00358 int8_t LEDMainBuffer[32][LED_Width] = { 00359 00360 }; 00361 00362 int8_t ScrollBuffer[16][2048] = { 00363 00364 }; 00365 00366 00367 //01 Red 00368 //02 Green 00369 //03 Blue 00370 //04 Yellow(R,G) 00371 //05(G,B) 00372 //06 purple(R,B) 00373 //07 White(R,G,B) 00374 //08 Blue(Keihin-tohoku Line) 00375 //10 Yellow(Nambu Local) 00376 //11 Green (Yokohama Line) 00377 //12 Orange(Rapid Acty,Urban) 00378 //13 Green(Saikyo Line) 00379 //14 00380 //15 00381 //16 Green(Utsunomiya Line) 00382 //17 Green(Joban Local Local) 00383 //18 Keikyu Logo(Gray 00384 00385 bool R1Data[8][32]={ 00386 {0,1,0,0,1,0,1,1,0,1,1,1,1,0,1,1,0,0,1}, 00387 {0,1,0,0,1,0,1,1,0,1,1,0,1,0,0,0,0,0,1}, 00388 {0,1,0,0,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0}, 00389 {0,1,0,0,1,0,1,1,0,1,0,0,1,0,0,0,0,0,0}, 00390 00391 {0,1,0,0,1,0,1,1,0,1,1,1,1,0,1,1,0,0,1}, 00392 {0,1,0,0,1,0,1,1,0,1,1,0,1,0,0,0,0,0,1}, 00393 {0,1,0,0,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0}, 00394 {0,1,0,0,1,0,1,1,0,1,0,0,1,0,0,0,0,0,0} 00395 }; 00396 00397 bool G1Data[8][32]={ 00398 {0,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,1,1}, 00399 {0,0,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,1}, 00400 {0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0}, 00401 {0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0}, 00402 00403 {0,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,1,1}, 00404 {0,0,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,1}, 00405 {0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0}, 00406 {0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0} 00407 }; 00408 00409 bool B1Data[8][32]={ 00410 {0,0,0,1,0,1,1,1,1,1,0,0,0,0,0,1,0,1,1}, 00411 {0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1}, 00412 {0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0}, 00413 {0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0}, 00414 00415 {0,0,0,1,0,1,1,1,1,1,0,0,0,0,0,1,0,1,1}, 00416 {0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1}, 00417 {0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0}, 00418 {0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0} 00419 }; 00420 00421 00422 00423 void Init() 00424 { 00425 //pc.baud(9600); 00426 // Set up things to a known state 00427 CLK = LOW; 00428 LAT = LOW; 00429 OE = HIGH; //display off 00430 ABC = 0; 00431 CT=0; 00432 00433 } 00434 00435 void WriteRow(unsigned char Row, int8_t Buffer[32][LED_Width], int8_t index2) 00436 { 00437 ABC = 15-Row; 00438 for(int col=0; col<LED_Width; col++) { 00439 R1 = R1Data[index2][(Buffer [(15-Row)][col])]; 00440 G1 = G1Data[index2][(Buffer [(15-Row)][col])]; 00441 B1 = B1Data[index2][(Buffer [(15-Row)][col])]; 00442 R2 = R1Data[index2][(Buffer [(31-Row)][col])]; 00443 G2 = G1Data[index2][(Buffer [(31-Row)][col])]; 00444 B2 = B1Data[index2][(Buffer [(31-Row)][col])]; 00445 CLK = HIGH; 00446 CLK = LOW; 00447 } 00448 LAT = HIGH; 00449 LAT = LOW; 00450 } 00451 00452 void WrRowOFF(unsigned char Row) 00453 { 00454 // Write specified row (and row+8) to display. Valid input: 0 to 7. 00455 ABC = 15-Row; // Set row address 00456 for(int col=0; col<LED_Width; col++) { // To daisychain more displays, I guess you would have to increase this counter to n*32 columns. Might mirror though. 00457 R1 = 0; // Red bit, upper half 00458 G1 = 0; // Green bit, upper half 00459 B1 = 0; // Blue bit, upper half 00460 R2 = 0; // Red bit, lower half 00461 G2 = 0; // Green bit, lower half 00462 B2 = 0; // Blue bit, lower half 00463 CLK = HIGH; // tick (clock bit in) 00464 CLK = LOW; // tock 00465 } 00466 LAT = HIGH; // Latch entire row 00467 LAT = LOW; 00468 } 00469 00470 void Paint(int8_t Buffer2[32][LED_Width]) 00471 { 00472 for(int index = 0; index < 4; index++){ 00473 for(int Row=0; Row<LED_Height; Row++) { 00474 OE = HIGH; // Disable output 00475 WriteRow(Row,Buffer2,index); 00476 //wait_us(5); 00477 OE = LOW; // Enable output 00478 wait_us(DisplayWait); // Wasting some time. Use for whatever else. Probably better with a ticker for the display refresh. 00479 OE = HIGH; // Disable output 00480 } 00481 } 00482 } 00483 00484 00485 void PaintOFF() 00486 { 00487 // Write graphics memory to display 00488 for(int Row=0; Row<8; Row++) { 00489 OE = HIGH; // Disable output 00490 WrRowOFF(Row); 00491 OE = LOW; // Enable output 00492 wait_us(50); // Wasting some time. Use for whatever else. Probably better with a ticker for the display refresh. 00493 } 00494 } 00495 00496 void CopyBuffer(int8_t ReadBuffer[32][LED_Width],int8_t WriteBuffer[32][LED_Width]){ 00497 for(int y = 0; y < LED_Height * 2; y++){ 00498 if(Scroll != 0 && y > 15 ){ 00499 for(int x = 0; x < LED_Width - 80; x++){ 00500 WriteBuffer[y][x] = ReadBuffer[y][x]; 00501 } 00502 }else{ 00503 for(int x = 0; x < LED_Width; x++){ 00504 WriteBuffer[y][x] = ReadBuffer[y][x]; 00505 } 00506 } 00507 } 00508 } 00509 00510 //バッファ初期化 00511 void ClearBuffer(int8_t TargetBuffer[32][LED_Width]){ 00512 for(int y = 0; y < LED_Height * 2; y++){ 00513 for(int x = 0; x < LED_Width; x++){ 00514 TargetBuffer[y][x] = 0; 00515 } 00516 } 00517 00518 } 00519 00520 00521 void CopyScrollBuffer(int8_t ReadBuffer[16][2048],int8_t WriteBuffer[32][LED_Width],int Startx){ 00522 for(int y = 0; y < 16; y++){ 00523 int xCount = 0; 00524 for(int x = 0; x < 80; x++){ 00525 if(bitRead(ScrollBuffer[y][(x + Startx) / 8 ], (x + Startx)% 8) != 0){ 00526 LEDMainBuffer[y + 16][x + 48] = 4; 00527 }else{ 00528 LEDMainBuffer[y + 16][x + 48] = 0; 00529 } 00530 xCount = xCount + 1; 00531 } 00532 } 00533 } 00534 00535 //1文字256byte 00536 void CopyScrollBuffer2(int8_t ReadBuffer[16][2048],int8_t WriteBuffer[32][LED_Width],int Startx){ 00537 for(int y = 0; y < 16; y++){ 00538 for(int x = 0; x < 80; x++){ 00539 LEDMainBuffer[y + 16][x + 48] = ScrollBuffer[y][x + Startx]; 00540 } 00541 } 00542 } 00543 00544 //書込み対象バッファ,書込み開始位置x,書込み開始位置y,読み出し幅x,読み出し高さy,読み出し開始位置(バイト) 00545 bool SDBufferWrite(int8_t TargetBuffer[32][LED_Width], int Startx, int Starty, int Readx, int Ready, int StartByte ){ 00546 FILE *fp = fopen(SDFilePath, "r"); 00547 if(fp == NULL) { 00548 pc.printf("SDFileOpen Error %s\r\n",SDFilePath); 00549 //error("Could not open file for write\r\n"); 00550 return 1; 00551 }else{ 00552 //pc.printf("SDFileOpen Success %s\r\n",SDFilePath); 00553 00554 //SDDataReadtest 00555 int8_t Data; 00556 //先頭2バイトはヘッダ 00557 fseek(fp, 2 + StartByte, SEEK_SET); 00558 00559 for(int y = Starty; y < Starty + Ready; y++){ 00560 for(int x = Startx; x < Startx + Readx; x++){ 00561 Data = getc(fp); 00562 TargetBuffer[y][x] = Data; 00563 } 00564 } 00565 fclose(fp); 00566 return 0; 00567 } 00568 } 00569 00570 //スクロールバッファへの書込み用 読み出し高さは16固定 00571 //書込み対象バッファ,書込み開始位置x,書込み開始位置y,読み出し幅x,読み出し高さy 00572 void SDScrollBufferWrite(int8_t TargetBuffer[16][2048], int Startx, int Starty, int Readx, int Ready){ 00573 //pc.printf("SDScrollBufferWrite\r\n"); 00574 FILE *fp = fopen(SDFilePath, "r"); 00575 if(fp == NULL) { 00576 pc.printf("SDFileOpen Error %s\r\n",SDFilePath); 00577 //error("Could not open file for write\r\n"); 00578 }else{ 00579 //pc.printf("SDFileOpen Success %s\r\n",SDFilePath); 00580 00581 //SDDataReadtest 00582 int8_t Data; 00583 //先頭2バイトはヘッダ 00584 fseek(fp, 2, SEEK_SET); 00585 for(int y = Starty; y < Starty + Ready; y++){ 00586 for(int x = Startx; x < Startx + Readx; x++){ 00587 Data = getc(fp); 00588 00589 00590 //TargetBuffer[y][x] = Data; 00591 00592 if(Data != 0){ 00593 bitSet(TargetBuffer[y][x / 8],x % 8); 00594 }else{ 00595 bitClear(TargetBuffer[y][x / 8],x % 8); 00596 } 00597 } 00598 } 00599 fclose(fp); 00600 } 00601 } 00602 00603 //路線名表示の使用領域チェック 00604 //路線名表示時に次停車駅を表示するかどうかの判断に使用 00605 //路線名が下半分も使用しているなら次停車駅は表示しない 00606 bool BufferBlankCheck(){ 00607 bool NotBlankflag = 0; 00608 for(int y = 16; y < 32; y++){ 00609 for(int x = 48; x < 128; x++){ 00610 if(LEDBuffer[y][x] != 0){ 00611 NotBlankflag = 1; 00612 } 00613 if(NotBlankflag == 1){ 00614 break; 00615 } 00616 } 00617 if(NotBlankflag == 1){ 00618 break; 00619 } 00620 } 00621 if(NotBlankflag == 0){ 00622 pc.printf("Blank\r\n"); 00623 return 0; 00624 }else{ 00625 pc.printf("Not Blank\r\n"); 00626 return 1; 00627 } 00628 } 00629 00630 void TimerTick(){ 00631 //OE = HIGH; 00632 //DisplayMode = 1 3段階表示ならば 00633 if(DisplayMode == 1){ 00634 if (ChangeCount == 0){ 00635 CopyBuffer(LEDBuffer,LEDMainBuffer); 00636 ChangeCount = ChangeCount + 1; 00637 }else if(ChangeCount == 1 ){ 00638 CopyBuffer(LEDBuffer2,LEDMainBuffer); 00639 ChangeCount = ChangeCount + 1; 00640 //ChangeCount = 0; 00641 }else if(ChangeCount == 2){ 00642 CopyBuffer(LEDBuffer3,LEDMainBuffer); 00643 ChangeCount = 0; 00644 }else{ 00645 ChangeCount = 0; 00646 } 00647 } 00648 //DisplayMode = 2 2段階表示ならば 00649 //次駅表示なし2段階表示に使用 00650 00651 if (DisplayMode == 2){ 00652 00653 if(ChangeCount == 0 ){ 00654 //CopyBuffer(LEDBuffer,LEDMainBuffer); 00655 CopyBuffer(LEDBuffer5,LEDMainBuffer); 00656 ChangeCount = ChangeCount + 1; 00657 }else if(ChangeCount == 1){ 00658 //CopyBuffer(LEDBuffer2,LEDMainBuffer); 00659 CopyBuffer(LEDBuffer6,LEDMainBuffer); 00660 ChangeCount = 0; 00661 }else{ 00662 ChangeCount = 0; 00663 } 00664 } 00665 //DisplayMode = 3 ならば LEDBuffer2を固定表示 00666 if (DisplayMode == 3){ 00667 CopyBuffer(LEDBuffer,LEDMainBuffer); 00668 ChangeCount = 1; 00669 } 00670 00671 //2段階表示 次駅表示あり、路線名なしパターンに使用 00672 if(DisplayMode == 4){ 00673 if(ChangeCount == 1 ){ 00674 CopyBuffer(LEDBuffer2,LEDMainBuffer); 00675 ChangeCount = ChangeCount + 1; 00676 }else{ 00677 CopyBuffer(LEDBuffer3,LEDMainBuffer); 00678 ChangeCount = 1; 00679 } 00680 } 00681 00682 //DisplayMode = 5 5段階表示ならば 00683 if(DisplayMode == 5){ 00684 if (ChangeCount == 0){ 00685 CopyBuffer(LEDBuffer,LEDMainBuffer); 00686 ChangeCount = ChangeCount + 1; 00687 }else if(ChangeCount == 1 ){ 00688 CopyBuffer(LEDBuffer4,LEDMainBuffer); 00689 ChangeCount = ChangeCount + 1; 00690 //ChangeCount = 0; 00691 }else if(ChangeCount == 2){ 00692 CopyBuffer(LEDBuffer2,LEDMainBuffer); 00693 ChangeCount = ChangeCount + 1; 00694 }else if(ChangeCount == 3){ 00695 CopyBuffer(LEDBuffer3,LEDMainBuffer); 00696 ChangeCount = 0; 00697 }else{ 00698 ChangeCount = 0; 00699 } 00700 } 00701 00702 //OE = LOW; 00703 //クロック確認 00704 //pc.printf("CPU SystemCoreClock is %.2f MHz\r\n", (float)SystemCoreClock/1000/1000); 00705 } 00706 00707 void TestDisplayTimerTick(){ 00708 00709 if (ChangeCountTest <= 10){ 00710 sprintf(SDFilePath,"/sd/E233/LEDTest/LEDTest%d.bin",ChangeCountTest); 00711 OE = HIGH; 00712 SDBufferWrite(LEDMainBuffer,0,0,128,32,0); 00713 OE = LOW; 00714 ChangeCountTest = ChangeCountTest + 1; 00715 }else{ 00716 ChangeCountTest = 0; 00717 } 00718 00719 } 00720 00721 void ScrollTimerTick(){ 00722 if(ScrollCount < ScrollWriteCount + 80){ 00723 CopyScrollBuffer(ScrollBuffer,LEDMainBuffer,ScrollCount); 00724 ScrollCount = ScrollCount + 1; 00725 }else{ 00726 ScrollCount = 0; 00727 } 00728 } 00729 00730 00731 00732 00733 00734 void ScrollRead2(){ 00735 //スクロールカウンタを0に戻す 00736 ScrollCount = 0; 00737 //スクロールバッファ初期化 00738 for(int i = 0; i < 2048; i++){ 00739 for(int j = 0; j < 16; j++){ 00740 ScrollBuffer[j][i] = 0; 00741 } 00742 } 00743 00744 00745 //test 00746 //Initialize StopStationCode 00747 for (int x = 0; x < MaxStopStation; x++){ 00748 StopStationCode[x]= 0; 00749 } 00750 00751 int DeptStaIndex = 0; 00752 int TermStaIndex = 0; 00753 //sprintf(SDFilePath,"/sd/E233/RoutePattern/RoutePattern%d.bin",1); 00754 //sprintf(SDFilePath,"/sd/E233/RoutePattern/RoutePattern001001.bin"); 00755 sprintf(SDFilePath,"/sd/E233/RoutePattern/RoutePattern%03d%03d.bin",LineNumber,RoutePatternNumber); 00756 pc.printf("%s\r\n",SDFilePath); 00757 00758 //始発駅インデックス取得 00759 for(int i = 0; i < MaxStopStation; i++){ 00760 FILE *fp = fopen(SDFilePath, "r"); 00761 if(fp == NULL) { 00762 //停車駅データを読み込めないならスクロールを無効にする 00763 pc.printf("SDFileOpen Error %s\r\n",SDFilePath); 00764 Scroll = 0; 00765 break; 00766 }else{ 00767 //停車駅コード取得 00768 int test = 0; 00769 int test2 = 0; 00770 fseek(fp, i*2 + 4, SEEK_SET); 00771 test = getc(fp); 00772 test = test << 8; 00773 00774 fseek(fp, i*2 + 4 + 1, SEEK_SET); 00775 test2 = getc(fp); 00776 test = test ^ test2; 00777 fclose(fp); 00778 if(test == DeptStaNumber){ 00779 DeptStaIndex = i + 1; 00780 pc.printf("DeptStaIndex:%d\r\n",DeptStaIndex); 00781 pc.printf("break\r\n"); 00782 break; 00783 00784 } 00785 } 00786 pc.printf("DeptSta-loopcount:%d\r\n",i); 00787 } 00788 00789 //終着駅インデックス取得 00790 for(int i = 0; i < MaxStopStation; i++){ 00791 FILE *fp = fopen(SDFilePath, "r"); 00792 if(fp == NULL) { 00793 //停車駅データを読み込めないならスクロールを無効にする 00794 pc.printf("SDFileOpen Error %s\r\n",SDFilePath); 00795 Scroll = 0; 00796 break; 00797 }else{ 00798 //停車駅コード取得 00799 int test = 0; 00800 int test2 = 0; 00801 fseek(fp, i*2 + 4, SEEK_SET); 00802 test = getc(fp); 00803 test = test << 8; 00804 00805 fseek(fp, i*2 + 4 + 1, SEEK_SET); 00806 test2 = getc(fp); 00807 test = test ^ test2; 00808 fclose(fp); 00809 if(test == TermStaNumber){ 00810 TermStaIndex = i + 1; 00811 pc.printf("TermStaIndex:%d\r\n",TermStaIndex); 00812 pc.printf("break\r\n"); 00813 break; 00814 00815 } 00816 } 00817 pc.printf("TermSta-loopcount:%d\r\n",i); 00818 } 00819 00820 00821 if(DeptStaIndex != 0 && TermStaIndex != 0){ 00822 //SDRead StopStationCode 00823 //始発駅インデックス < 終着駅インデックスなら 00824 if(DeptStaIndex < TermStaIndex){ 00825 for(int i = 0; i < MaxStopStation; i++){ 00826 //停車駅コード取得 00827 int test = 0; 00828 int test2 = 0; 00829 00830 FILE *fp = fopen(SDFilePath, "r"); 00831 if(fp == NULL) { 00832 //停車駅データを読み込めないならスクロールを無効にする 00833 pc.printf("SDFileOpen Error %s\r\n",SDFilePath); 00834 Scroll = 0; 00835 break; 00836 }else{ 00837 //pc.printf("SDFileOpen Success %s\r\n",SDFilePath); 00838 fseek(fp, DeptStaIndex*2 + i*2 + 4, SEEK_SET); 00839 test = getc(fp); 00840 test = test << 8; 00841 00842 fseek(fp, DeptStaIndex*2 + i*2 + 4 + 1, SEEK_SET); 00843 test2 = getc(fp); 00844 test = test ^ test2; 00845 00846 StopStationCode[i] = test; 00847 pc.printf("StopStationCode[%d]:%d\r\n",i,StopStationCode[i]); 00848 00849 //読み込んだ駅名コードが終着駅コードと同じならばループを抜ける 00850 if(StopStationCode[i] == TermStaNumber){ 00851 break; 00852 } 00853 fclose(fp); 00854 } 00855 } 00856 } 00857 00858 00859 00860 }else{ 00861 //始発駅インデックス、終着駅インデックスのどちらか、または両方が0の場合運用パターンデータに駅名コードが存在しない 00862 pc.printf("Error DeptStaIndex or TermStaIndex = 0\r\n"); 00863 pc.printf("Error DeptStaIndex:%d,TermStaIndex:%d",DeptStaIndex,TermStaIndex); 00864 Scroll = 0; 00865 } 00866 00867 //test end 00868 00869 //ScrollDebug 00870 ScrollWriteCount = 80; 00871 00872 //この電車の停車駅は、 00873 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",1); 00874 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16); 00875 ScrollWriteCount = ScrollWriteCount + 80; 00876 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",2); 00877 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16); 00878 ScrollWriteCount = ScrollWriteCount + 80; 00879 00880 int StaNameLength = 0; 00881 for(int i = 0; i < MaxStopStation; i++){ 00882 if(StopStationCode[i] == 0){ 00883 //駅名コードが0ならScrollWriteCountから終着駅の文字数 x 16 + 16 を引いてループを抜ける 00884 ScrollWriteCount = ScrollWriteCount - (StaNameLength * 16 + 16); 00885 break; 00886 } 00887 //駅名 00888 sprintf(SDFilePath,"/sd/E233/StationName/%d.bin",StopStationCode[i]); 00889 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,128,16); 00890 00891 //駅名文字数取得 00892 //int test = 0; 00893 sprintf(SDFilePath,"/sd/E233/StationNameLength.bin"); 00894 FILE *fp = fopen(SDFilePath, "r"); 00895 if(fp == NULL) { 00896 pc.printf("SDFileOpen Error %s\r\n",SDFilePath); 00897 }else{ 00898 //pc.printf("SDFileOpen Success %s\r\n",SDFilePath); 00899 fseek(fp, StopStationCode[i], SEEK_SET); 00900 StaNameLength = getc(fp); 00901 //pc.printf("StationNameLength:%d\r\n",StaNameLength); 00902 fclose(fp); 00903 } 00904 00905 ScrollWriteCount = ScrollWriteCount + (StaNameLength * 16); 00906 sprintf(SDFilePath,"/sd/E233/StopStation/0x8132.bin"); 00907 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,16,16); 00908 ScrollWriteCount = ScrollWriteCount + 16; 00909 } 00910 00911 00912 00913 ScrollWriteCount = ScrollWriteCount - 16; 00914 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",3); 00915 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16); 00916 ScrollWriteCount = ScrollWriteCount + 80; 00917 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",4); 00918 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16); 00919 ScrollWriteCount = ScrollWriteCount + 80; 00920 00921 } 00922 00923 00924 void SDFileRead(){ 00925 //バッファ初期化 00926 ClearBuffer(LEDBuffer); 00927 ClearBuffer(LEDBuffer2); 00928 ClearBuffer(LEDBuffer3); 00929 ClearBuffer(LEDBuffer4); 00930 ClearBuffer(LEDBuffer5); 00931 ClearBuffer(LEDBuffer6); 00932 00933 00934 //3段階表示 LEDBuffer [種別]路線名(・次駅) 00935 // LEDBuffer2 [種別]行先・次駅 00936 // LEDBuffer3 [種別(英)]行先(英)・次駅(英) 00937 //路線コードが0なら2段階表示に変更 00938 if(LineNumber == 0){ 00939 DisplayMode = 4; 00940 }else{ 00941 DisplayMode = 1; 00942 } 00943 00944 //SDCard 00945 //種別 00946 sprintf(SDFilePath,"/sd/E233/Kind/%d.bin",KindNumber); 00947 SDBufferWrite(LEDBuffer,0,0,48,32,0); 00948 sprintf(SDFilePath,"/sd/E233/Kind/%d.bin",KindNumber); 00949 SDBufferWrite(LEDBuffer2,0,0,48,32,0); 00950 //種別(英語) 00951 sprintf(SDFilePath,"/sd/E233/KindE/%d.bin",KindNumber); 00952 SDBufferWrite(LEDBuffer3,0,0,48,32,0); 00953 00954 //路線名 00955 sprintf(SDFilePath,"/sd/E233/Line/%d.bin",LineNumber); 00956 //路線名データが読み込めない場合(返って来た値が0でない場合)2段階表示に変更 00957 if(SDBufferWrite(LEDBuffer,48,0,80,32,0) != 0){ 00958 DisplayMode = 4; 00959 } 00960 00961 //行先 00962 sprintf(SDFilePath,"/sd/E233/For/%d.bin",ForNumber); 00963 SDBufferWrite(LEDBuffer2,48,0,80,16,0); 00964 //行先(英語) 00965 //sprintf(SDFilePath,"/sd/E233/ForE/%d.bin",ForNumber); 00966 //SDBufferWrite(LEDBuffer3,48,0,80,16,0); 00967 sprintf(SDFilePath,"/sd/E233/For/%d.bin",ForNumber); 00968 SDBufferWrite(LEDBuffer3,48,0,80,16,1280); 00969 00970 //次停車駅(路線名表示) 00971 //路線名表示の次停車駅は路線名表示が上半分に収まるときのみ表示 00972 if(BufferBlankCheck() == 0){ 00973 sprintf(SDFilePath,"/sd/E233/NextStation/%d.bin",NextStaNumber); 00974 SDBufferWrite(LEDBuffer,48,16,80,16,0); 00975 }else if(Scroll == 1){ 00976 //路線名が下半分も使用している&スクロール有効の場合4段階表示に切り替え 00977 DisplayMode = 5; 00978 sprintf(SDFilePath,"/sd/E233/Kind/%d.bin",KindNumber); 00979 SDBufferWrite(LEDBuffer4,0,0,48,32,0); 00980 sprintf(SDFilePath,"/sd/E233/Line/%d.bin",LineNumber); 00981 SDBufferWrite(LEDBuffer4,48,0,80,16,1280); 00982 } 00983 //次停車駅 00984 sprintf(SDFilePath,"/sd/E233/NextStation/%d.bin",NextStaNumber); 00985 SDBufferWrite(LEDBuffer2,48,16,80,16,0); 00986 //次停車駅(英語) 00987 //sprintf(SDFilePath,"/sd/E233/NextStationE/%d.bin",NextStaNumber); 00988 //SDBufferWrite(LEDBuffer3,48,16,80,16,0); 00989 sprintf(SDFilePath,"/sd/E233/NextStation/%d.bin",NextStaNumber); 00990 SDBufferWrite(LEDBuffer3,48,16,80,16,1280); 00991 00992 00993 00994 00995 //2段階(次駅なし) 00996 //次駅コードが0なら次駅なしの2段階表示に変更 00997 // 2段階表示 LEDBuffer5 [種別]行先(次駅表示なし) 00998 // LEDBuffer6 [種別]路線名 00999 //路線名がない場合(E233-0など)は固定表示 01000 01001 if(NextStaNumber == 0){ 01002 //種別 01003 sprintf(SDFilePath,"/sd/E233/Kind/%d.bin",KindNumber); 01004 //SDBufferWrite(LEDBuffer,0,0,48,32,0); 01005 //SDBufferWrite(LEDBuffer2,0,0,48,32,0); 01006 SDBufferWrite(LEDBuffer5,0,0,48,32,0); 01007 SDBufferWrite(LEDBuffer6,0,0,48,32,0); 01008 01009 //路線名 01010 sprintf(SDFilePath,"/sd/E233/Line2/%d.bin",LineNumber); 01011 //SDBufferWrite(LEDBuffer2,48,0,80,32,0); 01012 SDBufferWrite(LEDBuffer6,48,0,80,32,0); 01013 //行先 01014 sprintf(SDFilePath,"/sd/E233/For2/%d.bin",ForNumber); 01015 //SDBufferWrite(LEDBuffer,48,0,80,32,0); 01016 SDBufferWrite(LEDBuffer5,48,0,80,32,0); 01017 01018 //路線コードが0なら行先で固定表示 01019 if(LineNumber == 0){ 01020 DisplayMode = 3; 01021 }else{ 01022 DisplayMode = 2; 01023 } 01024 } 01025 01026 01027 //全面種別固定表示 01028 //路線名、行先、次駅がすべて0なら種別を全面に固定表示 01029 if(LineNumber == 0 && ForNumber == 0 && NextStaNumber == 0){ 01030 01031 //種別 01032 sprintf(SDFilePath,"/sd/E233/Kind/%d.bin",KindNumber); 01033 SDBufferWrite(LEDBuffer,0,0,48,32,0); 01034 sprintf(SDFilePath,"/sd/E233/Kind2/%d.bin",KindNumber); 01035 SDBufferWrite(LEDBuffer,0,0,128,32,0); 01036 //固定表示に変更 01037 DisplayMode = 3; 01038 } 01039 01040 //全面行先固定表示 01041 //DisplayMode:3 固定表示 LEDBuffer 行先(次駅表示なし 32x128) 01042 //路線名、種別、次駅がすべて0なら行先を全面に固定表示 01043 if(LineNumber == 0 && KindNumber == 0 && NextStaNumber == 0){ 01044 //データ作ってないからとりあえず80x32の行先データを表示 01045 //前面行先データフォルダ:For3 01046 01047 sprintf(SDFilePath,"/sd/E233/For3/%d.bin",ForNumber); 01048 SDBufferWrite(LEDBuffer,0,0,128,32,0); 01049 //固定表示に変更 01050 DisplayMode = 3; 01051 } 01052 01053 //Debug 01054 if(Debug == 1){ 01055 //DataSerialOut 01056 for(int y = 0; y < 32; y++){ 01057 for(int x = 0; x <128; x++){ 01058 if(LEDBuffer[y][x]== 0){ 01059 //pc.printf("0,"); 01060 pc.printf(" "); 01061 }else{ 01062 //pc.printf("#"); 01063 pc.printf("%.02d",LEDBuffer[y][x]); 01064 } 01065 } 01066 pc.printf("\r\n"); 01067 } 01068 } 01069 01070 } 01071 01072 01073 int CharToInt(unsigned char Sertemp1,unsigned char Sertemp2,unsigned char Sertemp3){ 01074 int n1 = 0 ; 01075 int n2 = 0 ; 01076 int n3 = 0 ; 01077 int n = 0; 01078 01079 if ( Sertemp1 < '0' || Sertemp1 > '9' ) { 01080 // error 01081 } else { 01082 n1 = (int)(Sertemp1 - '0') ; 01083 //pc.printf("%d,",n1); 01084 } 01085 if ( Sertemp2 < '0' || Sertemp2 > '9' ) { 01086 // error 01087 } else { 01088 n2 = (int)(Sertemp2 - '0') ; 01089 //pc.printf("%d,",n2); 01090 } 01091 if ( Sertemp3 < '0' || Sertemp3 > '9' ) { 01092 // error 01093 } else { 01094 n3 = (int)(Sertemp3 - '0') ; 01095 //pc.printf("%d\r\n",n3); 01096 } 01097 n = (n1 * 100) + (n2 * 10) + n3; 01098 return n; 01099 } 01100 01101 01102 void pc_rx(){ 01103 //pc.putc(pc.getc()); 01104 01105 OE = HIGH; 01106 01107 if (pc.readable() == 1) { // 受信したデータが存在する 01108 if (busyflag == false){ 01109 SerialBuffer[count] = pc.getc(); // 受信データを読み込む 01110 01111 }else{ 01112 pc.printf("busy\r\n"); 01113 } 01114 01115 if (count > 29 || SerialBuffer[count] == '$') { // 文字数が既定の個数を超えた場合、又は終了文字を受信した場合 01116 busyflag = true; 01117 01118 //SerialBuffer[count] = '\0'; // 末尾に終端文字を入れる 01119 01120 for(int a = 0; a < count; a++){ 01121 ABuffer[a] = SerialBuffer[a]; 01122 } 01123 01124 count = 0; 01125 01126 //路線名 L 01127 if(ABuffer[0] == 'L'){ 01128 //路線名 L 01129 //ABuffer[0]は'L' 01130 LineNumber = CharToInt(ABuffer[1],ABuffer[2],ABuffer[3]); 01131 pc.printf("Line:%d\r\n",LineNumber); 01132 } 01133 01134 //種別 K 01135 if(ABuffer[0] == 'K'){ 01136 //種別 K 01137 //ABuffer[0]は'K' 01138 KindNumber = CharToInt(ABuffer[1],ABuffer[2],ABuffer[3]); 01139 pc.printf("Kind:%d\r\n",KindNumber); 01140 } 01141 01142 //行先 F 01143 if(ABuffer[0] == 'F'){ 01144 //行先 F 01145 //ABuffer[0]は'F' 01146 ForNumber = CharToInt(ABuffer[1],ABuffer[2],ABuffer[3]); 01147 pc.printf("For:%d\r\n",ForNumber); 01148 } 01149 01150 //次停車駅 N 01151 if(ABuffer[0] == 'N'){ 01152 //次停車駅 N 01153 //ABuffer[0]は'N' 01154 NextStaNumber = CharToInt(ABuffer[1],ABuffer[2],ABuffer[3]); 01155 pc.printf("NextStation:%d\r\n",NextStaNumber); 01156 } 01157 01158 01159 01160 //起動 Set 01161 if(ABuffer[0] == 'S' && ABuffer[1] == 'e' && ABuffer[2] == 't'){ 01162 pc.printf("Set\r\n"); 01163 SDFileRead(); 01164 }else if(ABuffer[0] == 'S'){ 01165 //スクロール有効/無効 S 01166 unsigned char Sertemp1 = ABuffer[1]; 01167 int n1 = 0 ; 01168 int n = 0; 01169 01170 if ( Sertemp1 < '0' || Sertemp1 > '9' ) { 01171 // error 01172 } else { 01173 n1 = (int)(Sertemp1 - '0') ; 01174 //pc.printf("%d,",n1); 01175 } 01176 01177 n = n1; 01178 Scroll = n; 01179 pc.printf("Scroll:%d\r\n",n); 01180 } 01181 01182 //データ一括設定 01183 //先頭文字:'A' 01184 if(ABuffer[0] == 'A'){ 01185 //路線名 L 01186 //ABuffer[1]は'L' 01187 LineNumber = CharToInt(ABuffer[2],ABuffer[3],ABuffer[4]); 01188 pc.printf("Line:%d\r\n",LineNumber); 01189 01190 //種別 K 01191 //ABuffer[5]は'K' 01192 KindNumber = CharToInt(ABuffer[6],ABuffer[7],ABuffer[8]); 01193 pc.printf("Kind:%d\r\n",KindNumber); 01194 01195 //行先 F 01196 //ABuffer[9]は'F' 01197 ForNumber = CharToInt(ABuffer[10],ABuffer[11],ABuffer[12]); 01198 pc.printf("For:%d\r\n",ForNumber); 01199 01200 //次停車駅 N 01201 //ABuffer[13]は'N' 01202 NextStaNumber = CharToInt(ABuffer[14],ABuffer[15],ABuffer[16]); 01203 pc.printf("NextStation:%d\r\n",NextStaNumber); 01204 01205 //一括設定時は続けてSDからの読み込み 01206 pc.printf("Set\r\n"); 01207 SDFileRead(); 01208 Scroll = 0; 01209 //即時反映 01210 TimerTick(); 01211 } 01212 01213 //データ一括設定2 01214 //先頭文字:'B' 01215 //BLxxxNxxxPxxxyyyzzzKxxxFxxxSx$ 01216 //Lxxx:路線コード 01217 //Nxxx:次駅コード 01218 //Pxxxyyyzzz:停車駅パターン(xxx:運用パターン番号 yyy:始発駅コード zzz:終着駅コード) 01219 //Kxxx:種別コード 01220 //Fxxx:行先コード 01221 //Sx:スクロール(1:有効 0:無効) 01222 if(ABuffer[0] == 'B'){ 01223 //路線名 L 01224 //ABuffer[1]は'L' 01225 LineNumber = CharToInt(ABuffer[2],ABuffer[3],ABuffer[4]); 01226 pc.printf("Line:%d\r\n",LineNumber); 01227 01228 //次停車駅 N 01229 //ABuffer[5]は'N' 01230 NextStaNumber = CharToInt(ABuffer[6],ABuffer[7],ABuffer[8]); 01231 pc.printf("NextStation:%d\r\n",NextStaNumber); 01232 01233 //運用パターン P 01234 //Pxxxyyyzzz 01235 //x:運用パターン番号(3桁) 01236 //y:始発駅(3桁) 01237 //z:終着駅(3桁) 01238 //ABuffer[9]は'P' 01239 RoutePatternNumber = CharToInt(ABuffer[10],ABuffer[11],ABuffer[12]); 01240 pc.printf("RoutePattern:%d\r\n",RoutePatternNumber); 01241 01242 DeptStaNumber = CharToInt(ABuffer[13],ABuffer[14],ABuffer[15]); 01243 pc.printf("DeptStaNumber:%d\r\n",DeptStaNumber); 01244 TermStaNumber = CharToInt(ABuffer[16],ABuffer[17],ABuffer[18]); 01245 pc.printf("TermStaNumber:%d\r\n",TermStaNumber); 01246 01247 //種別 K 01248 //ABuffer[19]は'K' 01249 KindNumber = CharToInt(ABuffer[20],ABuffer[21],ABuffer[22]); 01250 pc.printf("Kind:%d\r\n",KindNumber); 01251 01252 //行先 F 01253 //ABuffer[23]は'F' 01254 ForNumber = CharToInt(ABuffer[24],ABuffer[25],ABuffer[26]); 01255 pc.printf("For:%d\r\n",ForNumber); 01256 01257 //スクロール S 01258 if(ABuffer[27] == 'S'){ 01259 //スクロール有効/無効 S 01260 unsigned char Sertemp1 = ABuffer[28]; 01261 int n1 = 0 ; 01262 int n = 0; 01263 01264 if ( Sertemp1 < '0' || Sertemp1 > '9' ) { 01265 // error 01266 } else { 01267 n1 = (int)(Sertemp1 - '0') ; 01268 //pc.printf("%d,",n1); 01269 } 01270 01271 n = n1; 01272 Scroll = n; 01273 pc.printf("Scroll:%d\r\n",n); 01274 } 01275 01276 01277 //一括設定時は続けてSDからの読み込み 01278 pc.printf("Set\r\n"); 01279 SDFileRead(); 01280 ScrollRead2(); 01281 //Scroll = 1; 01282 //即時反映 01283 TimerTick(); 01284 } 01285 busyflag = false; 01286 }else{ 01287 count++; 01288 } 01289 } 01290 OE = LOW; 01291 } 01292 01293 void ScrollRead(){ 01294 //test 01295 //Initialize StopStationCode 01296 for (int x = 0; x < MaxStopStation; x++){ 01297 StopStationCode[x]= 0; 01298 } 01299 01300 //SDRead StopStationCode 01301 for(int i = 0; i < MaxStopStation; i++){ 01302 01303 //停車駅コード取得 01304 int test = 0; 01305 int test2 = 0; 01306 sprintf(SDFilePath,"/sd/E233/StopStationList/%d.bin",1); 01307 FILE *fp = fopen(SDFilePath, "r"); 01308 if(fp == NULL) { 01309 pc.printf("SDFileOpen Error %s\r\n",SDFilePath); 01310 break; 01311 01312 }else{ 01313 //pc.printf("SDFileOpen Success %s\r\n",SDFilePath); 01314 fseek(fp, i*2, SEEK_SET); 01315 test = getc(fp); 01316 test = test << 8; 01317 01318 fseek(fp, i*2 + 1, SEEK_SET); 01319 test2 = getc(fp); 01320 test = test ^ test2; 01321 01322 StopStationCode[i] = test; 01323 pc.printf("StopStationCode[%d]:%d\r\n",i,StopStationCode[i]); 01324 01325 if(StopStationCode[i] == 0){ 01326 break; 01327 } 01328 fclose(fp); 01329 } 01330 } 01331 01332 //test end 01333 01334 //ScrollDebug 01335 ScrollWriteCount = 80; 01336 01337 //この電車の停車駅は、 01338 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",1); 01339 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16); 01340 ScrollWriteCount = ScrollWriteCount + 80; 01341 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",2); 01342 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16); 01343 ScrollWriteCount = ScrollWriteCount + 80; 01344 01345 for(int i = 0; i < MaxStopStation; i++){ 01346 if(StopStationCode[i] == 0){ 01347 break; 01348 } 01349 //駅名 01350 sprintf(SDFilePath,"/sd/E233/StationName/%d.bin",StopStationCode[i]); 01351 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,128,16); 01352 01353 //駅名文字数取得 01354 int test = 0; 01355 sprintf(SDFilePath,"/sd/E233/StationNameLength.bin"); 01356 FILE *fp = fopen(SDFilePath, "r"); 01357 if(fp == NULL) { 01358 pc.printf("SDFileOpen Error %s\r\n",SDFilePath); 01359 }else{ 01360 //pc.printf("SDFileOpen Success %s\r\n",SDFilePath); 01361 fseek(fp, StopStationCode[i], SEEK_SET); 01362 test = getc(fp); 01363 //pc.printf("StationNameLength:%d\r\n",test); 01364 fclose(fp); 01365 } 01366 01367 ScrollWriteCount = ScrollWriteCount + (test * 16); 01368 sprintf(SDFilePath,"/sd/E233/StopStation/0x8132.bin"); 01369 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,16,16); 01370 ScrollWriteCount = ScrollWriteCount + 16; 01371 } 01372 ScrollWriteCount = ScrollWriteCount - 16; 01373 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",3); 01374 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16); 01375 ScrollWriteCount = ScrollWriteCount + 80; 01376 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",4); 01377 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16); 01378 ScrollWriteCount = ScrollWriteCount + 80; 01379 01380 } 01381 01382 01383 01384 01385 01386 01387 int main(){ 01388 Init(); // Set things up 01389 //Serial 01390 pc.printf("Power ON\r\n"); 01391 01392 if(Button1 == 0){ 01393 //起動時にボタンが押されているならテスト表示モードに移行 01394 pc.printf("DisplayTestMode\r\n"); 01395 ChangeTimerTest.attach(&TestDisplayTimerTick,1); 01396 Scroll=0; 01397 01398 }else{ 01399 //通常モード 01400 //SDカードから表示データを読み込み 01401 SDFileRead(); 01402 01403 //起動時にスクロールデータを読み込み 01404 if(ScrollEnable == 1){ 01405 ScrollRead2(); 01406 } 01407 //表示切替タイマ有効 01408 ChangeTimer.attach(&TimerTick,3); 01409 01410 } 01411 01412 01413 //2段階表示に変更 01414 //DisplayMode = 2; 01415 01416 //test 01417 //sprintf(SDFilePath,"/sd/E233/whitetest.bin"); 01418 //SDBufferWrite(LEDBuffer,0,0,128,32); 01419 01420 01421 //Serial割り込み有効 01422 pc.attach(pc_rx, Serial::RxIrq); 01423 01424 01425 01426 01427 while(1) { 01428 //CT++; 01429 //表示切替は切り替え時にメインバッファに書き込む 01430 Paint(LEDMainBuffer); 01431 01432 //スクロール 01433 //スクロールが有効なら 01434 if(Scroll == 1){ 01435 //if(CT>0) { 01436 //CT=0; // Start all over. 01437 OE = HIGH; 01438 ScrollTimerTick(); 01439 OE = LOW; 01440 //} 01441 //}else{ 01442 //if(CT>4160){ 01443 // CT=0; 01444 //} 01445 } 01446 //PaintOFF(); 01447 } 01448 }
Generated on Tue Jul 19 2022 03:42:35 by
1.7.2