Aliexpressなどで販売されている64x32のフルカラードットマトリクスLED2枚とNucleo F401REを利用して、 E233系の駅停車時、路線名表示ありのLED側面行先表示を再現するプログラムです。 3秒間隔、3段階切替で、路線名、種別、行先、次停車駅を個別に指定することが可能です。

Dependencies:   SDFileSystem mbed

Committer:
chirashi
Date:
Thu Mar 19 17:40:52 2015 +0000
Revision:
34:9ee64899b004
Parent:
33:c934bc793c5a
bug fix; Add DisPlayTestMode

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chirashi 33:c934bc793c5a 1 //E233SideLED E233系側面LED再現
chirashi 33:c934bc793c5a 2 //Ver:0.90
RRacer 0:1f58ecec51d6 3
chirashi 33:c934bc793c5a 4 //簡単な説明,また表示データを以下で配布しています。
chirashi 33:c934bc793c5a 5 //https://chirashitech.wordpress.com/
chirashi 33:c934bc793c5a 6
chirashi 33:c934bc793c5a 7 //このソースはSDカードが存在することが前提です。
chirashi 33:c934bc793c5a 8 //SDカードがない状態で停車駅スクロールが有効になっている場合エラー文が出力されるため起動までに時間がかかります。
chirashi 33:c934bc793c5a 9 //SDカードがない場合ScrollEnableを0にしてください。
chirashi 33:c934bc793c5a 10
RRacer 0:1f58ecec51d6 11
RRacer 0:1f58ecec51d6 12 #include "mbed.h"
chirashi 13:0c542447e6da 13 #include "SDFileSystem.h"
chirashi 13:0c542447e6da 14
chirashi 23:6fb1181345a7 15 #define bitRead(value, bit) (((value) >> (bit)) & 0x01)
chirashi 23:6fb1181345a7 16 #define bitSet(value, bit) ((value) |= (1UL << (bit)))
chirashi 23:6fb1181345a7 17 #define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
chirashi 23:6fb1181345a7 18 #define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
chirashi 23:6fb1181345a7 19
RRacer 0:1f58ecec51d6 20 #define LOW 0
RRacer 0:1f58ecec51d6 21 #define HIGH 1
RRacer 0:1f58ecec51d6 22
chirashi 6:e6cb4a476422 23 #define R_Debug1 0
chirashi 6:e6cb4a476422 24 #define R_Debug2 0
chirashi 6:e6cb4a476422 25 #define R_Debug3 0
chirashi 6:e6cb4a476422 26 #define R_Debug4 0
chirashi 6:e6cb4a476422 27
chirashi 6:e6cb4a476422 28 #define G_Debug1 0
chirashi 6:e6cb4a476422 29 #define G_Debug2 0
chirashi 6:e6cb4a476422 30 #define G_Debug3 0
chirashi 6:e6cb4a476422 31 #define G_Debug4 0
chirashi 6:e6cb4a476422 32
chirashi 6:e6cb4a476422 33 #define B_Debug1 0
chirashi 6:e6cb4a476422 34 #define B_Debug2 0
chirashi 6:e6cb4a476422 35 #define B_Debug3 0
chirashi 6:e6cb4a476422 36 #define B_Debug4 0
chirashi 6:e6cb4a476422 37
chirashi 29:bc82c25b6b94 38 //表示幅を増やす場合ここ以外も変更が必要
chirashi 11:4be8dcbad9f1 39 #define LED_Width 128
chirashi 10:4d9cf202a845 40 #define LED_Height 16
chirashi 6:e6cb4a476422 41
chirashi 33:c934bc793c5a 42 //表示処理Wait
chirashi 33:c934bc793c5a 43 //ここを変更することで輝度調整可能
chirashi 33:c934bc793c5a 44 //ただし消費電力も変動します。出力に余裕のない電源を利用している場合変更しないでください
chirashi 21:b536f614ba71 45 #define DisplayWait 15
chirashi 21:b536f614ba71 46
chirashi 24:7232abdf7884 47 //最大停車駅数
chirashi 24:7232abdf7884 48 #define MaxStopStation 100
chirashi 24:7232abdf7884 49
chirashi 30:3ac9aa4faa34 50 //将来的な複数機器連動用の機器ID
chirashi 30:3ac9aa4faa34 51 //0:全機器一斉送信用 1:前面LED 2:側面LED(暫定)
chirashi 30:3ac9aa4faa34 52 #define DeviceID 2
chirashi 30:3ac9aa4faa34 53
chirashi 30:3ac9aa4faa34 54
chirashi 27:3dccc05e760b 55 //SDCard
chirashi 27:3dccc05e760b 56 //MOSI - D11(PA7)
chirashi 27:3dccc05e760b 57 //MISO - D12(PA6)
chirashi 27:3dccc05e760b 58 //SCK - D13(PA5)
chirashi 27:3dccc05e760b 59 //CS - D10(PB6)
chirashi 27:3dccc05e760b 60
chirashi 13:0c542447e6da 61 SDFileSystem sd(D11, D12, D13, D10, "sd");
chirashi 27:3dccc05e760b 62
chirashi 30:3ac9aa4faa34 63 //Serial USB
chirashi 13:0c542447e6da 64 Serial pc(USBTX,USBRX );
chirashi 27:3dccc05e760b 65
chirashi 30:3ac9aa4faa34 66 //Bluetooth Serial6
chirashi 30:3ac9aa4faa34 67 //Serial pc(PA_11,PA_12 );
chirashi 30:3ac9aa4faa34 68
chirashi 30:3ac9aa4faa34 69
chirashi 27:3dccc05e760b 70 //LEDModule
chirashi 29:bc82c25b6b94 71 //R1,R2,G1,G2,B1,B2はモジュールによりコネクタのピンアサインが異なります。
chirashi 29:bc82c25b6b94 72 //色が違う場合DigitalOutのピンアサインを変更してください。
chirashi 29:bc82c25b6b94 73
chirashi 27:3dccc05e760b 74 //R1 - D4(PB5)
chirashi 27:3dccc05e760b 75 //R2 - D5(PB4)
chirashi 27:3dccc05e760b 76 //G1 - D6(PB10)
chirashi 27:3dccc05e760b 77 //G2 - D7(PA8)
chirashi 27:3dccc05e760b 78 //B1 - D2(PA10)
chirashi 27:3dccc05e760b 79 //B2 - D3(PB3)
chirashi 30:3ac9aa4faa34 80 //or
chirashi 30:3ac9aa4faa34 81 //R1 - D6(PB5)
chirashi 30:3ac9aa4faa34 82 //R2 - D7(PB4)
chirashi 30:3ac9aa4faa34 83 //G1 - D2(PB10)
chirashi 30:3ac9aa4faa34 84 //G2 - D3(PA8)
chirashi 30:3ac9aa4faa34 85 //B1 - D4(PA10)
chirashi 30:3ac9aa4faa34 86 //B2 - D5(PB3)
chirashi 27:3dccc05e760b 87
chirashi 27:3dccc05e760b 88 //A - D8(PA9)
chirashi 27:3dccc05e760b 89 //B - D9(PC7)
chirashi 27:3dccc05e760b 90 //C - PB13
chirashi 27:3dccc05e760b 91 //D - PC5
chirashi 27:3dccc05e760b 92
chirashi 27:3dccc05e760b 93 //CLK - PB14
chirashi 27:3dccc05e760b 94 //LAT - PB15
chirashi 27:3dccc05e760b 95 //OE - PB1
chirashi 27:3dccc05e760b 96
chirashi 21:b536f614ba71 97 BusOut ABC(D8,D9,PB_13,PC_5); // Row address.
chirashi 13:0c542447e6da 98 DigitalOut CLK(PB_14); // Data clock - rising edge
chirashi 13:0c542447e6da 99 DigitalOut LAT(PB_15); // Data latch - active low (pulse up after data load)
chirashi 13:0c542447e6da 100 DigitalOut OE(PB_1); // Output enable - active low (hold high during data load, bring low after LAT pulse)
chirashi 21:b536f614ba71 101
chirashi 30:3ac9aa4faa34 102 DigitalOut R1(D4); // RED Serial in for upper half
chirashi 30:3ac9aa4faa34 103 DigitalOut R2(D5); // RED Serial in for lower half
chirashi 30:3ac9aa4faa34 104 DigitalOut G1(D6); // GREEN Serial in for upper half
chirashi 30:3ac9aa4faa34 105 DigitalOut G2(D7); // GREEN Serial in for lower half
chirashi 30:3ac9aa4faa34 106 DigitalOut B1(D2); // BLUE Serial in for upper half
chirashi 30:3ac9aa4faa34 107 DigitalOut B2(D3); // BLUE Serial in for lower half
chirashi 21:b536f614ba71 108
chirashi 21:b536f614ba71 109
chirashi 29:bc82c25b6b94 110 //SumSW(現状未使用)
chirashi 13:0c542447e6da 111 DigitalOut SCK(PB_7);
chirashi 13:0c542447e6da 112 DigitalOut SI(PC_13);
chirashi 13:0c542447e6da 113 DigitalOut RCK(PC_14);
chirashi 13:0c542447e6da 114
chirashi 13:0c542447e6da 115 DigitalIn SumSW1(PA_0);
chirashi 13:0c542447e6da 116 DigitalIn SumSW2(PA_1);
chirashi 13:0c542447e6da 117 DigitalIn SumSW4(PA_4);
chirashi 13:0c542447e6da 118 DigitalIn SumSW8(PB_0);
chirashi 14:0f4d44927b20 119 //BusIn SumSWNum(PA_0,PA_1,PA_4,PB_0);
chirashi 13:0c542447e6da 120
chirashi 34:9ee64899b004 121 DigitalIn Button1 (USER_BUTTON);
chirashi 29:bc82c25b6b94 122
chirashi 29:bc82c25b6b94 123 //表示切替用タイマ
chirashi 8:9d22c9910917 124 Ticker ChangeTimer;
chirashi 34:9ee64899b004 125 //表示切替用タイマ(テスト表示用)
chirashi 34:9ee64899b004 126 Ticker ChangeTimerTest;
chirashi 34:9ee64899b004 127
chirashi 34:9ee64899b004 128
chirashi 33:c934bc793c5a 129 //スクロール用タイマ
chirashi 22:ebab951db9f6 130 Ticker ScrollTimer;
chirashi 13:0c542447e6da 131
chirashi 34:9ee64899b004 132
chirashi 34:9ee64899b004 133
chirashi 34:9ee64899b004 134
chirashi 34:9ee64899b004 135
chirashi 34:9ee64899b004 136
chirashi 14:0f4d44927b20 137 //Debug
chirashi 21:b536f614ba71 138 bool Debug = 0;
chirashi 13:0c542447e6da 139
chirashi 13:0c542447e6da 140
chirashi 33:c934bc793c5a 141 //Mode(未使用?)
chirashi 19:26e0fae24da6 142 //1固定
chirashi 19:26e0fae24da6 143 int WriteMode = 1;
chirashi 19:26e0fae24da6 144
chirashi 19:26e0fae24da6 145
chirashi 19:26e0fae24da6 146
chirashi 19:26e0fae24da6 147 //1:3段階 LEDBuffer-LEDBuffer2-LEDBuffer3
chirashi 33:c934bc793c5a 148 //2:2段階 LEDBuffer5-LEDBuffer6
chirashi 33:c934bc793c5a 149 //3:固定 LEDBuffer
chirashi 33:c934bc793c5a 150 //4:2段階 LEDBuffer2-LEDBuffer3(次駅あり)
chirashi 33:c934bc793c5a 151 //5:4段階 LEDBuffer-LEDBuffer4-LEDBuffer2-LEDBuffer3
chirashi 19:26e0fae24da6 152 int DisplayMode = 1;
chirashi 19:26e0fae24da6 153
chirashi 33:c934bc793c5a 154 //スクロール有効/無効
chirashi 28:4cc6aa3acd92 155 bool Scroll = 1;
chirashi 22:ebab951db9f6 156
chirashi 26:99c72fe9366e 157 //起動時スクロール読み込み有効/無効(SDがない場合0にする)
chirashi 29:bc82c25b6b94 158 //(1になっている場合SDカードが刺さっていないと起動に数分かかります)
chirashi 28:4cc6aa3acd92 159 bool ScrollEnable = 1;
chirashi 22:ebab951db9f6 160
chirashi 33:c934bc793c5a 161
chirashi 17:95bcbc53d96b 162 int ChangeCount = 0;
chirashi 34:9ee64899b004 163 //テスト表示用
chirashi 34:9ee64899b004 164 int ChangeCountTest = 0;
chirashi 33:c934bc793c5a 165 //路線コード
chirashi 32:3bf210e07de7 166 int LineNumber = 1;
chirashi 33:c934bc793c5a 167 //種別コード
chirashi 24:7232abdf7884 168 int KindNumber = 22;
chirashi 33:c934bc793c5a 169 //行先コード
chirashi 24:7232abdf7884 170 int ForNumber = 114;
chirashi 33:c934bc793c5a 171 //次駅コード
chirashi 17:95bcbc53d96b 172 int NextStaNumber = 1;
chirashi 33:c934bc793c5a 173 //運用パターン番号
chirashi 32:3bf210e07de7 174 int RoutePatternNumber = 1;
chirashi 33:c934bc793c5a 175 //始発駅コード
chirashi 32:3bf210e07de7 176 int DeptStaNumber = 3;
chirashi 33:c934bc793c5a 177 //終着駅コード
chirashi 32:3bf210e07de7 178 int TermStaNumber = 32;
chirashi 32:3bf210e07de7 179
chirashi 33:c934bc793c5a 180
chirashi 33:c934bc793c5a 181 char SerialBuffer[60];
chirashi 30:3ac9aa4faa34 182 //シリアル処理用バッファ
chirashi 33:c934bc793c5a 183 char ABuffer[60];
chirashi 30:3ac9aa4faa34 184 bool busyflag = false;
chirashi 17:95bcbc53d96b 185 int count = 0;
chirashi 13:0c542447e6da 186
chirashi 33:c934bc793c5a 187 //スクロール用変数
chirashi 22:ebab951db9f6 188 int ScrollCount = 0;
chirashi 23:6fb1181345a7 189 int ScrollWriteCount = 80;
chirashi 22:ebab951db9f6 190
chirashi 22:ebab951db9f6 191
chirashi 13:0c542447e6da 192 //SDCardFilePath
chirashi 17:95bcbc53d96b 193 char SDFilePath[80]= "/sd/a.txt";
chirashi 13:0c542447e6da 194
chirashi 33:c934bc793c5a 195 unsigned long CT;
chirashi 29:bc82c25b6b94 196
chirashi 29:bc82c25b6b94 197 //StopStationCode:停車駅コード(最大100駅 それ以上の場合MaxStopStationを増やしてください)
chirashi 29:bc82c25b6b94 198 //停車駅コード終端は0にする
chirashi 29:bc82c25b6b94 199 //StationNameLength:駅名の文字数(最大8文字)
chirashi 24:7232abdf7884 200 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};
chirashi 23:6fb1181345a7 201 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};
chirashi 23:6fb1181345a7 202
chirashi 23:6fb1181345a7 203
chirashi 13:0c542447e6da 204
chirashi 13:0c542447e6da 205
chirashi 33:c934bc793c5a 206 int8_t LEDBuffer [32][LED_Width] = {
chirashi 12:680db9f1f4eb 207 {0,0,0,0,0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 208 {0,0,0,0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 209 {0,0,0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 210 {0,0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 211 {0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 212 {0,0,0,0,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},
chirashi 12:680db9f1f4eb 213 {0,0,0,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},
chirashi 12:680db9f1f4eb 214 {0,0,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},
chirashi 12:680db9f1f4eb 215 {0,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},
chirashi 12:680db9f1f4eb 216 {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},
chirashi 12:680db9f1f4eb 217 {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},
chirashi 12:680db9f1f4eb 218 {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},
chirashi 12:680db9f1f4eb 219 {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},
chirashi 12:680db9f1f4eb 220 {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},
chirashi 12:680db9f1f4eb 221 {0,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},
chirashi 12:680db9f1f4eb 222 {0,0,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},
chirashi 12:680db9f1f4eb 223 {0,0,0,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},
chirashi 12:680db9f1f4eb 224 {0,0,0,0,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},
chirashi 12:680db9f1f4eb 225 {0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 226 {0,0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 227 {0,0,0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 228 {0,0,0,0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 229 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 230 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 231 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 232 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 233 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 234 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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},
chirashi 12:680db9f1f4eb 235 {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},
chirashi 12:680db9f1f4eb 236 {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},
chirashi 12:680db9f1f4eb 237 {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},
chirashi 12:680db9f1f4eb 238 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
chirashi 12:680db9f1f4eb 239
chirashi 9:ab87b0e361aa 240
chirashi 8:9d22c9910917 241 };
chirashi 6:e6cb4a476422 242
chirashi 33:c934bc793c5a 243 int8_t LEDBuffer2[32][LED_Width] = {
chirashi 14:0f4d44927b20 244 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 245 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 246 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 247 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 248 {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},
chirashi 14:0f4d44927b20 249 {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},
chirashi 14:0f4d44927b20 250 {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},
chirashi 14:0f4d44927b20 251 {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},
chirashi 14:0f4d44927b20 252 {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},
chirashi 14:0f4d44927b20 253 {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},
chirashi 14:0f4d44927b20 254 {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},
chirashi 14:0f4d44927b20 255 {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},
chirashi 14:0f4d44927b20 256 {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},
chirashi 14:0f4d44927b20 257 {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},
chirashi 14:0f4d44927b20 258 {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},
chirashi 14:0f4d44927b20 259 {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},
chirashi 14:0f4d44927b20 260 {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},
chirashi 14:0f4d44927b20 261 {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},
chirashi 14:0f4d44927b20 262 {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},
chirashi 14:0f4d44927b20 263 {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},
chirashi 14:0f4d44927b20 264 {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},
chirashi 14:0f4d44927b20 265 {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},
chirashi 14:0f4d44927b20 266 {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},
chirashi 14:0f4d44927b20 267 {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},
chirashi 14:0f4d44927b20 268 {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},
chirashi 14:0f4d44927b20 269 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 270 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 271 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 272 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 273 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 274 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 275 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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}
chirashi 8:9d22c9910917 276
chirashi 8:9d22c9910917 277 };
chirashi 8:9d22c9910917 278
chirashi 33:c934bc793c5a 279 int8_t LEDBuffer3[32][LED_Width] = {
chirashi 12:680db9f1f4eb 280 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 12:680db9f1f4eb 281 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 282 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 283 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 284 {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},
chirashi 14:0f4d44927b20 285 {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},
chirashi 14:0f4d44927b20 286 {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},
chirashi 14:0f4d44927b20 287 {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},
chirashi 14:0f4d44927b20 288 {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},
chirashi 14:0f4d44927b20 289 {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},
chirashi 14:0f4d44927b20 290 {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},
chirashi 14:0f4d44927b20 291 {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},
chirashi 14:0f4d44927b20 292 {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},
chirashi 14:0f4d44927b20 293 {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},
chirashi 14:0f4d44927b20 294 {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},
chirashi 14:0f4d44927b20 295 {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},
chirashi 14:0f4d44927b20 296 {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},
chirashi 14:0f4d44927b20 297 {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},
chirashi 14:0f4d44927b20 298 {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},
chirashi 14:0f4d44927b20 299 {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},
chirashi 14:0f4d44927b20 300 {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},
chirashi 14:0f4d44927b20 301 {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},
chirashi 14:0f4d44927b20 302 {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},
chirashi 14:0f4d44927b20 303 {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},
chirashi 14:0f4d44927b20 304 {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},
chirashi 14:0f4d44927b20 305 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 306 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 307 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 308 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 309 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 14:0f4d44927b20 310 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 12:680db9f1f4eb 311 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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}
chirashi 8:9d22c9910917 312
chirashi 8:9d22c9910917 313 };
chirashi 21:b536f614ba71 314
chirashi 33:c934bc793c5a 315 int8_t LEDBuffer4[32][LED_Width] = {
chirashi 21:b536f614ba71 316 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 21:b536f614ba71 317 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 21:b536f614ba71 318 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 21:b536f614ba71 319 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 21:b536f614ba71 320 {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},
chirashi 21:b536f614ba71 321 {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},
chirashi 21:b536f614ba71 322 {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},
chirashi 21:b536f614ba71 323 {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},
chirashi 21:b536f614ba71 324 {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},
chirashi 21:b536f614ba71 325 {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},
chirashi 21:b536f614ba71 326 {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},
chirashi 21:b536f614ba71 327 {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},
chirashi 21:b536f614ba71 328 {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},
chirashi 21:b536f614ba71 329 {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},
chirashi 21:b536f614ba71 330 {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},
chirashi 21:b536f614ba71 331 {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},
chirashi 21:b536f614ba71 332 {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},
chirashi 21:b536f614ba71 333 {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},
chirashi 21:b536f614ba71 334 {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},
chirashi 21:b536f614ba71 335 {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},
chirashi 21:b536f614ba71 336 {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},
chirashi 21:b536f614ba71 337 {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},
chirashi 21:b536f614ba71 338 {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},
chirashi 21:b536f614ba71 339 {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},
chirashi 21:b536f614ba71 340 {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},
chirashi 21:b536f614ba71 341 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 21:b536f614ba71 342 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 21:b536f614ba71 343 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 21:b536f614ba71 344 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 21:b536f614ba71 345 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 21:b536f614ba71 346 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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},
chirashi 21:b536f614ba71 347 {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,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}
chirashi 21:b536f614ba71 348
chirashi 21:b536f614ba71 349 };
chirashi 21:b536f614ba71 350
chirashi 33:c934bc793c5a 351 int8_t LEDBuffer5[32][LED_Width] = {
chirashi 33:c934bc793c5a 352
chirashi 33:c934bc793c5a 353 };
chirashi 33:c934bc793c5a 354
chirashi 33:c934bc793c5a 355 int8_t LEDBuffer6[32][LED_Width] = {
chirashi 33:c934bc793c5a 356
chirashi 33:c934bc793c5a 357 };
chirashi 33:c934bc793c5a 358 int8_t LEDMainBuffer[32][LED_Width] = {
chirashi 33:c934bc793c5a 359
chirashi 33:c934bc793c5a 360 };
chirashi 33:c934bc793c5a 361
chirashi 22:ebab951db9f6 362 int8_t ScrollBuffer[16][2048] = {
chirashi 22:ebab951db9f6 363
chirashi 22:ebab951db9f6 364 };
chirashi 22:ebab951db9f6 365
chirashi 21:b536f614ba71 366
chirashi 19:26e0fae24da6 367 //01 Red
chirashi 19:26e0fae24da6 368 //02 Green
chirashi 19:26e0fae24da6 369 //03 Blue
chirashi 19:26e0fae24da6 370 //04 Yellow(R,G)
chirashi 19:26e0fae24da6 371 //05(G,B)
chirashi 19:26e0fae24da6 372 //06 purple(R,B)
chirashi 33:c934bc793c5a 373 //07 White(R,G,B)
chirashi 19:26e0fae24da6 374 //08 Blue(Keihin-tohoku Line)
chirashi 9:ab87b0e361aa 375 //10 Yellow(Nambu Local)
chirashi 9:ab87b0e361aa 376 //11 Green (Yokohama Line)
chirashi 33:c934bc793c5a 377 //12 Orange(Rapid Acty,Urban)
chirashi 19:26e0fae24da6 378 //13 Green(Saikyo Line)
chirashi 33:c934bc793c5a 379 //14
chirashi 33:c934bc793c5a 380 //15
chirashi 16:d02248f44c4b 381 //16 Green(Utsunomiya Line)
chirashi 19:26e0fae24da6 382 //17 Green(Joban Local Local)
chirashi 24:7232abdf7884 383 //18 Keikyu Logo(Gray
chirashi 28:4cc6aa3acd92 384
chirashi 28:4cc6aa3acd92 385 bool R1Data[8][32]={
chirashi 28:4cc6aa3acd92 386 {0,1,0,0,1,0,1,1,0,1,1,1,1,0,1,1,0,0,1},
chirashi 28:4cc6aa3acd92 387 {0,1,0,0,1,0,1,1,0,1,1,0,1,0,0,0,0,0,1},
chirashi 28:4cc6aa3acd92 388 {0,1,0,0,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0},
chirashi 28:4cc6aa3acd92 389 {0,1,0,0,1,0,1,1,0,1,0,0,1,0,0,0,0,0,0},
chirashi 28:4cc6aa3acd92 390
chirashi 28:4cc6aa3acd92 391 {0,1,0,0,1,0,1,1,0,1,1,1,1,0,1,1,0,0,1},
chirashi 28:4cc6aa3acd92 392 {0,1,0,0,1,0,1,1,0,1,1,0,1,0,0,0,0,0,1},
chirashi 28:4cc6aa3acd92 393 {0,1,0,0,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0},
chirashi 28:4cc6aa3acd92 394 {0,1,0,0,1,0,1,1,0,1,0,0,1,0,0,0,0,0,0}
chirashi 28:4cc6aa3acd92 395 };
chirashi 4:245f17936b1a 396
chirashi 28:4cc6aa3acd92 397 bool G1Data[8][32]={
chirashi 28:4cc6aa3acd92 398 {0,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,1,1},
chirashi 28:4cc6aa3acd92 399 {0,0,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,1},
chirashi 28:4cc6aa3acd92 400 {0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0},
chirashi 28:4cc6aa3acd92 401 {0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0},
chirashi 28:4cc6aa3acd92 402
chirashi 28:4cc6aa3acd92 403 {0,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,1,1},
chirashi 28:4cc6aa3acd92 404 {0,0,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,1},
chirashi 28:4cc6aa3acd92 405 {0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0},
chirashi 28:4cc6aa3acd92 406 {0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0}
chirashi 28:4cc6aa3acd92 407 };
chirashi 7:79dfe71beb88 408
chirashi 28:4cc6aa3acd92 409 bool B1Data[8][32]={
chirashi 28:4cc6aa3acd92 410 {0,0,0,1,0,1,1,1,1,1,0,0,0,0,0,1,0,1,1},
chirashi 28:4cc6aa3acd92 411 {0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1},
chirashi 28:4cc6aa3acd92 412 {0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0},
chirashi 28:4cc6aa3acd92 413 {0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0},
chirashi 7:79dfe71beb88 414
chirashi 28:4cc6aa3acd92 415 {0,0,0,1,0,1,1,1,1,1,0,0,0,0,0,1,0,1,1},
chirashi 28:4cc6aa3acd92 416 {0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1},
chirashi 28:4cc6aa3acd92 417 {0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0},
chirashi 28:4cc6aa3acd92 418 {0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0}
chirashi 28:4cc6aa3acd92 419 };
chirashi 7:79dfe71beb88 420
chirashi 7:79dfe71beb88 421
RRacer 0:1f58ecec51d6 422
RRacer 0:1f58ecec51d6 423 void Init()
RRacer 0:1f58ecec51d6 424 {
chirashi 30:3ac9aa4faa34 425 //pc.baud(9600);
RRacer 0:1f58ecec51d6 426 // Set up things to a known state
RRacer 0:1f58ecec51d6 427 CLK = LOW;
RRacer 0:1f58ecec51d6 428 LAT = LOW;
RRacer 0:1f58ecec51d6 429 OE = HIGH; //display off
RRacer 0:1f58ecec51d6 430 ABC = 0;
RRacer 0:1f58ecec51d6 431 CT=0;
chirashi 7:79dfe71beb88 432
RRacer 0:1f58ecec51d6 433 }
RRacer 0:1f58ecec51d6 434
chirashi 33:c934bc793c5a 435 void WriteRow(unsigned char Row, int8_t Buffer[32][LED_Width], int8_t index2)
RRacer 0:1f58ecec51d6 436 {
chirashi 28:4cc6aa3acd92 437 ABC = 15-Row;
chirashi 28:4cc6aa3acd92 438 for(int col=0; col<LED_Width; col++) {
chirashi 29:bc82c25b6b94 439 R1 = R1Data[index2][(Buffer [(15-Row)][col])];
chirashi 29:bc82c25b6b94 440 G1 = G1Data[index2][(Buffer [(15-Row)][col])];
chirashi 29:bc82c25b6b94 441 B1 = B1Data[index2][(Buffer [(15-Row)][col])];
chirashi 29:bc82c25b6b94 442 R2 = R1Data[index2][(Buffer [(31-Row)][col])];
chirashi 29:bc82c25b6b94 443 G2 = G1Data[index2][(Buffer [(31-Row)][col])];
chirashi 29:bc82c25b6b94 444 B2 = B1Data[index2][(Buffer [(31-Row)][col])];
chirashi 28:4cc6aa3acd92 445 CLK = HIGH;
chirashi 28:4cc6aa3acd92 446 CLK = LOW;
chirashi 4:245f17936b1a 447 }
chirashi 28:4cc6aa3acd92 448 LAT = HIGH;
chirashi 4:245f17936b1a 449 LAT = LOW;
chirashi 4:245f17936b1a 450 }
chirashi 4:245f17936b1a 451
chirashi 3:6dbbc0130e96 452 void WrRowOFF(unsigned char Row)
chirashi 3:6dbbc0130e96 453 {
chirashi 3:6dbbc0130e96 454 // Write specified row (and row+8) to display. Valid input: 0 to 7.
chirashi 10:4d9cf202a845 455 ABC = 15-Row; // Set row address
chirashi 6:e6cb4a476422 456 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.
chirashi 3:6dbbc0130e96 457 R1 = 0; // Red bit, upper half
chirashi 3:6dbbc0130e96 458 G1 = 0; // Green bit, upper half
chirashi 3:6dbbc0130e96 459 B1 = 0; // Blue bit, upper half
chirashi 3:6dbbc0130e96 460 R2 = 0; // Red bit, lower half
chirashi 3:6dbbc0130e96 461 G2 = 0; // Green bit, lower half
chirashi 3:6dbbc0130e96 462 B2 = 0; // Blue bit, lower half
chirashi 3:6dbbc0130e96 463 CLK = HIGH; // tick (clock bit in)
chirashi 3:6dbbc0130e96 464 CLK = LOW; // tock
chirashi 3:6dbbc0130e96 465 }
chirashi 3:6dbbc0130e96 466 LAT = HIGH; // Latch entire row
chirashi 3:6dbbc0130e96 467 LAT = LOW;
chirashi 3:6dbbc0130e96 468 }
chirashi 3:6dbbc0130e96 469
chirashi 33:c934bc793c5a 470 void Paint(int8_t Buffer2[32][LED_Width])
RRacer 0:1f58ecec51d6 471 {
chirashi 28:4cc6aa3acd92 472 for(int index = 0; index < 4; index++){
chirashi 28:4cc6aa3acd92 473 for(int Row=0; Row<LED_Height; Row++) {
chirashi 28:4cc6aa3acd92 474 OE = HIGH; // Disable output
chirashi 28:4cc6aa3acd92 475 WriteRow(Row,Buffer2,index);
chirashi 29:bc82c25b6b94 476 //wait_us(5);
chirashi 28:4cc6aa3acd92 477 OE = LOW; // Enable output
chirashi 28:4cc6aa3acd92 478 wait_us(DisplayWait); // Wasting some time. Use for whatever else. Probably better with a ticker for the display refresh.
chirashi 29:bc82c25b6b94 479 OE = HIGH; // Disable output
chirashi 28:4cc6aa3acd92 480 }
chirashi 5:532937f20397 481 }
chirashi 4:245f17936b1a 482 }
chirashi 4:245f17936b1a 483
RRacer 0:1f58ecec51d6 484
chirashi 3:6dbbc0130e96 485 void PaintOFF()
chirashi 3:6dbbc0130e96 486 {
chirashi 3:6dbbc0130e96 487 // Write graphics memory to display
chirashi 3:6dbbc0130e96 488 for(int Row=0; Row<8; Row++) {
chirashi 3:6dbbc0130e96 489 OE = HIGH; // Disable output
chirashi 3:6dbbc0130e96 490 WrRowOFF(Row);
chirashi 3:6dbbc0130e96 491 OE = LOW; // Enable output
chirashi 4:245f17936b1a 492 wait_us(50); // Wasting some time. Use for whatever else. Probably better with a ticker for the display refresh.
chirashi 3:6dbbc0130e96 493 }
chirashi 3:6dbbc0130e96 494 }
chirashi 3:6dbbc0130e96 495
chirashi 33:c934bc793c5a 496 void CopyBuffer(int8_t ReadBuffer[32][LED_Width],int8_t WriteBuffer[32][LED_Width]){
chirashi 22:ebab951db9f6 497 for(int y = 0; y < LED_Height * 2; y++){
chirashi 22:ebab951db9f6 498 if(Scroll != 0 && y > 15 ){
chirashi 22:ebab951db9f6 499 for(int x = 0; x < LED_Width - 80; x++){
chirashi 22:ebab951db9f6 500 WriteBuffer[y][x] = ReadBuffer[y][x];
chirashi 22:ebab951db9f6 501 }
chirashi 22:ebab951db9f6 502 }else{
chirashi 22:ebab951db9f6 503 for(int x = 0; x < LED_Width; x++){
chirashi 22:ebab951db9f6 504 WriteBuffer[y][x] = ReadBuffer[y][x];
chirashi 22:ebab951db9f6 505 }
chirashi 22:ebab951db9f6 506 }
chirashi 22:ebab951db9f6 507 }
chirashi 22:ebab951db9f6 508 }
chirashi 22:ebab951db9f6 509
chirashi 33:c934bc793c5a 510 //バッファ初期化
chirashi 33:c934bc793c5a 511 void ClearBuffer(int8_t TargetBuffer[32][LED_Width]){
chirashi 33:c934bc793c5a 512 for(int y = 0; y < LED_Height * 2; y++){
chirashi 33:c934bc793c5a 513 for(int x = 0; x < LED_Width; x++){
chirashi 33:c934bc793c5a 514 TargetBuffer[y][x] = 0;
chirashi 33:c934bc793c5a 515 }
chirashi 33:c934bc793c5a 516 }
chirashi 33:c934bc793c5a 517
chirashi 33:c934bc793c5a 518 }
chirashi 33:c934bc793c5a 519
chirashi 33:c934bc793c5a 520
chirashi 33:c934bc793c5a 521 void CopyScrollBuffer(int8_t ReadBuffer[16][2048],int8_t WriteBuffer[32][LED_Width],int Startx){
chirashi 23:6fb1181345a7 522 for(int y = 0; y < 16; y++){
chirashi 29:bc82c25b6b94 523 int xCount = 0;
chirashi 23:6fb1181345a7 524 for(int x = 0; x < 80; x++){
chirashi 23:6fb1181345a7 525 if(bitRead(ScrollBuffer[y][(x + Startx) / 8 ], (x + Startx)% 8) != 0){
chirashi 23:6fb1181345a7 526 LEDMainBuffer[y + 16][x + 48] = 4;
chirashi 23:6fb1181345a7 527 }else{
chirashi 23:6fb1181345a7 528 LEDMainBuffer[y + 16][x + 48] = 0;
chirashi 29:bc82c25b6b94 529 }
chirashi 23:6fb1181345a7 530 xCount = xCount + 1;
chirashi 23:6fb1181345a7 531 }
chirashi 23:6fb1181345a7 532 }
chirashi 23:6fb1181345a7 533 }
chirashi 22:ebab951db9f6 534
chirashi 23:6fb1181345a7 535 //1文字256byte
chirashi 33:c934bc793c5a 536 void CopyScrollBuffer2(int8_t ReadBuffer[16][2048],int8_t WriteBuffer[32][LED_Width],int Startx){
chirashi 22:ebab951db9f6 537 for(int y = 0; y < 16; y++){
chirashi 22:ebab951db9f6 538 for(int x = 0; x < 80; x++){
chirashi 22:ebab951db9f6 539 LEDMainBuffer[y + 16][x + 48] = ScrollBuffer[y][x + Startx];
chirashi 22:ebab951db9f6 540 }
chirashi 22:ebab951db9f6 541 }
chirashi 22:ebab951db9f6 542 }
chirashi 22:ebab951db9f6 543
chirashi 33:c934bc793c5a 544 //書込み対象バッファ,書込み開始位置x,書込み開始位置y,読み出し幅x,読み出し高さy,読み出し開始位置(バイト)
chirashi 33:c934bc793c5a 545 bool SDBufferWrite(int8_t TargetBuffer[32][LED_Width], int Startx, int Starty, int Readx, int Ready, int StartByte ){
chirashi 14:0f4d44927b20 546 FILE *fp = fopen(SDFilePath, "r");
chirashi 14:0f4d44927b20 547 if(fp == NULL) {
chirashi 14:0f4d44927b20 548 pc.printf("SDFileOpen Error %s\r\n",SDFilePath);
chirashi 14:0f4d44927b20 549 //error("Could not open file for write\r\n");
chirashi 33:c934bc793c5a 550 return 1;
chirashi 14:0f4d44927b20 551 }else{
chirashi 34:9ee64899b004 552 //pc.printf("SDFileOpen Success %s\r\n",SDFilePath);
chirashi 14:0f4d44927b20 553
chirashi 14:0f4d44927b20 554 //SDDataReadtest
chirashi 16:d02248f44c4b 555 int8_t Data;
chirashi 30:3ac9aa4faa34 556 //先頭2バイトはヘッダ
chirashi 33:c934bc793c5a 557 fseek(fp, 2 + StartByte, SEEK_SET);
chirashi 30:3ac9aa4faa34 558
chirashi 14:0f4d44927b20 559 for(int y = Starty; y < Starty + Ready; y++){
chirashi 14:0f4d44927b20 560 for(int x = Startx; x < Startx + Readx; x++){
chirashi 14:0f4d44927b20 561 Data = getc(fp);
chirashi 14:0f4d44927b20 562 TargetBuffer[y][x] = Data;
chirashi 14:0f4d44927b20 563 }
chirashi 14:0f4d44927b20 564 }
chirashi 14:0f4d44927b20 565 fclose(fp);
chirashi 33:c934bc793c5a 566 return 0;
chirashi 14:0f4d44927b20 567 }
chirashi 14:0f4d44927b20 568 }
chirashi 13:0c542447e6da 569
chirashi 23:6fb1181345a7 570 //スクロールバッファへの書込み用 読み出し高さは16固定
chirashi 23:6fb1181345a7 571 //書込み対象バッファ,書込み開始位置x,書込み開始位置y,読み出し幅x,読み出し高さy
chirashi 23:6fb1181345a7 572 void SDScrollBufferWrite(int8_t TargetBuffer[16][2048], int Startx, int Starty, int Readx, int Ready){
chirashi 24:7232abdf7884 573 //pc.printf("SDScrollBufferWrite\r\n");
chirashi 23:6fb1181345a7 574 FILE *fp = fopen(SDFilePath, "r");
chirashi 23:6fb1181345a7 575 if(fp == NULL) {
chirashi 23:6fb1181345a7 576 pc.printf("SDFileOpen Error %s\r\n",SDFilePath);
chirashi 23:6fb1181345a7 577 //error("Could not open file for write\r\n");
chirashi 23:6fb1181345a7 578 }else{
chirashi 24:7232abdf7884 579 //pc.printf("SDFileOpen Success %s\r\n",SDFilePath);
chirashi 23:6fb1181345a7 580
chirashi 23:6fb1181345a7 581 //SDDataReadtest
chirashi 23:6fb1181345a7 582 int8_t Data;
chirashi 30:3ac9aa4faa34 583 //先頭2バイトはヘッダ
chirashi 30:3ac9aa4faa34 584 fseek(fp, 2, SEEK_SET);
chirashi 23:6fb1181345a7 585 for(int y = Starty; y < Starty + Ready; y++){
chirashi 23:6fb1181345a7 586 for(int x = Startx; x < Startx + Readx; x++){
chirashi 23:6fb1181345a7 587 Data = getc(fp);
chirashi 23:6fb1181345a7 588
chirashi 23:6fb1181345a7 589
chirashi 23:6fb1181345a7 590 //TargetBuffer[y][x] = Data;
chirashi 23:6fb1181345a7 591
chirashi 23:6fb1181345a7 592 if(Data != 0){
chirashi 23:6fb1181345a7 593 bitSet(TargetBuffer[y][x / 8],x % 8);
chirashi 23:6fb1181345a7 594 }else{
chirashi 23:6fb1181345a7 595 bitClear(TargetBuffer[y][x / 8],x % 8);
chirashi 23:6fb1181345a7 596 }
chirashi 23:6fb1181345a7 597 }
chirashi 23:6fb1181345a7 598 }
chirashi 23:6fb1181345a7 599 fclose(fp);
chirashi 23:6fb1181345a7 600 }
chirashi 23:6fb1181345a7 601 }
chirashi 23:6fb1181345a7 602
chirashi 18:b8563e3319fd 603 //路線名表示の使用領域チェック
chirashi 18:b8563e3319fd 604 //路線名表示時に次停車駅を表示するかどうかの判断に使用
chirashi 18:b8563e3319fd 605 //路線名が下半分も使用しているなら次停車駅は表示しない
chirashi 18:b8563e3319fd 606 bool BufferBlankCheck(){
chirashi 18:b8563e3319fd 607 bool NotBlankflag = 0;
chirashi 18:b8563e3319fd 608 for(int y = 16; y < 32; y++){
chirashi 18:b8563e3319fd 609 for(int x = 48; x < 128; x++){
chirashi 18:b8563e3319fd 610 if(LEDBuffer[y][x] != 0){
chirashi 18:b8563e3319fd 611 NotBlankflag = 1;
chirashi 18:b8563e3319fd 612 }
chirashi 18:b8563e3319fd 613 if(NotBlankflag == 1){
chirashi 18:b8563e3319fd 614 break;
chirashi 18:b8563e3319fd 615 }
chirashi 18:b8563e3319fd 616 }
chirashi 18:b8563e3319fd 617 if(NotBlankflag == 1){
chirashi 18:b8563e3319fd 618 break;
chirashi 18:b8563e3319fd 619 }
chirashi 18:b8563e3319fd 620 }
chirashi 18:b8563e3319fd 621 if(NotBlankflag == 0){
chirashi 18:b8563e3319fd 622 pc.printf("Blank\r\n");
chirashi 18:b8563e3319fd 623 return 0;
chirashi 18:b8563e3319fd 624 }else{
chirashi 18:b8563e3319fd 625 pc.printf("Not Blank\r\n");
chirashi 18:b8563e3319fd 626 return 1;
chirashi 18:b8563e3319fd 627 }
chirashi 18:b8563e3319fd 628 }
chirashi 18:b8563e3319fd 629
chirashi 34:9ee64899b004 630 void TimerTick(){
chirashi 34:9ee64899b004 631 //OE = HIGH;
chirashi 34:9ee64899b004 632 //DisplayMode = 1 3段階表示ならば
chirashi 34:9ee64899b004 633 if(DisplayMode == 1){
chirashi 34:9ee64899b004 634 if (ChangeCount == 0){
chirashi 34:9ee64899b004 635 CopyBuffer(LEDBuffer,LEDMainBuffer);
chirashi 34:9ee64899b004 636 ChangeCount = ChangeCount + 1;
chirashi 34:9ee64899b004 637 }else if(ChangeCount == 1 ){
chirashi 34:9ee64899b004 638 CopyBuffer(LEDBuffer2,LEDMainBuffer);
chirashi 34:9ee64899b004 639 ChangeCount = ChangeCount + 1;
chirashi 34:9ee64899b004 640 //ChangeCount = 0;
chirashi 34:9ee64899b004 641 }else if(ChangeCount == 2){
chirashi 34:9ee64899b004 642 CopyBuffer(LEDBuffer3,LEDMainBuffer);
chirashi 34:9ee64899b004 643 ChangeCount = 0;
chirashi 34:9ee64899b004 644 }else{
chirashi 34:9ee64899b004 645 ChangeCount = 0;
chirashi 34:9ee64899b004 646 }
chirashi 34:9ee64899b004 647 }
chirashi 34:9ee64899b004 648 //DisplayMode = 2 2段階表示ならば
chirashi 34:9ee64899b004 649 //次駅表示なし2段階表示に使用
chirashi 34:9ee64899b004 650
chirashi 34:9ee64899b004 651 if (DisplayMode == 2){
chirashi 34:9ee64899b004 652
chirashi 34:9ee64899b004 653 if(ChangeCount == 0 ){
chirashi 34:9ee64899b004 654 //CopyBuffer(LEDBuffer,LEDMainBuffer);
chirashi 34:9ee64899b004 655 CopyBuffer(LEDBuffer5,LEDMainBuffer);
chirashi 34:9ee64899b004 656 ChangeCount = ChangeCount + 1;
chirashi 34:9ee64899b004 657 }else if(ChangeCount == 1){
chirashi 34:9ee64899b004 658 //CopyBuffer(LEDBuffer2,LEDMainBuffer);
chirashi 34:9ee64899b004 659 CopyBuffer(LEDBuffer6,LEDMainBuffer);
chirashi 34:9ee64899b004 660 ChangeCount = 0;
chirashi 34:9ee64899b004 661 }else{
chirashi 34:9ee64899b004 662 ChangeCount = 0;
chirashi 34:9ee64899b004 663 }
chirashi 34:9ee64899b004 664 }
chirashi 34:9ee64899b004 665 //DisplayMode = 3 ならば LEDBuffer2を固定表示
chirashi 34:9ee64899b004 666 if (DisplayMode == 3){
chirashi 34:9ee64899b004 667 CopyBuffer(LEDBuffer,LEDMainBuffer);
chirashi 34:9ee64899b004 668 ChangeCount = 1;
chirashi 34:9ee64899b004 669 }
chirashi 34:9ee64899b004 670
chirashi 34:9ee64899b004 671 //2段階表示 次駅表示あり、路線名なしパターンに使用
chirashi 34:9ee64899b004 672 if(DisplayMode == 4){
chirashi 34:9ee64899b004 673 if(ChangeCount == 1 ){
chirashi 34:9ee64899b004 674 CopyBuffer(LEDBuffer2,LEDMainBuffer);
chirashi 34:9ee64899b004 675 ChangeCount = ChangeCount + 1;
chirashi 34:9ee64899b004 676 }else{
chirashi 34:9ee64899b004 677 CopyBuffer(LEDBuffer3,LEDMainBuffer);
chirashi 34:9ee64899b004 678 ChangeCount = 1;
chirashi 34:9ee64899b004 679 }
chirashi 34:9ee64899b004 680 }
chirashi 34:9ee64899b004 681
chirashi 34:9ee64899b004 682 //DisplayMode = 5 5段階表示ならば
chirashi 34:9ee64899b004 683 if(DisplayMode == 5){
chirashi 34:9ee64899b004 684 if (ChangeCount == 0){
chirashi 34:9ee64899b004 685 CopyBuffer(LEDBuffer,LEDMainBuffer);
chirashi 34:9ee64899b004 686 ChangeCount = ChangeCount + 1;
chirashi 34:9ee64899b004 687 }else if(ChangeCount == 1 ){
chirashi 34:9ee64899b004 688 CopyBuffer(LEDBuffer4,LEDMainBuffer);
chirashi 34:9ee64899b004 689 ChangeCount = ChangeCount + 1;
chirashi 34:9ee64899b004 690 //ChangeCount = 0;
chirashi 34:9ee64899b004 691 }else if(ChangeCount == 2){
chirashi 34:9ee64899b004 692 CopyBuffer(LEDBuffer2,LEDMainBuffer);
chirashi 34:9ee64899b004 693 ChangeCount = ChangeCount + 1;
chirashi 34:9ee64899b004 694 }else if(ChangeCount == 3){
chirashi 34:9ee64899b004 695 CopyBuffer(LEDBuffer3,LEDMainBuffer);
chirashi 34:9ee64899b004 696 ChangeCount = 0;
chirashi 34:9ee64899b004 697 }else{
chirashi 34:9ee64899b004 698 ChangeCount = 0;
chirashi 34:9ee64899b004 699 }
chirashi 34:9ee64899b004 700 }
chirashi 34:9ee64899b004 701
chirashi 34:9ee64899b004 702 //OE = LOW;
chirashi 34:9ee64899b004 703 //クロック確認
chirashi 34:9ee64899b004 704 //pc.printf("CPU SystemCoreClock is %.2f MHz\r\n", (float)SystemCoreClock/1000/1000);
chirashi 34:9ee64899b004 705 }
chirashi 34:9ee64899b004 706
chirashi 34:9ee64899b004 707 void TestDisplayTimerTick(){
chirashi 34:9ee64899b004 708
chirashi 34:9ee64899b004 709 if (ChangeCountTest <= 10){
chirashi 34:9ee64899b004 710 sprintf(SDFilePath,"/sd/E233/LEDTest/LEDTest%d.bin",ChangeCountTest);
chirashi 34:9ee64899b004 711 OE = HIGH;
chirashi 34:9ee64899b004 712 SDBufferWrite(LEDMainBuffer,0,0,128,32,0);
chirashi 34:9ee64899b004 713 OE = LOW;
chirashi 34:9ee64899b004 714 ChangeCountTest = ChangeCountTest + 1;
chirashi 34:9ee64899b004 715 }else{
chirashi 34:9ee64899b004 716 ChangeCountTest = 0;
chirashi 34:9ee64899b004 717 }
chirashi 34:9ee64899b004 718
chirashi 34:9ee64899b004 719 }
chirashi 34:9ee64899b004 720
chirashi 34:9ee64899b004 721 void ScrollTimerTick(){
chirashi 34:9ee64899b004 722 if(ScrollCount < ScrollWriteCount + 80){
chirashi 34:9ee64899b004 723 CopyScrollBuffer(ScrollBuffer,LEDMainBuffer,ScrollCount);
chirashi 34:9ee64899b004 724 ScrollCount = ScrollCount + 1;
chirashi 34:9ee64899b004 725 }else{
chirashi 34:9ee64899b004 726 ScrollCount = 0;
chirashi 34:9ee64899b004 727 }
chirashi 34:9ee64899b004 728 }
chirashi 34:9ee64899b004 729
chirashi 34:9ee64899b004 730
chirashi 34:9ee64899b004 731
chirashi 34:9ee64899b004 732
chirashi 34:9ee64899b004 733
chirashi 32:3bf210e07de7 734 void ScrollRead2(){
chirashi 32:3bf210e07de7 735 //スクロールカウンタを0に戻す
chirashi 32:3bf210e07de7 736 ScrollCount = 0;
chirashi 32:3bf210e07de7 737 //スクロールバッファ初期化
chirashi 32:3bf210e07de7 738 for(int i = 0; i < 2048; i++){
chirashi 32:3bf210e07de7 739 for(int j = 0; j < 16; j++){
chirashi 32:3bf210e07de7 740 ScrollBuffer[j][i] = 0;
chirashi 32:3bf210e07de7 741 }
chirashi 32:3bf210e07de7 742 }
chirashi 32:3bf210e07de7 743
chirashi 32:3bf210e07de7 744
chirashi 32:3bf210e07de7 745 //test
chirashi 32:3bf210e07de7 746 //Initialize StopStationCode
chirashi 32:3bf210e07de7 747 for (int x = 0; x < MaxStopStation; x++){
chirashi 32:3bf210e07de7 748 StopStationCode[x]= 0;
chirashi 32:3bf210e07de7 749 }
chirashi 32:3bf210e07de7 750
chirashi 32:3bf210e07de7 751 int DeptStaIndex = 0;
chirashi 32:3bf210e07de7 752 int TermStaIndex = 0;
chirashi 32:3bf210e07de7 753 //sprintf(SDFilePath,"/sd/E233/RoutePattern/RoutePattern%d.bin",1);
chirashi 33:c934bc793c5a 754 //sprintf(SDFilePath,"/sd/E233/RoutePattern/RoutePattern001001.bin");
chirashi 33:c934bc793c5a 755 sprintf(SDFilePath,"/sd/E233/RoutePattern/RoutePattern%03d%03d.bin",LineNumber,RoutePatternNumber);
chirashi 33:c934bc793c5a 756 pc.printf("%s\r\n",SDFilePath);
chirashi 32:3bf210e07de7 757
chirashi 32:3bf210e07de7 758 //始発駅インデックス取得
chirashi 32:3bf210e07de7 759 for(int i = 0; i < MaxStopStation; i++){
chirashi 32:3bf210e07de7 760 FILE *fp = fopen(SDFilePath, "r");
chirashi 32:3bf210e07de7 761 if(fp == NULL) {
chirashi 33:c934bc793c5a 762 //停車駅データを読み込めないならスクロールを無効にする
chirashi 32:3bf210e07de7 763 pc.printf("SDFileOpen Error %s\r\n",SDFilePath);
chirashi 33:c934bc793c5a 764 Scroll = 0;
chirashi 32:3bf210e07de7 765 break;
chirashi 32:3bf210e07de7 766 }else{
chirashi 32:3bf210e07de7 767 //停車駅コード取得
chirashi 32:3bf210e07de7 768 int test = 0;
chirashi 32:3bf210e07de7 769 int test2 = 0;
chirashi 32:3bf210e07de7 770 fseek(fp, i*2 + 4, SEEK_SET);
chirashi 32:3bf210e07de7 771 test = getc(fp);
chirashi 32:3bf210e07de7 772 test = test << 8;
chirashi 32:3bf210e07de7 773
chirashi 32:3bf210e07de7 774 fseek(fp, i*2 + 4 + 1, SEEK_SET);
chirashi 32:3bf210e07de7 775 test2 = getc(fp);
chirashi 32:3bf210e07de7 776 test = test ^ test2;
chirashi 32:3bf210e07de7 777 fclose(fp);
chirashi 32:3bf210e07de7 778 if(test == DeptStaNumber){
chirashi 32:3bf210e07de7 779 DeptStaIndex = i + 1;
chirashi 32:3bf210e07de7 780 pc.printf("DeptStaIndex:%d\r\n",DeptStaIndex);
chirashi 32:3bf210e07de7 781 pc.printf("break\r\n");
chirashi 32:3bf210e07de7 782 break;
chirashi 32:3bf210e07de7 783
chirashi 32:3bf210e07de7 784 }
chirashi 32:3bf210e07de7 785 }
chirashi 32:3bf210e07de7 786 pc.printf("DeptSta-loopcount:%d\r\n",i);
chirashi 32:3bf210e07de7 787 }
chirashi 32:3bf210e07de7 788
chirashi 32:3bf210e07de7 789 //終着駅インデックス取得
chirashi 32:3bf210e07de7 790 for(int i = 0; i < MaxStopStation; i++){
chirashi 32:3bf210e07de7 791 FILE *fp = fopen(SDFilePath, "r");
chirashi 32:3bf210e07de7 792 if(fp == NULL) {
chirashi 33:c934bc793c5a 793 //停車駅データを読み込めないならスクロールを無効にする
chirashi 32:3bf210e07de7 794 pc.printf("SDFileOpen Error %s\r\n",SDFilePath);
chirashi 33:c934bc793c5a 795 Scroll = 0;
chirashi 32:3bf210e07de7 796 break;
chirashi 32:3bf210e07de7 797 }else{
chirashi 32:3bf210e07de7 798 //停車駅コード取得
chirashi 32:3bf210e07de7 799 int test = 0;
chirashi 32:3bf210e07de7 800 int test2 = 0;
chirashi 32:3bf210e07de7 801 fseek(fp, i*2 + 4, SEEK_SET);
chirashi 32:3bf210e07de7 802 test = getc(fp);
chirashi 32:3bf210e07de7 803 test = test << 8;
chirashi 32:3bf210e07de7 804
chirashi 32:3bf210e07de7 805 fseek(fp, i*2 + 4 + 1, SEEK_SET);
chirashi 32:3bf210e07de7 806 test2 = getc(fp);
chirashi 32:3bf210e07de7 807 test = test ^ test2;
chirashi 32:3bf210e07de7 808 fclose(fp);
chirashi 32:3bf210e07de7 809 if(test == TermStaNumber){
chirashi 32:3bf210e07de7 810 TermStaIndex = i + 1;
chirashi 32:3bf210e07de7 811 pc.printf("TermStaIndex:%d\r\n",TermStaIndex);
chirashi 32:3bf210e07de7 812 pc.printf("break\r\n");
chirashi 32:3bf210e07de7 813 break;
chirashi 32:3bf210e07de7 814
chirashi 32:3bf210e07de7 815 }
chirashi 32:3bf210e07de7 816 }
chirashi 32:3bf210e07de7 817 pc.printf("TermSta-loopcount:%d\r\n",i);
chirashi 32:3bf210e07de7 818 }
chirashi 32:3bf210e07de7 819
chirashi 32:3bf210e07de7 820
chirashi 32:3bf210e07de7 821 if(DeptStaIndex != 0 && TermStaIndex != 0){
chirashi 32:3bf210e07de7 822 //SDRead StopStationCode
chirashi 32:3bf210e07de7 823 //始発駅インデックス < 終着駅インデックスなら
chirashi 32:3bf210e07de7 824 if(DeptStaIndex < TermStaIndex){
chirashi 32:3bf210e07de7 825 for(int i = 0; i < MaxStopStation; i++){
chirashi 32:3bf210e07de7 826 //停車駅コード取得
chirashi 32:3bf210e07de7 827 int test = 0;
chirashi 32:3bf210e07de7 828 int test2 = 0;
chirashi 32:3bf210e07de7 829
chirashi 32:3bf210e07de7 830 FILE *fp = fopen(SDFilePath, "r");
chirashi 32:3bf210e07de7 831 if(fp == NULL) {
chirashi 33:c934bc793c5a 832 //停車駅データを読み込めないならスクロールを無効にする
chirashi 32:3bf210e07de7 833 pc.printf("SDFileOpen Error %s\r\n",SDFilePath);
chirashi 33:c934bc793c5a 834 Scroll = 0;
chirashi 32:3bf210e07de7 835 break;
chirashi 32:3bf210e07de7 836 }else{
chirashi 32:3bf210e07de7 837 //pc.printf("SDFileOpen Success %s\r\n",SDFilePath);
chirashi 32:3bf210e07de7 838 fseek(fp, DeptStaIndex*2 + i*2 + 4, SEEK_SET);
chirashi 32:3bf210e07de7 839 test = getc(fp);
chirashi 32:3bf210e07de7 840 test = test << 8;
chirashi 32:3bf210e07de7 841
chirashi 32:3bf210e07de7 842 fseek(fp, DeptStaIndex*2 + i*2 + 4 + 1, SEEK_SET);
chirashi 32:3bf210e07de7 843 test2 = getc(fp);
chirashi 32:3bf210e07de7 844 test = test ^ test2;
chirashi 32:3bf210e07de7 845
chirashi 32:3bf210e07de7 846 StopStationCode[i] = test;
chirashi 32:3bf210e07de7 847 pc.printf("StopStationCode[%d]:%d\r\n",i,StopStationCode[i]);
chirashi 32:3bf210e07de7 848
chirashi 32:3bf210e07de7 849 //読み込んだ駅名コードが終着駅コードと同じならばループを抜ける
chirashi 32:3bf210e07de7 850 if(StopStationCode[i] == TermStaNumber){
chirashi 32:3bf210e07de7 851 break;
chirashi 32:3bf210e07de7 852 }
chirashi 32:3bf210e07de7 853 fclose(fp);
chirashi 32:3bf210e07de7 854 }
chirashi 32:3bf210e07de7 855 }
chirashi 32:3bf210e07de7 856 }
chirashi 32:3bf210e07de7 857
chirashi 32:3bf210e07de7 858
chirashi 32:3bf210e07de7 859
chirashi 32:3bf210e07de7 860 }else{
chirashi 32:3bf210e07de7 861 //始発駅インデックス、終着駅インデックスのどちらか、または両方が0の場合運用パターンデータに駅名コードが存在しない
chirashi 32:3bf210e07de7 862 pc.printf("Error DeptStaIndex or TermStaIndex = 0\r\n");
chirashi 32:3bf210e07de7 863 pc.printf("Error DeptStaIndex:%d,TermStaIndex:%d",DeptStaIndex,TermStaIndex);
chirashi 33:c934bc793c5a 864 Scroll = 0;
chirashi 32:3bf210e07de7 865 }
chirashi 32:3bf210e07de7 866
chirashi 32:3bf210e07de7 867 //test end
chirashi 32:3bf210e07de7 868
chirashi 32:3bf210e07de7 869 //ScrollDebug
chirashi 32:3bf210e07de7 870 ScrollWriteCount = 80;
chirashi 32:3bf210e07de7 871
chirashi 32:3bf210e07de7 872 //この電車の停車駅は、
chirashi 32:3bf210e07de7 873 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",1);
chirashi 32:3bf210e07de7 874 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16);
chirashi 32:3bf210e07de7 875 ScrollWriteCount = ScrollWriteCount + 80;
chirashi 32:3bf210e07de7 876 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",2);
chirashi 32:3bf210e07de7 877 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16);
chirashi 32:3bf210e07de7 878 ScrollWriteCount = ScrollWriteCount + 80;
chirashi 32:3bf210e07de7 879
chirashi 33:c934bc793c5a 880 int StaNameLength = 0;
chirashi 32:3bf210e07de7 881 for(int i = 0; i < MaxStopStation; i++){
chirashi 32:3bf210e07de7 882 if(StopStationCode[i] == 0){
chirashi 33:c934bc793c5a 883 //駅名コードが0ならScrollWriteCountから終着駅の文字数 x 16 + 16 を引いてループを抜ける
chirashi 33:c934bc793c5a 884 ScrollWriteCount = ScrollWriteCount - (StaNameLength * 16 + 16);
chirashi 32:3bf210e07de7 885 break;
chirashi 32:3bf210e07de7 886 }
chirashi 32:3bf210e07de7 887 //駅名
chirashi 32:3bf210e07de7 888 sprintf(SDFilePath,"/sd/E233/StationName/%d.bin",StopStationCode[i]);
chirashi 32:3bf210e07de7 889 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,128,16);
chirashi 32:3bf210e07de7 890
chirashi 32:3bf210e07de7 891 //駅名文字数取得
chirashi 33:c934bc793c5a 892 //int test = 0;
chirashi 32:3bf210e07de7 893 sprintf(SDFilePath,"/sd/E233/StationNameLength.bin");
chirashi 32:3bf210e07de7 894 FILE *fp = fopen(SDFilePath, "r");
chirashi 32:3bf210e07de7 895 if(fp == NULL) {
chirashi 32:3bf210e07de7 896 pc.printf("SDFileOpen Error %s\r\n",SDFilePath);
chirashi 32:3bf210e07de7 897 }else{
chirashi 32:3bf210e07de7 898 //pc.printf("SDFileOpen Success %s\r\n",SDFilePath);
chirashi 32:3bf210e07de7 899 fseek(fp, StopStationCode[i], SEEK_SET);
chirashi 33:c934bc793c5a 900 StaNameLength = getc(fp);
chirashi 33:c934bc793c5a 901 //pc.printf("StationNameLength:%d\r\n",StaNameLength);
chirashi 32:3bf210e07de7 902 fclose(fp);
chirashi 32:3bf210e07de7 903 }
chirashi 32:3bf210e07de7 904
chirashi 33:c934bc793c5a 905 ScrollWriteCount = ScrollWriteCount + (StaNameLength * 16);
chirashi 32:3bf210e07de7 906 sprintf(SDFilePath,"/sd/E233/StopStation/0x8132.bin");
chirashi 32:3bf210e07de7 907 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,16,16);
chirashi 32:3bf210e07de7 908 ScrollWriteCount = ScrollWriteCount + 16;
chirashi 32:3bf210e07de7 909 }
chirashi 33:c934bc793c5a 910
chirashi 33:c934bc793c5a 911
chirashi 33:c934bc793c5a 912
chirashi 32:3bf210e07de7 913 ScrollWriteCount = ScrollWriteCount - 16;
chirashi 32:3bf210e07de7 914 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",3);
chirashi 32:3bf210e07de7 915 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16);
chirashi 32:3bf210e07de7 916 ScrollWriteCount = ScrollWriteCount + 80;
chirashi 32:3bf210e07de7 917 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",4);
chirashi 32:3bf210e07de7 918 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16);
chirashi 32:3bf210e07de7 919 ScrollWriteCount = ScrollWriteCount + 80;
chirashi 32:3bf210e07de7 920
chirashi 32:3bf210e07de7 921 }
chirashi 18:b8563e3319fd 922
chirashi 18:b8563e3319fd 923
chirashi 18:b8563e3319fd 924 void SDFileRead(){
chirashi 33:c934bc793c5a 925 //バッファ初期化
chirashi 33:c934bc793c5a 926 ClearBuffer(LEDBuffer);
chirashi 33:c934bc793c5a 927 ClearBuffer(LEDBuffer2);
chirashi 33:c934bc793c5a 928 ClearBuffer(LEDBuffer3);
chirashi 33:c934bc793c5a 929 ClearBuffer(LEDBuffer4);
chirashi 33:c934bc793c5a 930 ClearBuffer(LEDBuffer5);
chirashi 33:c934bc793c5a 931 ClearBuffer(LEDBuffer6);
chirashi 33:c934bc793c5a 932
chirashi 19:26e0fae24da6 933
chirashi 19:26e0fae24da6 934 //3段階表示 LEDBuffer [種別]路線名(・次駅)
chirashi 19:26e0fae24da6 935 // LEDBuffer2 [種別]行先・次駅
chirashi 19:26e0fae24da6 936 // LEDBuffer3 [種別(英)]行先(英)・次駅(英)
chirashi 19:26e0fae24da6 937 //路線コードが0なら2段階表示に変更
chirashi 19:26e0fae24da6 938 if(LineNumber == 0){
chirashi 19:26e0fae24da6 939 DisplayMode = 4;
chirashi 19:26e0fae24da6 940 }else{
chirashi 19:26e0fae24da6 941 DisplayMode = 1;
chirashi 19:26e0fae24da6 942 }
chirashi 33:c934bc793c5a 943
chirashi 33:c934bc793c5a 944 //SDCard
chirashi 33:c934bc793c5a 945 //種別
chirashi 33:c934bc793c5a 946 sprintf(SDFilePath,"/sd/E233/Kind/%d.bin",KindNumber);
chirashi 33:c934bc793c5a 947 SDBufferWrite(LEDBuffer,0,0,48,32,0);
chirashi 33:c934bc793c5a 948 sprintf(SDFilePath,"/sd/E233/Kind/%d.bin",KindNumber);
chirashi 33:c934bc793c5a 949 SDBufferWrite(LEDBuffer2,0,0,48,32,0);
chirashi 33:c934bc793c5a 950 //種別(英語)
chirashi 33:c934bc793c5a 951 sprintf(SDFilePath,"/sd/E233/KindE/%d.bin",KindNumber);
chirashi 33:c934bc793c5a 952 SDBufferWrite(LEDBuffer3,0,0,48,32,0);
chirashi 33:c934bc793c5a 953
chirashi 33:c934bc793c5a 954 //路線名
chirashi 33:c934bc793c5a 955 sprintf(SDFilePath,"/sd/E233/Line/%d.bin",LineNumber);
chirashi 33:c934bc793c5a 956 //路線名データが読み込めない場合(返って来た値が0でない場合)2段階表示に変更
chirashi 33:c934bc793c5a 957 if(SDBufferWrite(LEDBuffer,48,0,80,32,0) != 0){
chirashi 33:c934bc793c5a 958 DisplayMode = 4;
chirashi 33:c934bc793c5a 959 }
chirashi 33:c934bc793c5a 960
chirashi 33:c934bc793c5a 961 //行先
chirashi 33:c934bc793c5a 962 sprintf(SDFilePath,"/sd/E233/For/%d.bin",ForNumber);
chirashi 33:c934bc793c5a 963 SDBufferWrite(LEDBuffer2,48,0,80,16,0);
chirashi 33:c934bc793c5a 964 //行先(英語)
chirashi 33:c934bc793c5a 965 //sprintf(SDFilePath,"/sd/E233/ForE/%d.bin",ForNumber);
chirashi 33:c934bc793c5a 966 //SDBufferWrite(LEDBuffer3,48,0,80,16,0);
chirashi 33:c934bc793c5a 967 sprintf(SDFilePath,"/sd/E233/For/%d.bin",ForNumber);
chirashi 33:c934bc793c5a 968 SDBufferWrite(LEDBuffer3,48,0,80,16,1280);
chirashi 33:c934bc793c5a 969
chirashi 33:c934bc793c5a 970 //次停車駅(路線名表示)
chirashi 33:c934bc793c5a 971 //路線名表示の次停車駅は路線名表示が上半分に収まるときのみ表示
chirashi 33:c934bc793c5a 972 if(BufferBlankCheck() == 0){
chirashi 33:c934bc793c5a 973 sprintf(SDFilePath,"/sd/E233/NextStation/%d.bin",NextStaNumber);
chirashi 33:c934bc793c5a 974 SDBufferWrite(LEDBuffer,48,16,80,16,0);
chirashi 33:c934bc793c5a 975 }else if(Scroll == 1){
chirashi 33:c934bc793c5a 976 //路線名が下半分も使用している&スクロール有効の場合4段階表示に切り替え
chirashi 33:c934bc793c5a 977 DisplayMode = 5;
chirashi 33:c934bc793c5a 978 sprintf(SDFilePath,"/sd/E233/Kind/%d.bin",KindNumber);
chirashi 33:c934bc793c5a 979 SDBufferWrite(LEDBuffer4,0,0,48,32,0);
chirashi 33:c934bc793c5a 980 sprintf(SDFilePath,"/sd/E233/Line/%d.bin",LineNumber);
chirashi 33:c934bc793c5a 981 SDBufferWrite(LEDBuffer4,48,0,80,16,1280);
chirashi 33:c934bc793c5a 982 }
chirashi 33:c934bc793c5a 983 //次停車駅
chirashi 33:c934bc793c5a 984 sprintf(SDFilePath,"/sd/E233/NextStation/%d.bin",NextStaNumber);
chirashi 33:c934bc793c5a 985 SDBufferWrite(LEDBuffer2,48,16,80,16,0);
chirashi 33:c934bc793c5a 986 //次停車駅(英語)
chirashi 33:c934bc793c5a 987 //sprintf(SDFilePath,"/sd/E233/NextStationE/%d.bin",NextStaNumber);
chirashi 33:c934bc793c5a 988 //SDBufferWrite(LEDBuffer3,48,16,80,16,0);
chirashi 33:c934bc793c5a 989 sprintf(SDFilePath,"/sd/E233/NextStation/%d.bin",NextStaNumber);
chirashi 33:c934bc793c5a 990 SDBufferWrite(LEDBuffer3,48,16,80,16,1280);
chirashi 33:c934bc793c5a 991
chirashi 33:c934bc793c5a 992
chirashi 33:c934bc793c5a 993
chirashi 24:7232abdf7884 994
chirashi 24:7232abdf7884 995 //2段階(次駅なし)
chirashi 19:26e0fae24da6 996 //次駅コードが0なら次駅なしの2段階表示に変更
chirashi 33:c934bc793c5a 997 // 2段階表示 LEDBuffer5 [種別]行先(次駅表示なし)
chirashi 33:c934bc793c5a 998 // LEDBuffer6 [種別]路線名
chirashi 19:26e0fae24da6 999 //路線名がない場合(E233-0など)は固定表示
chirashi 19:26e0fae24da6 1000
chirashi 19:26e0fae24da6 1001 if(NextStaNumber == 0){
chirashi 19:26e0fae24da6 1002 //種別
chirashi 19:26e0fae24da6 1003 sprintf(SDFilePath,"/sd/E233/Kind/%d.bin",KindNumber);
chirashi 33:c934bc793c5a 1004 //SDBufferWrite(LEDBuffer,0,0,48,32,0);
chirashi 33:c934bc793c5a 1005 //SDBufferWrite(LEDBuffer2,0,0,48,32,0);
chirashi 33:c934bc793c5a 1006 SDBufferWrite(LEDBuffer5,0,0,48,32,0);
chirashi 33:c934bc793c5a 1007 SDBufferWrite(LEDBuffer6,0,0,48,32,0);
chirashi 19:26e0fae24da6 1008
chirashi 19:26e0fae24da6 1009 //路線名
chirashi 19:26e0fae24da6 1010 sprintf(SDFilePath,"/sd/E233/Line2/%d.bin",LineNumber);
chirashi 33:c934bc793c5a 1011 //SDBufferWrite(LEDBuffer2,48,0,80,32,0);
chirashi 33:c934bc793c5a 1012 SDBufferWrite(LEDBuffer6,48,0,80,32,0);
chirashi 19:26e0fae24da6 1013 //行先
chirashi 19:26e0fae24da6 1014 sprintf(SDFilePath,"/sd/E233/For2/%d.bin",ForNumber);
chirashi 33:c934bc793c5a 1015 //SDBufferWrite(LEDBuffer,48,0,80,32,0);
chirashi 33:c934bc793c5a 1016 SDBufferWrite(LEDBuffer5,48,0,80,32,0);
chirashi 19:26e0fae24da6 1017
chirashi 19:26e0fae24da6 1018 //路線コードが0なら行先で固定表示
chirashi 19:26e0fae24da6 1019 if(LineNumber == 0){
chirashi 19:26e0fae24da6 1020 DisplayMode = 3;
chirashi 19:26e0fae24da6 1021 }else{
chirashi 19:26e0fae24da6 1022 DisplayMode = 2;
chirashi 19:26e0fae24da6 1023 }
chirashi 19:26e0fae24da6 1024 }
chirashi 19:26e0fae24da6 1025
chirashi 24:7232abdf7884 1026
chirashi 24:7232abdf7884 1027 //全面種別固定表示
chirashi 24:7232abdf7884 1028 //路線名、行先、次駅がすべて0なら種別を全面に固定表示
chirashi 24:7232abdf7884 1029 if(LineNumber == 0 && ForNumber == 0 && NextStaNumber == 0){
chirashi 24:7232abdf7884 1030
chirashi 24:7232abdf7884 1031 //種別
chirashi 24:7232abdf7884 1032 sprintf(SDFilePath,"/sd/E233/Kind/%d.bin",KindNumber);
chirashi 33:c934bc793c5a 1033 SDBufferWrite(LEDBuffer,0,0,48,32,0);
chirashi 24:7232abdf7884 1034 sprintf(SDFilePath,"/sd/E233/Kind2/%d.bin",KindNumber);
chirashi 33:c934bc793c5a 1035 SDBufferWrite(LEDBuffer,0,0,128,32,0);
chirashi 24:7232abdf7884 1036 //固定表示に変更
chirashi 24:7232abdf7884 1037 DisplayMode = 3;
chirashi 24:7232abdf7884 1038 }
chirashi 24:7232abdf7884 1039
chirashi 33:c934bc793c5a 1040 //全面行先固定表示
chirashi 33:c934bc793c5a 1041 //DisplayMode:3 固定表示 LEDBuffer 行先(次駅表示なし 32x128)
chirashi 33:c934bc793c5a 1042 //路線名、種別、次駅がすべて0なら行先を全面に固定表示
chirashi 33:c934bc793c5a 1043 if(LineNumber == 0 && KindNumber == 0 && NextStaNumber == 0){
chirashi 19:26e0fae24da6 1044 //データ作ってないからとりあえず80x32の行先データを表示
chirashi 33:c934bc793c5a 1045 //前面行先データフォルダ:For3
chirashi 19:26e0fae24da6 1046
chirashi 33:c934bc793c5a 1047 sprintf(SDFilePath,"/sd/E233/For3/%d.bin",ForNumber);
chirashi 33:c934bc793c5a 1048 SDBufferWrite(LEDBuffer,0,0,128,32,0);
chirashi 33:c934bc793c5a 1049 //固定表示に変更
chirashi 19:26e0fae24da6 1050 DisplayMode = 3;
chirashi 19:26e0fae24da6 1051 }
chirashi 18:b8563e3319fd 1052
chirashi 20:4f9719182866 1053 //Debug
chirashi 20:4f9719182866 1054 if(Debug == 1){
chirashi 20:4f9719182866 1055 //DataSerialOut
chirashi 20:4f9719182866 1056 for(int y = 0; y < 32; y++){
chirashi 20:4f9719182866 1057 for(int x = 0; x <128; x++){
chirashi 20:4f9719182866 1058 if(LEDBuffer[y][x]== 0){
chirashi 20:4f9719182866 1059 //pc.printf("0,");
chirashi 20:4f9719182866 1060 pc.printf(" ");
chirashi 20:4f9719182866 1061 }else{
chirashi 20:4f9719182866 1062 //pc.printf("#");
chirashi 20:4f9719182866 1063 pc.printf("%.02d",LEDBuffer[y][x]);
chirashi 20:4f9719182866 1064 }
chirashi 20:4f9719182866 1065 }
chirashi 20:4f9719182866 1066 pc.printf("\r\n");
chirashi 20:4f9719182866 1067 }
chirashi 20:4f9719182866 1068 }
chirashi 18:b8563e3319fd 1069
chirashi 18:b8563e3319fd 1070 }
chirashi 18:b8563e3319fd 1071
chirashi 18:b8563e3319fd 1072
chirashi 31:d186b04b983e 1073 int CharToInt(unsigned char Sertemp1,unsigned char Sertemp2,unsigned char Sertemp3){
chirashi 31:d186b04b983e 1074 int n1 = 0 ;
chirashi 31:d186b04b983e 1075 int n2 = 0 ;
chirashi 31:d186b04b983e 1076 int n3 = 0 ;
chirashi 31:d186b04b983e 1077 int n = 0;
chirashi 31:d186b04b983e 1078
chirashi 31:d186b04b983e 1079 if ( Sertemp1 < '0' || Sertemp1 > '9' ) {
chirashi 31:d186b04b983e 1080 // error
chirashi 31:d186b04b983e 1081 } else {
chirashi 31:d186b04b983e 1082 n1 = (int)(Sertemp1 - '0') ;
chirashi 31:d186b04b983e 1083 //pc.printf("%d,",n1);
chirashi 31:d186b04b983e 1084 }
chirashi 31:d186b04b983e 1085 if ( Sertemp2 < '0' || Sertemp2 > '9' ) {
chirashi 31:d186b04b983e 1086 // error
chirashi 31:d186b04b983e 1087 } else {
chirashi 31:d186b04b983e 1088 n2 = (int)(Sertemp2 - '0') ;
chirashi 31:d186b04b983e 1089 //pc.printf("%d,",n2);
chirashi 31:d186b04b983e 1090 }
chirashi 31:d186b04b983e 1091 if ( Sertemp3 < '0' || Sertemp3 > '9' ) {
chirashi 31:d186b04b983e 1092 // error
chirashi 31:d186b04b983e 1093 } else {
chirashi 31:d186b04b983e 1094 n3 = (int)(Sertemp3 - '0') ;
chirashi 31:d186b04b983e 1095 //pc.printf("%d\r\n",n3);
chirashi 31:d186b04b983e 1096 }
chirashi 31:d186b04b983e 1097 n = (n1 * 100) + (n2 * 10) + n3;
chirashi 31:d186b04b983e 1098 return n;
chirashi 31:d186b04b983e 1099 }
chirashi 31:d186b04b983e 1100
chirashi 31:d186b04b983e 1101
chirashi 17:95bcbc53d96b 1102 void pc_rx(){
chirashi 17:95bcbc53d96b 1103 //pc.putc(pc.getc());
chirashi 17:95bcbc53d96b 1104
chirashi 22:ebab951db9f6 1105 OE = HIGH;
chirashi 17:95bcbc53d96b 1106
chirashi 17:95bcbc53d96b 1107 if (pc.readable() == 1) { // 受信したデータが存在する
chirashi 30:3ac9aa4faa34 1108 if (busyflag == false){
chirashi 30:3ac9aa4faa34 1109 SerialBuffer[count] = pc.getc(); // 受信データを読み込む
chirashi 30:3ac9aa4faa34 1110
chirashi 30:3ac9aa4faa34 1111 }else{
chirashi 30:3ac9aa4faa34 1112 pc.printf("busy\r\n");
chirashi 30:3ac9aa4faa34 1113 }
chirashi 30:3ac9aa4faa34 1114
chirashi 30:3ac9aa4faa34 1115 if (count > 29 || SerialBuffer[count] == '$') { // 文字数が既定の個数を超えた場合、又は終了文字を受信した場合
chirashi 30:3ac9aa4faa34 1116 busyflag = true;
chirashi 30:3ac9aa4faa34 1117
chirashi 30:3ac9aa4faa34 1118 //SerialBuffer[count] = '\0'; // 末尾に終端文字を入れる
chirashi 30:3ac9aa4faa34 1119
chirashi 30:3ac9aa4faa34 1120 for(int a = 0; a < count; a++){
chirashi 30:3ac9aa4faa34 1121 ABuffer[a] = SerialBuffer[a];
chirashi 30:3ac9aa4faa34 1122 }
chirashi 30:3ac9aa4faa34 1123
chirashi 17:95bcbc53d96b 1124 count = 0;
chirashi 24:7232abdf7884 1125
chirashi 24:7232abdf7884 1126 //路線名 L
chirashi 30:3ac9aa4faa34 1127 if(ABuffer[0] == 'L'){
chirashi 31:d186b04b983e 1128 //路線名 L
chirashi 31:d186b04b983e 1129 //ABuffer[0]は'L'
chirashi 31:d186b04b983e 1130 LineNumber = CharToInt(ABuffer[1],ABuffer[2],ABuffer[3]);
chirashi 31:d186b04b983e 1131 pc.printf("Line:%d\r\n",LineNumber);
chirashi 18:b8563e3319fd 1132 }
chirashi 18:b8563e3319fd 1133
chirashi 24:7232abdf7884 1134 //種別 K
chirashi 30:3ac9aa4faa34 1135 if(ABuffer[0] == 'K'){
chirashi 31:d186b04b983e 1136 //種別 K
chirashi 31:d186b04b983e 1137 //ABuffer[0]は'K'
chirashi 31:d186b04b983e 1138 KindNumber = CharToInt(ABuffer[1],ABuffer[2],ABuffer[3]);
chirashi 31:d186b04b983e 1139 pc.printf("Kind:%d\r\n",KindNumber);
chirashi 18:b8563e3319fd 1140 }
chirashi 18:b8563e3319fd 1141
chirashi 24:7232abdf7884 1142 //行先 F
chirashi 30:3ac9aa4faa34 1143 if(ABuffer[0] == 'F'){
chirashi 31:d186b04b983e 1144 //行先 F
chirashi 31:d186b04b983e 1145 //ABuffer[0]は'F'
chirashi 31:d186b04b983e 1146 ForNumber = CharToInt(ABuffer[1],ABuffer[2],ABuffer[3]);
chirashi 31:d186b04b983e 1147 pc.printf("For:%d\r\n",ForNumber);
chirashi 18:b8563e3319fd 1148 }
chirashi 18:b8563e3319fd 1149
chirashi 31:d186b04b983e 1150 //次停車駅 N
chirashi 30:3ac9aa4faa34 1151 if(ABuffer[0] == 'N'){
chirashi 31:d186b04b983e 1152 //次停車駅 N
chirashi 31:d186b04b983e 1153 //ABuffer[0]は'N'
chirashi 31:d186b04b983e 1154 NextStaNumber = CharToInt(ABuffer[1],ABuffer[2],ABuffer[3]);
chirashi 31:d186b04b983e 1155 pc.printf("NextStation:%d\r\n",NextStaNumber);
chirashi 19:26e0fae24da6 1156 }
chirashi 18:b8563e3319fd 1157
chirashi 33:c934bc793c5a 1158
chirashi 33:c934bc793c5a 1159
chirashi 33:c934bc793c5a 1160 //起動 Set
chirashi 33:c934bc793c5a 1161 if(ABuffer[0] == 'S' && ABuffer[1] == 'e' && ABuffer[2] == 't'){
chirashi 33:c934bc793c5a 1162 pc.printf("Set\r\n");
chirashi 33:c934bc793c5a 1163 SDFileRead();
chirashi 33:c934bc793c5a 1164 }else if(ABuffer[0] == 'S'){
chirashi 33:c934bc793c5a 1165 //スクロール有効/無効 S
chirashi 30:3ac9aa4faa34 1166 unsigned char Sertemp1 = ABuffer[1];
chirashi 24:7232abdf7884 1167 int n1 = 0 ;
chirashi 24:7232abdf7884 1168 int n = 0;
chirashi 24:7232abdf7884 1169
chirashi 24:7232abdf7884 1170 if ( Sertemp1 < '0' || Sertemp1 > '9' ) {
chirashi 24:7232abdf7884 1171 // error
chirashi 24:7232abdf7884 1172 } else {
chirashi 24:7232abdf7884 1173 n1 = (int)(Sertemp1 - '0') ;
chirashi 24:7232abdf7884 1174 //pc.printf("%d,",n1);
chirashi 24:7232abdf7884 1175 }
chirashi 24:7232abdf7884 1176
chirashi 24:7232abdf7884 1177 n = n1;
chirashi 24:7232abdf7884 1178 Scroll = n;
chirashi 24:7232abdf7884 1179 pc.printf("Scroll:%d\r\n",n);
chirashi 24:7232abdf7884 1180 }
chirashi 24:7232abdf7884 1181
chirashi 31:d186b04b983e 1182 //データ一括設定
chirashi 31:d186b04b983e 1183 //先頭文字:'A'
chirashi 31:d186b04b983e 1184 if(ABuffer[0] == 'A'){
chirashi 31:d186b04b983e 1185 //路線名 L
chirashi 31:d186b04b983e 1186 //ABuffer[1]は'L'
chirashi 31:d186b04b983e 1187 LineNumber = CharToInt(ABuffer[2],ABuffer[3],ABuffer[4]);
chirashi 31:d186b04b983e 1188 pc.printf("Line:%d\r\n",LineNumber);
chirashi 31:d186b04b983e 1189
chirashi 31:d186b04b983e 1190 //種別 K
chirashi 31:d186b04b983e 1191 //ABuffer[5]は'K'
chirashi 31:d186b04b983e 1192 KindNumber = CharToInt(ABuffer[6],ABuffer[7],ABuffer[8]);
chirashi 31:d186b04b983e 1193 pc.printf("Kind:%d\r\n",KindNumber);
chirashi 31:d186b04b983e 1194
chirashi 31:d186b04b983e 1195 //行先 F
chirashi 31:d186b04b983e 1196 //ABuffer[9]は'F'
chirashi 31:d186b04b983e 1197 ForNumber = CharToInt(ABuffer[10],ABuffer[11],ABuffer[12]);
chirashi 31:d186b04b983e 1198 pc.printf("For:%d\r\n",ForNumber);
chirashi 31:d186b04b983e 1199
chirashi 31:d186b04b983e 1200 //次停車駅 N
chirashi 31:d186b04b983e 1201 //ABuffer[13]は'N'
chirashi 31:d186b04b983e 1202 NextStaNumber = CharToInt(ABuffer[14],ABuffer[15],ABuffer[16]);
chirashi 31:d186b04b983e 1203 pc.printf("NextStation:%d\r\n",NextStaNumber);
chirashi 31:d186b04b983e 1204
chirashi 31:d186b04b983e 1205 //一括設定時は続けてSDからの読み込み
chirashi 31:d186b04b983e 1206 pc.printf("Set\r\n");
chirashi 31:d186b04b983e 1207 SDFileRead();
chirashi 31:d186b04b983e 1208 Scroll = 0;
chirashi 31:d186b04b983e 1209 //即時反映
chirashi 31:d186b04b983e 1210 TimerTick();
chirashi 31:d186b04b983e 1211 }
chirashi 31:d186b04b983e 1212
chirashi 32:3bf210e07de7 1213 //データ一括設定2
chirashi 32:3bf210e07de7 1214 //先頭文字:'B'
chirashi 33:c934bc793c5a 1215 //BLxxxNxxxPxxxyyyzzzKxxxFxxxSx$
chirashi 33:c934bc793c5a 1216 //Lxxx:路線コード
chirashi 33:c934bc793c5a 1217 //Nxxx:次駅コード
chirashi 33:c934bc793c5a 1218 //Pxxxyyyzzz:停車駅パターン(xxx:運用パターン番号 yyy:始発駅コード zzz:終着駅コード)
chirashi 33:c934bc793c5a 1219 //Kxxx:種別コード
chirashi 33:c934bc793c5a 1220 //Fxxx:行先コード
chirashi 33:c934bc793c5a 1221 //Sx:スクロール(1:有効 0:無効)
chirashi 32:3bf210e07de7 1222 if(ABuffer[0] == 'B'){
chirashi 32:3bf210e07de7 1223 //路線名 L
chirashi 32:3bf210e07de7 1224 //ABuffer[1]は'L'
chirashi 32:3bf210e07de7 1225 LineNumber = CharToInt(ABuffer[2],ABuffer[3],ABuffer[4]);
chirashi 32:3bf210e07de7 1226 pc.printf("Line:%d\r\n",LineNumber);
chirashi 32:3bf210e07de7 1227
chirashi 32:3bf210e07de7 1228 //次停車駅 N
chirashi 32:3bf210e07de7 1229 //ABuffer[5]は'N'
chirashi 32:3bf210e07de7 1230 NextStaNumber = CharToInt(ABuffer[6],ABuffer[7],ABuffer[8]);
chirashi 32:3bf210e07de7 1231 pc.printf("NextStation:%d\r\n",NextStaNumber);
chirashi 32:3bf210e07de7 1232
chirashi 32:3bf210e07de7 1233 //運用パターン P
chirashi 32:3bf210e07de7 1234 //Pxxxyyyzzz
chirashi 32:3bf210e07de7 1235 //x:運用パターン番号(3桁)
chirashi 32:3bf210e07de7 1236 //y:始発駅(3桁)
chirashi 32:3bf210e07de7 1237 //z:終着駅(3桁)
chirashi 32:3bf210e07de7 1238 //ABuffer[9]は'P'
chirashi 32:3bf210e07de7 1239 RoutePatternNumber = CharToInt(ABuffer[10],ABuffer[11],ABuffer[12]);
chirashi 32:3bf210e07de7 1240 pc.printf("RoutePattern:%d\r\n",RoutePatternNumber);
chirashi 32:3bf210e07de7 1241
chirashi 32:3bf210e07de7 1242 DeptStaNumber = CharToInt(ABuffer[13],ABuffer[14],ABuffer[15]);
chirashi 32:3bf210e07de7 1243 pc.printf("DeptStaNumber:%d\r\n",DeptStaNumber);
chirashi 32:3bf210e07de7 1244 TermStaNumber = CharToInt(ABuffer[16],ABuffer[17],ABuffer[18]);
chirashi 32:3bf210e07de7 1245 pc.printf("TermStaNumber:%d\r\n",TermStaNumber);
chirashi 32:3bf210e07de7 1246
chirashi 33:c934bc793c5a 1247 //種別 K
chirashi 33:c934bc793c5a 1248 //ABuffer[19]は'K'
chirashi 33:c934bc793c5a 1249 KindNumber = CharToInt(ABuffer[20],ABuffer[21],ABuffer[22]);
chirashi 33:c934bc793c5a 1250 pc.printf("Kind:%d\r\n",KindNumber);
chirashi 33:c934bc793c5a 1251
chirashi 33:c934bc793c5a 1252 //行先 F
chirashi 33:c934bc793c5a 1253 //ABuffer[23]は'F'
chirashi 33:c934bc793c5a 1254 ForNumber = CharToInt(ABuffer[24],ABuffer[25],ABuffer[26]);
chirashi 33:c934bc793c5a 1255 pc.printf("For:%d\r\n",ForNumber);
chirashi 33:c934bc793c5a 1256
chirashi 33:c934bc793c5a 1257 //スクロール S
chirashi 33:c934bc793c5a 1258 if(ABuffer[27] == 'S'){
chirashi 33:c934bc793c5a 1259 //スクロール有効/無効 S
chirashi 33:c934bc793c5a 1260 unsigned char Sertemp1 = ABuffer[28];
chirashi 33:c934bc793c5a 1261 int n1 = 0 ;
chirashi 33:c934bc793c5a 1262 int n = 0;
chirashi 33:c934bc793c5a 1263
chirashi 33:c934bc793c5a 1264 if ( Sertemp1 < '0' || Sertemp1 > '9' ) {
chirashi 33:c934bc793c5a 1265 // error
chirashi 33:c934bc793c5a 1266 } else {
chirashi 33:c934bc793c5a 1267 n1 = (int)(Sertemp1 - '0') ;
chirashi 33:c934bc793c5a 1268 //pc.printf("%d,",n1);
chirashi 33:c934bc793c5a 1269 }
chirashi 33:c934bc793c5a 1270
chirashi 33:c934bc793c5a 1271 n = n1;
chirashi 33:c934bc793c5a 1272 Scroll = n;
chirashi 33:c934bc793c5a 1273 pc.printf("Scroll:%d\r\n",n);
chirashi 33:c934bc793c5a 1274 }
chirashi 33:c934bc793c5a 1275
chirashi 32:3bf210e07de7 1276
chirashi 32:3bf210e07de7 1277 //一括設定時は続けてSDからの読み込み
chirashi 32:3bf210e07de7 1278 pc.printf("Set\r\n");
chirashi 32:3bf210e07de7 1279 SDFileRead();
chirashi 32:3bf210e07de7 1280 ScrollRead2();
chirashi 33:c934bc793c5a 1281 //Scroll = 1;
chirashi 32:3bf210e07de7 1282 //即時反映
chirashi 32:3bf210e07de7 1283 TimerTick();
chirashi 33:c934bc793c5a 1284 }
chirashi 33:c934bc793c5a 1285 busyflag = false;
chirashi 33:c934bc793c5a 1286 }else{
chirashi 33:c934bc793c5a 1287 count++;
chirashi 33:c934bc793c5a 1288 }
chirashi 17:95bcbc53d96b 1289 }
chirashi 22:ebab951db9f6 1290 OE = LOW;
chirashi 17:95bcbc53d96b 1291 }
chirashi 17:95bcbc53d96b 1292
chirashi 32:3bf210e07de7 1293 void ScrollRead(){
chirashi 32:3bf210e07de7 1294 //test
chirashi 32:3bf210e07de7 1295 //Initialize StopStationCode
chirashi 32:3bf210e07de7 1296 for (int x = 0; x < MaxStopStation; x++){
chirashi 32:3bf210e07de7 1297 StopStationCode[x]= 0;
chirashi 32:3bf210e07de7 1298 }
chirashi 32:3bf210e07de7 1299
chirashi 32:3bf210e07de7 1300 //SDRead StopStationCode
chirashi 32:3bf210e07de7 1301 for(int i = 0; i < MaxStopStation; i++){
chirashi 32:3bf210e07de7 1302
chirashi 32:3bf210e07de7 1303 //停車駅コード取得
chirashi 32:3bf210e07de7 1304 int test = 0;
chirashi 32:3bf210e07de7 1305 int test2 = 0;
chirashi 32:3bf210e07de7 1306 sprintf(SDFilePath,"/sd/E233/StopStationList/%d.bin",1);
chirashi 32:3bf210e07de7 1307 FILE *fp = fopen(SDFilePath, "r");
chirashi 32:3bf210e07de7 1308 if(fp == NULL) {
chirashi 32:3bf210e07de7 1309 pc.printf("SDFileOpen Error %s\r\n",SDFilePath);
chirashi 32:3bf210e07de7 1310 break;
chirashi 32:3bf210e07de7 1311
chirashi 32:3bf210e07de7 1312 }else{
chirashi 32:3bf210e07de7 1313 //pc.printf("SDFileOpen Success %s\r\n",SDFilePath);
chirashi 32:3bf210e07de7 1314 fseek(fp, i*2, SEEK_SET);
chirashi 32:3bf210e07de7 1315 test = getc(fp);
chirashi 32:3bf210e07de7 1316 test = test << 8;
chirashi 32:3bf210e07de7 1317
chirashi 32:3bf210e07de7 1318 fseek(fp, i*2 + 1, SEEK_SET);
chirashi 32:3bf210e07de7 1319 test2 = getc(fp);
chirashi 32:3bf210e07de7 1320 test = test ^ test2;
chirashi 32:3bf210e07de7 1321
chirashi 32:3bf210e07de7 1322 StopStationCode[i] = test;
chirashi 32:3bf210e07de7 1323 pc.printf("StopStationCode[%d]:%d\r\n",i,StopStationCode[i]);
chirashi 32:3bf210e07de7 1324
chirashi 32:3bf210e07de7 1325 if(StopStationCode[i] == 0){
chirashi 32:3bf210e07de7 1326 break;
chirashi 32:3bf210e07de7 1327 }
chirashi 32:3bf210e07de7 1328 fclose(fp);
chirashi 32:3bf210e07de7 1329 }
chirashi 32:3bf210e07de7 1330 }
chirashi 32:3bf210e07de7 1331
chirashi 32:3bf210e07de7 1332 //test end
chirashi 32:3bf210e07de7 1333
chirashi 32:3bf210e07de7 1334 //ScrollDebug
chirashi 32:3bf210e07de7 1335 ScrollWriteCount = 80;
chirashi 32:3bf210e07de7 1336
chirashi 32:3bf210e07de7 1337 //この電車の停車駅は、
chirashi 32:3bf210e07de7 1338 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",1);
chirashi 32:3bf210e07de7 1339 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16);
chirashi 32:3bf210e07de7 1340 ScrollWriteCount = ScrollWriteCount + 80;
chirashi 32:3bf210e07de7 1341 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",2);
chirashi 32:3bf210e07de7 1342 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16);
chirashi 32:3bf210e07de7 1343 ScrollWriteCount = ScrollWriteCount + 80;
chirashi 32:3bf210e07de7 1344
chirashi 32:3bf210e07de7 1345 for(int i = 0; i < MaxStopStation; i++){
chirashi 32:3bf210e07de7 1346 if(StopStationCode[i] == 0){
chirashi 32:3bf210e07de7 1347 break;
chirashi 32:3bf210e07de7 1348 }
chirashi 32:3bf210e07de7 1349 //駅名
chirashi 32:3bf210e07de7 1350 sprintf(SDFilePath,"/sd/E233/StationName/%d.bin",StopStationCode[i]);
chirashi 32:3bf210e07de7 1351 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,128,16);
chirashi 32:3bf210e07de7 1352
chirashi 32:3bf210e07de7 1353 //駅名文字数取得
chirashi 32:3bf210e07de7 1354 int test = 0;
chirashi 32:3bf210e07de7 1355 sprintf(SDFilePath,"/sd/E233/StationNameLength.bin");
chirashi 32:3bf210e07de7 1356 FILE *fp = fopen(SDFilePath, "r");
chirashi 32:3bf210e07de7 1357 if(fp == NULL) {
chirashi 32:3bf210e07de7 1358 pc.printf("SDFileOpen Error %s\r\n",SDFilePath);
chirashi 32:3bf210e07de7 1359 }else{
chirashi 32:3bf210e07de7 1360 //pc.printf("SDFileOpen Success %s\r\n",SDFilePath);
chirashi 32:3bf210e07de7 1361 fseek(fp, StopStationCode[i], SEEK_SET);
chirashi 32:3bf210e07de7 1362 test = getc(fp);
chirashi 32:3bf210e07de7 1363 //pc.printf("StationNameLength:%d\r\n",test);
chirashi 32:3bf210e07de7 1364 fclose(fp);
chirashi 32:3bf210e07de7 1365 }
chirashi 32:3bf210e07de7 1366
chirashi 32:3bf210e07de7 1367 ScrollWriteCount = ScrollWriteCount + (test * 16);
chirashi 32:3bf210e07de7 1368 sprintf(SDFilePath,"/sd/E233/StopStation/0x8132.bin");
chirashi 32:3bf210e07de7 1369 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,16,16);
chirashi 32:3bf210e07de7 1370 ScrollWriteCount = ScrollWriteCount + 16;
chirashi 32:3bf210e07de7 1371 }
chirashi 32:3bf210e07de7 1372 ScrollWriteCount = ScrollWriteCount - 16;
chirashi 32:3bf210e07de7 1373 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",3);
chirashi 32:3bf210e07de7 1374 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16);
chirashi 32:3bf210e07de7 1375 ScrollWriteCount = ScrollWriteCount + 80;
chirashi 32:3bf210e07de7 1376 sprintf(SDFilePath,"/sd/E233/StopStation/StopStation%d.bin",4);
chirashi 32:3bf210e07de7 1377 SDScrollBufferWrite(ScrollBuffer,ScrollWriteCount,0,80,16);
chirashi 32:3bf210e07de7 1378 ScrollWriteCount = ScrollWriteCount + 80;
chirashi 32:3bf210e07de7 1379
chirashi 32:3bf210e07de7 1380 }
chirashi 32:3bf210e07de7 1381
chirashi 32:3bf210e07de7 1382
chirashi 32:3bf210e07de7 1383
chirashi 32:3bf210e07de7 1384
chirashi 32:3bf210e07de7 1385
chirashi 32:3bf210e07de7 1386
chirashi 17:95bcbc53d96b 1387 int main(){
chirashi 13:0c542447e6da 1388 Init(); // Set things up
chirashi 13:0c542447e6da 1389 //Serial
chirashi 13:0c542447e6da 1390 pc.printf("Power ON\r\n");
chirashi 13:0c542447e6da 1391
chirashi 34:9ee64899b004 1392 if(Button1 == 0){
chirashi 34:9ee64899b004 1393 //起動時にボタンが押されているならテスト表示モードに移行
chirashi 34:9ee64899b004 1394 pc.printf("DisplayTestMode\r\n");
chirashi 34:9ee64899b004 1395 ChangeTimerTest.attach(&TestDisplayTimerTick,1);
chirashi 34:9ee64899b004 1396 Scroll=0;
chirashi 25:8b1da0f21d32 1397
chirashi 34:9ee64899b004 1398 }else{
chirashi 34:9ee64899b004 1399 //通常モード
chirashi 34:9ee64899b004 1400 //SDカードから表示データを読み込み
chirashi 34:9ee64899b004 1401 SDFileRead();
chirashi 34:9ee64899b004 1402
chirashi 34:9ee64899b004 1403 //起動時にスクロールデータを読み込み
chirashi 34:9ee64899b004 1404 if(ScrollEnable == 1){
chirashi 34:9ee64899b004 1405 ScrollRead2();
chirashi 34:9ee64899b004 1406 }
chirashi 34:9ee64899b004 1407 //表示切替タイマ有効
chirashi 34:9ee64899b004 1408 ChangeTimer.attach(&TimerTick,3);
chirashi 34:9ee64899b004 1409
chirashi 25:8b1da0f21d32 1410 }
chirashi 34:9ee64899b004 1411
chirashi 23:6fb1181345a7 1412
chirashi 33:c934bc793c5a 1413 //2段階表示に変更
chirashi 33:c934bc793c5a 1414 //DisplayMode = 2;
chirashi 8:9d22c9910917 1415
chirashi 23:6fb1181345a7 1416 //test
chirashi 28:4cc6aa3acd92 1417 //sprintf(SDFilePath,"/sd/E233/whitetest.bin");
chirashi 24:7232abdf7884 1418 //SDBufferWrite(LEDBuffer,0,0,128,32);
chirashi 23:6fb1181345a7 1419
chirashi 33:c934bc793c5a 1420
chirashi 33:c934bc793c5a 1421 //Serial割り込み有効
chirashi 17:95bcbc53d96b 1422 pc.attach(pc_rx, Serial::RxIrq);
chirashi 17:95bcbc53d96b 1423
chirashi 34:9ee64899b004 1424
chirashi 8:9d22c9910917 1425
chirashi 17:95bcbc53d96b 1426
chirashi 13:0c542447e6da 1427 while(1) {
chirashi 29:bc82c25b6b94 1428 //CT++;
chirashi 22:ebab951db9f6 1429 //表示切替は切り替え時にメインバッファに書き込む
chirashi 22:ebab951db9f6 1430 Paint(LEDMainBuffer);
chirashi 22:ebab951db9f6 1431
chirashi 33:c934bc793c5a 1432 //スクロール
chirashi 22:ebab951db9f6 1433 //スクロールが有効なら
chirashi 22:ebab951db9f6 1434 if(Scroll == 1){
chirashi 29:bc82c25b6b94 1435 //if(CT>0) {
chirashi 29:bc82c25b6b94 1436 //CT=0; // Start all over.
chirashi 22:ebab951db9f6 1437 OE = HIGH;
chirashi 22:ebab951db9f6 1438 ScrollTimerTick();
chirashi 22:ebab951db9f6 1439 OE = LOW;
chirashi 29:bc82c25b6b94 1440 //}
chirashi 29:bc82c25b6b94 1441 //}else{
chirashi 29:bc82c25b6b94 1442 //if(CT>4160){
chirashi 29:bc82c25b6b94 1443 // CT=0;
chirashi 29:bc82c25b6b94 1444 //}
chirashi 8:9d22c9910917 1445 }
chirashi 4:245f17936b1a 1446 //PaintOFF();
RRacer 0:1f58ecec51d6 1447 }
RRacer 0:1f58ecec51d6 1448 }