for LED Matrix 5piece

Dependencies:   mbed

Committer:
takeuchi
Date:
Tue Jul 26 06:28:53 2016 +0000
Revision:
0:6228559177f8
LED Mtrix 5 mai

Who changed what in which revision?

UserRevisionLine numberNew contents of line
takeuchi 0:6228559177f8 1 // LedMatrix 5mai fullset final version
takeuchi 0:6228559177f8 2
takeuchi 0:6228559177f8 3 #include "mbed.h"
takeuchi 0:6228559177f8 4 #include "BME280.h"
takeuchi 0:6228559177f8 5
takeuchi 0:6228559177f8 6 DigitalOut led(dp28);
takeuchi 0:6228559177f8 7
takeuchi 0:6228559177f8 8 BME280 sensor1(dp5,dp27,0x76 << 1);
takeuchi 0:6228559177f8 9 BME280 sensor2(dp5,dp27,0x77 << 1);
takeuchi 0:6228559177f8 10
takeuchi 0:6228559177f8 11 // spi(mosi,miso,sck)
takeuchi 0:6228559177f8 12 SPI max72_spi(dp2, NC, dp6);
takeuchi 0:6228559177f8 13 DigitalOut load(dp14);//spi load
takeuchi 0:6228559177f8 14
takeuchi 0:6228559177f8 15 DigitalOut red(dp16);
takeuchi 0:6228559177f8 16 DigitalOut yellow(dp17);
takeuchi 0:6228559177f8 17 DigitalOut green(dp18);
takeuchi 0:6228559177f8 18
takeuchi 0:6228559177f8 19 // CPU MT7219
takeuchi 0:6228559177f8 20 // dp1 mosi(Master In Salve Out) => DIN
takeuchi 0:6228559177f8 21 // dp2 miso(Master OutSlave) => nc
takeuchi 0:6228559177f8 22 // dp6 sck (Serial Clock) => clk
takeuchi 0:6228559177f8 23 // dp14 =>(Slave Select) load
takeuchi 0:6228559177f8 24
takeuchi 0:6228559177f8 25 int maxInUse = 5; //change this variable to set how many MAX7219's you'll use
takeuchi 0:6228559177f8 26
takeuchi 0:6228559177f8 27 // define max7219 registers
takeuchi 0:6228559177f8 28 #define max7219_reg_noop 0x00
takeuchi 0:6228559177f8 29 #define max7219_reg_digit0 0x01
takeuchi 0:6228559177f8 30 #define max7219_reg_digit1 0x02
takeuchi 0:6228559177f8 31 #define max7219_reg_digit2 0x03
takeuchi 0:6228559177f8 32 #define max7219_reg_digit3 0x04
takeuchi 0:6228559177f8 33 #define max7219_reg_digit4 0x05
takeuchi 0:6228559177f8 34 #define max7219_reg_digit5 0x06
takeuchi 0:6228559177f8 35 #define max7219_reg_digit6 0x07
takeuchi 0:6228559177f8 36 #define max7219_reg_digit7 0x08
takeuchi 0:6228559177f8 37 #define max7219_reg_decodeMode 0x09
takeuchi 0:6228559177f8 38 #define max7219_reg_intensity 0x0a
takeuchi 0:6228559177f8 39 #define max7219_reg_scanLimit 0x0b
takeuchi 0:6228559177f8 40 #define max7219_reg_shutdown 0x0c
takeuchi 0:6228559177f8 41 #define max7219_reg_displayTest 0x0f
takeuchi 0:6228559177f8 42
takeuchi 0:6228559177f8 43 #define LOW 0
takeuchi 0:6228559177f8 44 #define HIGH 1
takeuchi 0:6228559177f8 45 #define MHZ 1000000
takeuchi 0:6228559177f8 46 #define ON 1
takeuchi 0:6228559177f8 47 #define OFF 0
takeuchi 0:6228559177f8 48
takeuchi 0:6228559177f8 49 double p1,t1,h1,pp1;
takeuchi 0:6228559177f8 50 double p2,t2,h2,pp2;
takeuchi 0:6228559177f8 51
takeuchi 0:6228559177f8 52 void maxSingle( int reg, int col) {
takeuchi 0:6228559177f8 53 //maxSingle is the "easy" function to use for a
takeuchi 0:6228559177f8 54 //single max7219
takeuchi 0:6228559177f8 55 load = LOW; // begin
takeuchi 0:6228559177f8 56 max72_spi.write(reg); // specify register
takeuchi 0:6228559177f8 57 max72_spi.write(col); // put data
takeuchi 0:6228559177f8 58 load = HIGH; // make sure data is loaded (on rising edge of LOAD/CS)
takeuchi 0:6228559177f8 59 }
takeuchi 0:6228559177f8 60
takeuchi 0:6228559177f8 61 void maxAll (int reg, int col) { // initialize all MAX7219's in the system
takeuchi 0:6228559177f8 62 load = LOW; // begin
takeuchi 0:6228559177f8 63 for ( int c=1; c<= maxInUse; c++) {
takeuchi 0:6228559177f8 64 max72_spi.write(reg); // specify register
takeuchi 0:6228559177f8 65 max72_spi.write(col); // put data
takeuchi 0:6228559177f8 66 }
takeuchi 0:6228559177f8 67 load = HIGH;
takeuchi 0:6228559177f8 68 }
takeuchi 0:6228559177f8 69
takeuchi 0:6228559177f8 70 void maxOne(int maxNr, int reg, int col) {
takeuchi 0:6228559177f8 71 //maxOne is for adressing different MAX7219's,
takeuchi 0:6228559177f8 72 //while having a couple of them cascaded
takeuchi 0:6228559177f8 73 int c = 0;
takeuchi 0:6228559177f8 74 load = LOW;
takeuchi 0:6228559177f8 75
takeuchi 0:6228559177f8 76 for ( c = maxInUse; c >= maxNr; c--) {
takeuchi 0:6228559177f8 77 max72_spi.write(0); // no-op
takeuchi 0:6228559177f8 78 max72_spi.write(0); // no-op
takeuchi 0:6228559177f8 79 }
takeuchi 0:6228559177f8 80
takeuchi 0:6228559177f8 81 max72_spi.write(reg); // specify register
takeuchi 0:6228559177f8 82 max72_spi.write(col); // put data
takeuchi 0:6228559177f8 83
takeuchi 0:6228559177f8 84 for ( c=maxNr-1; c >= 1; c--) {
takeuchi 0:6228559177f8 85 max72_spi.write(0); // no-op
takeuchi 0:6228559177f8 86 max72_spi.write(0); // no-op
takeuchi 0:6228559177f8 87 }
takeuchi 0:6228559177f8 88 load = HIGH;
takeuchi 0:6228559177f8 89 }
takeuchi 0:6228559177f8 90
takeuchi 0:6228559177f8 91 void setup () {
takeuchi 0:6228559177f8 92 // initiation of the max 7219
takeuchi 0:6228559177f8 93 // SPI setup: 8 bits, mode 0
takeuchi 0:6228559177f8 94 max72_spi.format(8, 0);
takeuchi 0:6228559177f8 95
takeuchi 0:6228559177f8 96 // going by the datasheet, min clk is 100ns so theoretically 10MHz should work...
takeuchi 0:6228559177f8 97 // max72_spi.frequency(10*MHZ);
takeuchi 0:6228559177f8 98
takeuchi 0:6228559177f8 99 maxAll(max7219_reg_scanLimit, 0x07);
takeuchi 0:6228559177f8 100 maxAll(max7219_reg_decodeMode, 0x00); // using an led matrix (not digits)
takeuchi 0:6228559177f8 101 maxAll(max7219_reg_shutdown, 0x01); // not in shutdown mode
takeuchi 0:6228559177f8 102 maxAll(max7219_reg_displayTest, 0x00); // no display test
takeuchi 0:6228559177f8 103 for (int e=1; e<=8; e++) { // empty registers, turn all LEDs off
takeuchi 0:6228559177f8 104 maxAll(e,0);
takeuchi 0:6228559177f8 105 }
takeuchi 0:6228559177f8 106 maxAll(max7219_reg_intensity, 0x0f & 0x0f); // the first 0x0f is the value you can set
takeuchi 0:6228559177f8 107 // range: 0x00 to 0x0f
takeuchi 0:6228559177f8 108 }
takeuchi 0:6228559177f8 109
takeuchi 0:6228559177f8 110 void get_sensor1(void){
takeuchi 0:6228559177f8 111 t1=sensor1.getTemperature();
takeuchi 0:6228559177f8 112 if(t1 > 85.0){
takeuchi 0:6228559177f8 113 t1=t1-409.0-1;
takeuchi 0:6228559177f8 114 }
takeuchi 0:6228559177f8 115 h1=sensor1.getHumidity();
takeuchi 0:6228559177f8 116 pp1=sensor1.getPressure();
takeuchi 0:6228559177f8 117 pp1=pp1+int(700/9);// kiatu kani hosei
takeuchi 0:6228559177f8 118 }
takeuchi 0:6228559177f8 119
takeuchi 0:6228559177f8 120 void get_sensor2(void){
takeuchi 0:6228559177f8 121 t2=sensor2.getTemperature();
takeuchi 0:6228559177f8 122 if(t2 > 85.0){
takeuchi 0:6228559177f8 123 t2=t2-409.0-1;
takeuchi 0:6228559177f8 124 }
takeuchi 0:6228559177f8 125 h2=sensor2.getHumidity();
takeuchi 0:6228559177f8 126 pp2=sensor2.getPressure();
takeuchi 0:6228559177f8 127 pp2=pp2+int(700/9);
takeuchi 0:6228559177f8 128 }
takeuchi 0:6228559177f8 129
takeuchi 0:6228559177f8 130 int main(void) {
takeuchi 0:6228559177f8 131
takeuchi 0:6228559177f8 132 const uint64_t moji_font[] = {// bold font , kagami moji font
takeuchi 0:6228559177f8 133 /*0x3c66666e76663c00,//0~9
takeuchi 0:6228559177f8 134 0x7e1818181c181800,
takeuchi 0:6228559177f8 135 0x7e060c3060663c00,
takeuchi 0:6228559177f8 136 0x3c66603860663c00,
takeuchi 0:6228559177f8 137 0x30307e3234383000,
takeuchi 0:6228559177f8 138 0x3c6660603e067e00,
takeuchi 0:6228559177f8 139 0x3c66663e06663c00,
takeuchi 0:6228559177f8 140 0x1818183030667e00,
takeuchi 0:6228559177f8 141 0x3c66663c66663c00,
takeuchi 0:6228559177f8 142 0x3c66607c66663c00,*/
takeuchi 0:6228559177f8 143
takeuchi 0:6228559177f8 144 0x1c2222222222221c,//0~9
takeuchi 0:6228559177f8 145 0x1c08080808080c08,
takeuchi 0:6228559177f8 146 0x3e0408102020221c,
takeuchi 0:6228559177f8 147 0x1c2220201820221c,
takeuchi 0:6228559177f8 148 0x20203e2224283020,
takeuchi 0:6228559177f8 149 0x1c2220201e02023e,
takeuchi 0:6228559177f8 150 0x1c2222221e02221c,
takeuchi 0:6228559177f8 151 0x040404081020203e,
takeuchi 0:6228559177f8 152 0x1c2222221c22221c,
takeuchi 0:6228559177f8 153 0x1c22203c2222221c,
takeuchi 0:6228559177f8 154 0x6666663e06060600,// 10 h
takeuchi 0:6228559177f8 155 0x06063e66663e0000,// 11 p
takeuchi 0:6228559177f8 156 0x1818000000000000,// 12 .
takeuchi 0:6228559177f8 157 0x30480848340a0a04, // 13 dc
takeuchi 0:6228559177f8 158 0x1010157555770101,// 14 hp
takeuchi 0:6228559177f8 159 0x0010107c10100000,// 15 +
takeuchi 0:6228559177f8 160 0x0000007e00000000,// 16 -
takeuchi 0:6228559177f8 161 0x082a1c771c2a0800, //17 asuta1
takeuchi 0:6228559177f8 162 0x007e424a52427e00, // 18 sikaku2
takeuchi 0:6228559177f8 163 0x0000000000000000, // 19 blank
takeuchi 0:6228559177f8 164 0x60660c1830660600, // 20 %
takeuchi 0:6228559177f8 165 0x4242665a5a7e1800, // 21 uchi
takeuchi 0:6228559177f8 166 0x220424692e2a2c00, // 22 soto
takeuchi 0:6228559177f8 167 0x126a3a22227a2200,// 23 ha
takeuchi 0:6228559177f8 168 0x44c6444c56640400,// 24 re
takeuchi 0:6228559177f8 169 0x2010080408102000,// 25 ku
takeuchi 0:6228559177f8 170 0x1028483e083e1000,// 26 mo
takeuchi 0:6228559177f8 171 0x1020404044444400,// 27 ri
takeuchi 0:6228559177f8 172 0x2874d27c107c1000,// 28 a
takeuchi 0:6228559177f8 173 0x449a9aaaaa7c2800,// 29 me
takeuchi 0:6228559177f8 174 0x6c927cc482443800,// 30 kumo
takeuchi 0:6228559177f8 175 0x30309254ba10aa28,// 31 ame
takeuchi 0:6228559177f8 176 0x082a1c771c2a0800,// 32 hare
takeuchi 0:6228559177f8 177 0x1010101054381000,// 33 ue yajirusi
takeuchi 0:6228559177f8 178 0x0002044850607800,// 34 naname ue
takeuchi 0:6228559177f8 179 0x0078605048040200,// 35 naname sita
takeuchi 0:6228559177f8 180 0x1038541010101000, // 36 sita
takeuchi 0:6228559177f8 181 0x0000183c3c180000, // 37 asuta2
takeuchi 0:6228559177f8 182 0x0010207e20100000, // 38 onaji yajirusi
takeuchi 0:6228559177f8 183 0x5050557553550503 // 39 RH
takeuchi 0:6228559177f8 184 };
takeuchi 0:6228559177f8 185
takeuchi 0:6228559177f8 186 /*
takeuchi 0:6228559177f8 187
takeuchi 0:6228559177f8 188 const uint64_t moji_font[]={
takeuchi 0:6228559177f8 189 0x006e333e301e0000,//a
takeuchi 0:6228559177f8 190 0x003b66663e060607,//b
takeuchi 0:6228559177f8 191 0x001e3303331e0000,//c
takeuchi 0:6228559177f8 192 0x006e33333e303038,//d
takeuchi 0:6228559177f8 193 0x001e033f331e0000,//e
takeuchi 0:6228559177f8 194 0x000f06060f06361c,//f
takeuchi 0:6228559177f8 195 0x1f303e33336e0000,//g
takeuchi 0:6228559177f8 196 0x006766666e360607,//h
takeuchi 0:6228559177f8 197 0x001e0c0c0c0e000c,//i
takeuchi 0:6228559177f8 198 0x1e33333030300030,//j
takeuchi 0:6228559177f8 199 0x0067361e36660607,//k
takeuchi 0:6228559177f8 200 0x001e0c0c0c0c0c0e,//l
takeuchi 0:6228559177f8 201 0x00636b7f7f330000,//m
takeuchi 0:6228559177f8 202 0x00333333331f0000,//n
takeuchi 0:6228559177f8 203 0x001e3333331e0000,//o
takeuchi 0:6228559177f8 204 0x0f063e66663b0000,//p
takeuchi 0:6228559177f8 205 0x78303e33336e0000,//q
takeuchi 0:6228559177f8 206 0x000f06666e3b0000,//r
takeuchi 0:6228559177f8 207 0x001f301e033e0000,//s
takeuchi 0:6228559177f8 208 0x00182c0c0c3e0c08,//t
takeuchi 0:6228559177f8 209 0x006e333333330000,//u
takeuchi 0:6228559177f8 210 0x000c1e3333330000,//v
takeuchi 0:6228559177f8 211 0x00367f7f6b630000,//w
takeuchi 0:6228559177f8 212 0x0063361c36630000,//x
takeuchi 0:6228559177f8 213 0x1f303e3333330000,//y
takeuchi 0:6228559177f8 214 0x003f260c193f0000 //z
takeuchi 0:6228559177f8 215 };
takeuchi 0:6228559177f8 216
takeuchi 0:6228559177f8 217 */
takeuchi 0:6228559177f8 218
takeuchi 0:6228559177f8 219 // // Jissainiha konoyouni mieru
takeuchi 0:6228559177f8 220 // maxSingle(1,1); |-| -------+
takeuchi 0:6228559177f8 221 // maxSingle(2,2); |-| ------+-
takeuchi 0:6228559177f8 222 // maxSingle(3,4); |-| -----+--
takeuchi 0:6228559177f8 223 // maxSingle(4,8); |-| ----+---
takeuchi 0:6228559177f8 224 // maxSingle(5,16); |-| ---+----
takeuchi 0:6228559177f8 225 // maxSingle(6,32); |-| --+-----
takeuchi 0:6228559177f8 226 // maxSingle(7,64); |-| -+------
takeuchi 0:6228559177f8 227 // maxSingle(8,128); |-| +-------
takeuchi 0:6228559177f8 228
takeuchi 0:6228559177f8 229 int i,j,k,m,n;
takeuchi 0:6228559177f8 230 uint8_t bitsum[22][9],bit1gyou,bitline[350];
takeuchi 0:6228559177f8 231 uint64_t moji1,load_image[35];
takeuchi 0:6228559177f8 232 long hpascal,ttemp,sitemp;
takeuchi 0:6228559177f8 233 int hpketa[4],tpketa[3],siketa[3];
takeuchi 0:6228559177f8 234 int gdot[]={128,64,32,16,8,4,2,1};
takeuchi 0:6228559177f8 235 int gbit[40],gbit_s[80];
takeuchi 0:6228559177f8 236 long wtime=0;
takeuchi 0:6228559177f8 237 long hpdata[40],hprange,hpmax,hpmin;
takeuchi 0:6228559177f8 238 long hpcenter;
takeuchi 0:6228559177f8 239 int dotdata[40],fstloop,fshuuki;
takeuchi 0:6228559177f8 240 double hpscope;
takeuchi 0:6228559177f8 241 double gctrim=0.0;
takeuchi 0:6228559177f8 242 int henka=0;
takeuchi 0:6228559177f8 243 int yosou=1,yosou_old;
takeuchi 0:6228559177f8 244 int mojisu;
takeuchi 0:6228559177f8 245 double hpsum,hpavg;
takeuchi 0:6228559177f8 246
takeuchi 0:6228559177f8 247 setup();
takeuchi 0:6228559177f8 248
takeuchi 0:6228559177f8 249 wait(0.1);
takeuchi 0:6228559177f8 250 get_sensor1();
takeuchi 0:6228559177f8 251 get_sensor2();
takeuchi 0:6228559177f8 252
takeuchi 0:6228559177f8 253 hpascal=long(pp1);
takeuchi 0:6228559177f8 254 hpmin=hpascal;
takeuchi 0:6228559177f8 255 hpmax=hpascal;
takeuchi 0:6228559177f8 256 hpscope=1;
takeuchi 0:6228559177f8 257 hprange=0;
takeuchi 0:6228559177f8 258 for(i=0;i<40;i++){
takeuchi 0:6228559177f8 259 hpdata[i]=hpascal-3;
takeuchi 0:6228559177f8 260 }
takeuchi 0:6228559177f8 261
takeuchi 0:6228559177f8 262 while(1){
takeuchi 0:6228559177f8 263
takeuchi 0:6228559177f8 264 get_sensor1();
takeuchi 0:6228559177f8 265 get_sensor2();
takeuchi 0:6228559177f8 266
takeuchi 0:6228559177f8 267 hpascal=long(pp1);
takeuchi 0:6228559177f8 268 ttemp=long(t2*10); // seisuuchi henkan
takeuchi 0:6228559177f8 269 sitemp=long(h2);
takeuchi 0:6228559177f8 270
takeuchi 0:6228559177f8 271 hpketa[0]=int(hpascal/1000);hpascal=hpascal-hpketa[0]*1000;
takeuchi 0:6228559177f8 272 hpketa[1]=int(hpascal/100); hpascal=hpascal-hpketa[1]*100;
takeuchi 0:6228559177f8 273 hpketa[2]=int(hpascal/10); hpascal=hpascal-hpketa[2]*10;
takeuchi 0:6228559177f8 274 hpketa[3]=hpascal;
takeuchi 0:6228559177f8 275
takeuchi 0:6228559177f8 276 tpketa[0]=int(ttemp/100);ttemp=ttemp-tpketa[0]*100;// jyuu noketa
takeuchi 0:6228559177f8 277 tpketa[1]=int(ttemp/10);ttemp=ttemp-tpketa[1]*10;// ichi no keta
takeuchi 0:6228559177f8 278 tpketa[2]=int(ttemp); // shousuutenika no keta
takeuchi 0:6228559177f8 279
takeuchi 0:6228559177f8 280 siketa[0]=int(sitemp/100);sitemp=sitemp-siketa[0]*100;
takeuchi 0:6228559177f8 281 siketa[1]=int(sitemp/10);sitemp=sitemp-siketa[1]*10;
takeuchi 0:6228559177f8 282 siketa[2]=int(sitemp);
takeuchi 0:6228559177f8 283
takeuchi 0:6228559177f8 284 load_image[0]=moji_font[19]; //blank
takeuchi 0:6228559177f8 285 load_image[1]=moji_font[19]; //blank
takeuchi 0:6228559177f8 286
takeuchi 0:6228559177f8 287 if(hpdata[23] > hpdata[22]){
takeuchi 0:6228559177f8 288 load_image[2]=moji_font[34];//naname ue
takeuchi 0:6228559177f8 289 }
takeuchi 0:6228559177f8 290 else if(hpdata[23] < hpdata[22]){
takeuchi 0:6228559177f8 291 load_image[2]=moji_font[35];//naname sita
takeuchi 0:6228559177f8 292 }
takeuchi 0:6228559177f8 293 else{
takeuchi 0:6228559177f8 294 load_image[2]=moji_font[38];//onaji yajirusi
takeuchi 0:6228559177f8 295 }
takeuchi 0:6228559177f8 296
takeuchi 0:6228559177f8 297 for(i=3;i<=6;i++){// kiatu 4keta suuji [3 ~ 6]
takeuchi 0:6228559177f8 298 for(j=0;j<=9;j++){
takeuchi 0:6228559177f8 299 if(hpketa[i-3] == j){
takeuchi 0:6228559177f8 300 load_image[i]=moji_font[j];
takeuchi 0:6228559177f8 301 }
takeuchi 0:6228559177f8 302 }
takeuchi 0:6228559177f8 303 }
takeuchi 0:6228559177f8 304 load_image[7]=moji_font[14];//hp
takeuchi 0:6228559177f8 305 load_image[8]=moji_font[19]; //blank
takeuchi 0:6228559177f8 306
takeuchi 0:6228559177f8 307 if(t1 >=0){
takeuchi 0:6228559177f8 308 load_image[9]=moji_font[15];//+
takeuchi 0:6228559177f8 309 }
takeuchi 0:6228559177f8 310 else {
takeuchi 0:6228559177f8 311 load_image[9]=moji_font[16];// -
takeuchi 0:6228559177f8 312 }
takeuchi 0:6228559177f8 313
takeuchi 0:6228559177f8 314 for(i=0;i<=1;i++){// kion seisuuketa
takeuchi 0:6228559177f8 315 for(j=0;j<=9;j++){
takeuchi 0:6228559177f8 316 if(tpketa[i] == j){
takeuchi 0:6228559177f8 317 load_image[i+10]=moji_font[j];
takeuchi 0:6228559177f8 318 }
takeuchi 0:6228559177f8 319 }
takeuchi 0:6228559177f8 320 }
takeuchi 0:6228559177f8 321 load_image[12]=moji_font[12];// .
takeuchi 0:6228559177f8 322 for(j=0;j<=9;j++){// kion shousuu keta
takeuchi 0:6228559177f8 323 if(tpketa[2] == j){
takeuchi 0:6228559177f8 324 load_image[13]=moji_font[j];
takeuchi 0:6228559177f8 325 }
takeuchi 0:6228559177f8 326 }
takeuchi 0:6228559177f8 327 load_image[14]=moji_font[13]; //dc
takeuchi 0:6228559177f8 328
takeuchi 0:6228559177f8 329 load_image[15]=moji_font[19];//blank
takeuchi 0:6228559177f8 330
takeuchi 0:6228559177f8 331 for(i=0;i<=2;i++){ // situdo 3 keta
takeuchi 0:6228559177f8 332 for(j=0;j<=9;j++){
takeuchi 0:6228559177f8 333 if(siketa[i] == j){
takeuchi 0:6228559177f8 334 load_image[i+16]=moji_font[j];
takeuchi 0:6228559177f8 335 }
takeuchi 0:6228559177f8 336 }
takeuchi 0:6228559177f8 337 }
takeuchi 0:6228559177f8 338 if(siketa[0]==0){// 0 shouryaku
takeuchi 0:6228559177f8 339 load_image[16]=moji_font[39];// situdo
takeuchi 0:6228559177f8 340 }
takeuchi 0:6228559177f8 341
takeuchi 0:6228559177f8 342
takeuchi 0:6228559177f8 343 load_image[19]=moji_font[20]; // %
takeuchi 0:6228559177f8 344
takeuchi 0:6228559177f8 345 load_image[20]=moji_font[19];//blank
takeuchi 0:6228559177f8 346
takeuchi 0:6228559177f8 347 // Tenki yosoku
takeuchi 0:6228559177f8 348 henka=0;
takeuchi 0:6228559177f8 349 for(m=39;m>=32;m--){
takeuchi 0:6228559177f8 350 henka=henka+(hpdata[m]-hpdata[m-1]);
takeuchi 0:6228559177f8 351 }
takeuchi 0:6228559177f8 352
takeuchi 0:6228559177f8 353 load_image[21]=load_image[2];// hadder
takeuchi 0:6228559177f8 354
takeuchi 0:6228559177f8 355 if(henka >= 3){
takeuchi 0:6228559177f8 356 yosou=1;
takeuchi 0:6228559177f8 357 load_image[22]=moji_font[23];//ha
takeuchi 0:6228559177f8 358 load_image[23]=moji_font[24];//re
takeuchi 0:6228559177f8 359 load_image[24]=moji_font[38];//onaji yajirusi
takeuchi 0:6228559177f8 360 load_image[25]=moji_font[23];//ha
takeuchi 0:6228559177f8 361 load_image[26]=moji_font[24];//re
takeuchi 0:6228559177f8 362 load_image[27]=moji_font[34];//naname ue
takeuchi 0:6228559177f8 363 }
takeuchi 0:6228559177f8 364 else if(henka ==1 || henka == 2){
takeuchi 0:6228559177f8 365 yosou=2;
takeuchi 0:6228559177f8 366 load_image[22]=moji_font[23];//ha
takeuchi 0:6228559177f8 367 load_image[23]=moji_font[24];//re
takeuchi 0:6228559177f8 368 load_image[24]=moji_font[38];//onaji yajirusi
takeuchi 0:6228559177f8 369 load_image[25]=moji_font[25];//ku
takeuchi 0:6228559177f8 370 load_image[26]=moji_font[26];//mo
takeuchi 0:6228559177f8 371 load_image[27]=moji_font[27];//ri
takeuchi 0:6228559177f8 372 }
takeuchi 0:6228559177f8 373 else if(henka == 0){
takeuchi 0:6228559177f8 374 yosou=3;
takeuchi 0:6228559177f8 375 if(yosou_old <= 3){
takeuchi 0:6228559177f8 376 load_image[22]=moji_font[25];//ku
takeuchi 0:6228559177f8 377 load_image[23]=moji_font[26];//mo
takeuchi 0:6228559177f8 378 load_image[24]=moji_font[27];//ri
takeuchi 0:6228559177f8 379 load_image[25]=moji_font[34];//naname ue
takeuchi 0:6228559177f8 380 load_image[26]=moji_font[23];//ha
takeuchi 0:6228559177f8 381 load_image[27]=moji_font[24];//re
takeuchi 0:6228559177f8 382 }
takeuchi 0:6228559177f8 383 else if(yosou_old >= 4){
takeuchi 0:6228559177f8 384 load_image[22]=moji_font[25];//ku
takeuchi 0:6228559177f8 385 load_image[23]=moji_font[26];//mo
takeuchi 0:6228559177f8 386 load_image[24]=moji_font[27];//ri
takeuchi 0:6228559177f8 387 load_image[25]=moji_font[38];//onaji yajirusi
takeuchi 0:6228559177f8 388 load_image[26]=moji_font[28];//a
takeuchi 0:6228559177f8 389 load_image[27]=moji_font[29];//me
takeuchi 0:6228559177f8 390 }
takeuchi 0:6228559177f8 391
takeuchi 0:6228559177f8 392 }
takeuchi 0:6228559177f8 393 else if(henka == -1 || henka ==-2){
takeuchi 0:6228559177f8 394 yosou=4;
takeuchi 0:6228559177f8 395 load_image[22]=moji_font[25];//ku
takeuchi 0:6228559177f8 396 load_image[23]=moji_font[26];//mo
takeuchi 0:6228559177f8 397 load_image[24]=moji_font[27];//ri
takeuchi 0:6228559177f8 398 load_image[25]=moji_font[35];//naname sita
takeuchi 0:6228559177f8 399 load_image[26]=moji_font[28];//a
takeuchi 0:6228559177f8 400 load_image[27]=moji_font[29];//me
takeuchi 0:6228559177f8 401
takeuchi 0:6228559177f8 402 }
takeuchi 0:6228559177f8 403 else if(henka <= -3){
takeuchi 0:6228559177f8 404 yosou=5;
takeuchi 0:6228559177f8 405 load_image[22]=moji_font[28];//a
takeuchi 0:6228559177f8 406 load_image[23]=moji_font[29];//me
takeuchi 0:6228559177f8 407 load_image[24]=moji_font[38];//onaji yajirusi
takeuchi 0:6228559177f8 408 load_image[25]=moji_font[28];//a
takeuchi 0:6228559177f8 409 load_image[26]=moji_font[29];//me
takeuchi 0:6228559177f8 410 load_image[27]=moji_font[35];//naname sita
takeuchi 0:6228559177f8 411 }
takeuchi 0:6228559177f8 412 load_image[28]=moji_font[19];//blank
takeuchi 0:6228559177f8 413 load_image[29]=moji_font[19];//blank
takeuchi 0:6228559177f8 414 load_image[30]=moji_font[19];//blank
takeuchi 0:6228559177f8 415
takeuchi 0:6228559177f8 416 mojisu=31;//0~30 31 moji
takeuchi 0:6228559177f8 417
takeuchi 0:6228559177f8 418 for(i=0;i< mojisu;i++){
takeuchi 0:6228559177f8 419 moji1=load_image[i];
takeuchi 0:6228559177f8 420 for(j=0;j<8;j++){// bitsum[1]
takeuchi 0:6228559177f8 421 bitsum[i][j]=0;
takeuchi 0:6228559177f8 422 }//j
takeuchi 0:6228559177f8 423 for(j=0;j<8;j++){
takeuchi 0:6228559177f8 424 bit1gyou=moji1 & 0xff;
takeuchi 0:6228559177f8 425 for(k=0;k<8;k++){// kagami moji no font
takeuchi 0:6228559177f8 426 //for(k=8;k>=1;k--){ // futuu no font
takeuchi 0:6228559177f8 427 bitsum[i][k]=bitsum[i][k]+(bit1gyou & 0x01)*pow((double)2,(double)(j));
takeuchi 0:6228559177f8 428 bit1gyou=bit1gyou >> 1;
takeuchi 0:6228559177f8 429 }//k
takeuchi 0:6228559177f8 430 moji1=moji1 >> 8;
takeuchi 0:6228559177f8 431 }//j
takeuchi 0:6228559177f8 432 }// i
takeuchi 0:6228559177f8 433
takeuchi 0:6228559177f8 434 k=0;// bitline henkan
takeuchi 0:6228559177f8 435 for(i=0;i<mojisu;i++){
takeuchi 0:6228559177f8 436 for(j=0;j<8;j++){
takeuchi 0:6228559177f8 437 bitline[k]=bitsum[i][j];
takeuchi 0:6228559177f8 438 k++;
takeuchi 0:6228559177f8 439 }
takeuchi 0:6228559177f8 440 }
takeuchi 0:6228559177f8 441
takeuchi 0:6228559177f8 442 for(i=0;i<=(mojisu*8-1-39);i++){// bitline hyouji
takeuchi 0:6228559177f8 443 k=i;
takeuchi 0:6228559177f8 444 maxOne(1,1,bitline[k]);
takeuchi 0:6228559177f8 445 maxOne(1,2,bitline[k+1]);
takeuchi 0:6228559177f8 446 maxOne(1,3,bitline[k+2]);
takeuchi 0:6228559177f8 447 maxOne(1,4,bitline[k+3]);
takeuchi 0:6228559177f8 448 maxOne(1,5,bitline[k+4]);
takeuchi 0:6228559177f8 449 maxOne(1,6,bitline[k+5]);
takeuchi 0:6228559177f8 450 maxOne(1,7,bitline[k+6]);
takeuchi 0:6228559177f8 451 maxOne(1,8,bitline[k+7]);
takeuchi 0:6228559177f8 452 maxOne(2,1,bitline[k+8]);
takeuchi 0:6228559177f8 453 maxOne(2,2,bitline[k+9]);
takeuchi 0:6228559177f8 454 maxOne(2,3,bitline[k+10]);
takeuchi 0:6228559177f8 455 maxOne(2,4,bitline[k+11]);
takeuchi 0:6228559177f8 456 maxOne(2,5,bitline[k+12]);
takeuchi 0:6228559177f8 457 maxOne(2,6,bitline[k+13]);
takeuchi 0:6228559177f8 458 maxOne(2,7,bitline[k+14]);
takeuchi 0:6228559177f8 459 maxOne(2,8,bitline[k+15]);
takeuchi 0:6228559177f8 460 maxOne(3,1,bitline[k+16]);
takeuchi 0:6228559177f8 461 maxOne(3,2,bitline[k+17]);
takeuchi 0:6228559177f8 462 maxOne(3,3,bitline[k+18]);
takeuchi 0:6228559177f8 463 maxOne(3,4,bitline[k+19]);
takeuchi 0:6228559177f8 464 maxOne(3,5,bitline[k+20]);
takeuchi 0:6228559177f8 465 maxOne(3,6,bitline[k+21]);
takeuchi 0:6228559177f8 466 maxOne(3,7,bitline[k+22]);
takeuchi 0:6228559177f8 467 maxOne(3,8,bitline[k+23]);
takeuchi 0:6228559177f8 468 maxOne(4,1,bitline[k+24]);
takeuchi 0:6228559177f8 469 maxOne(4,2,bitline[k+25]);
takeuchi 0:6228559177f8 470 maxOne(4,3,bitline[k+26]);
takeuchi 0:6228559177f8 471 maxOne(4,4,bitline[k+27]);
takeuchi 0:6228559177f8 472 maxOne(4,5,bitline[k+28]);
takeuchi 0:6228559177f8 473 maxOne(4,6,bitline[k+29]);
takeuchi 0:6228559177f8 474 maxOne(4,7,bitline[k+30]);
takeuchi 0:6228559177f8 475 maxOne(4,8,bitline[k+31]);
takeuchi 0:6228559177f8 476 maxOne(5,1,bitline[k+32]);
takeuchi 0:6228559177f8 477 maxOne(5,2,bitline[k+33]);
takeuchi 0:6228559177f8 478 maxOne(5,3,bitline[k+34]);
takeuchi 0:6228559177f8 479 maxOne(5,4,bitline[k+35]);
takeuchi 0:6228559177f8 480 maxOne(5,5,bitline[k+36]);
takeuchi 0:6228559177f8 481 maxOne(5,6,bitline[k+37]);
takeuchi 0:6228559177f8 482 maxOne(5,7,bitline[k+38]);
takeuchi 0:6228559177f8 483 maxOne(5,8,bitline[k+39]);
takeuchi 0:6228559177f8 484 wait(0.1);
takeuchi 0:6228559177f8 485 }
takeuchi 0:6228559177f8 486
takeuchi 0:6228559177f8 487 hpascal=long(pp1);
takeuchi 0:6228559177f8 488 if(hpascal > hpdata[39]+5){
takeuchi 0:6228559177f8 489 hpascal=hpdata[39]+5;
takeuchi 0:6228559177f8 490 }
takeuchi 0:6228559177f8 491 if(hpascal < hpdata[39]-5){
takeuchi 0:6228559177f8 492 hpascal=hpdata[39]-5;
takeuchi 0:6228559177f8 493 }
takeuchi 0:6228559177f8 494 hpdata[39]=hpascal;
takeuchi 0:6228559177f8 495 hpmax=hpdata[39];
takeuchi 0:6228559177f8 496 hpmin=hpdata[39];
takeuchi 0:6228559177f8 497 for(m=16;m<39;m++){ // graph bunseki 24h
takeuchi 0:6228559177f8 498 if(hpmax < hpdata[m]){
takeuchi 0:6228559177f8 499 hpmax=hpdata[m];
takeuchi 0:6228559177f8 500 }
takeuchi 0:6228559177f8 501 if(hpmin > hpdata[m]){
takeuchi 0:6228559177f8 502 hpmin=hpdata[m];
takeuchi 0:6228559177f8 503 }
takeuchi 0:6228559177f8 504 }//for
takeuchi 0:6228559177f8 505
takeuchi 0:6228559177f8 506 hprange=hpmax-hpmin;// auto graph
takeuchi 0:6228559177f8 507 if(hprange <= -1){
takeuchi 0:6228559177f8 508 hprange=0;
takeuchi 0:6228559177f8 509 }
takeuchi 0:6228559177f8 510 if(hprange >= 8 ){//auto range hpscope set
takeuchi 0:6228559177f8 511 hpscope=double(hprange)/8.0;
takeuchi 0:6228559177f8 512 }
takeuchi 0:6228559177f8 513 else{
takeuchi 0:6228559177f8 514 hpscope=1.0;
takeuchi 0:6228559177f8 515 }
takeuchi 0:6228559177f8 516 if(hprange <= 3){//auto trim gctrim set
takeuchi 0:6228559177f8 517 gctrim=double(4-hprange);
takeuchi 0:6228559177f8 518 }
takeuchi 0:6228559177f8 519 else {
takeuchi 0:6228559177f8 520 gctrim=0;
takeuchi 0:6228559177f8 521 }
takeuchi 0:6228559177f8 522 for(m=1;m<=39;m++){
takeuchi 0:6228559177f8 523 dotdata[m]=int(double(hpdata[m]-hpmin)/hpscope)+gctrim;
takeuchi 0:6228559177f8 524 if(dotdata[m] < 0){
takeuchi 0:6228559177f8 525 dotdata[m]=0;
takeuchi 0:6228559177f8 526 }
takeuchi 0:6228559177f8 527 if(dotdata[m] > 7){
takeuchi 0:6228559177f8 528 dotdata[m]=7;
takeuchi 0:6228559177f8 529 }
takeuchi 0:6228559177f8 530 gbit[m]=gdot[dotdata[m]];
takeuchi 0:6228559177f8 531 }
takeuchi 0:6228559177f8 532 gbit[0]=gdot[int(hpscope+0.5-1)];//range hyouji
takeuchi 0:6228559177f8 533
takeuchi 0:6228559177f8 534 for(i=0;i<40;i++){// graph scroll data
takeuchi 0:6228559177f8 535 gbit_s[i]=0; // zenhan 0
takeuchi 0:6228559177f8 536 }
takeuchi 0:6228559177f8 537 for(i=40;i<80;i++){// kouhan jitu data
takeuchi 0:6228559177f8 538 gbit_s[i]=gbit[i-40];
takeuchi 0:6228559177f8 539 }
takeuchi 0:6228559177f8 540
takeuchi 0:6228559177f8 541 for(k=0;k<40;k++){
takeuchi 0:6228559177f8 542 maxOne(1,1,gbit_s[k]);// graph scroll
takeuchi 0:6228559177f8 543 maxOne(1,2,gbit_s[k+1]);
takeuchi 0:6228559177f8 544 maxOne(1,3,gbit_s[k+2]);
takeuchi 0:6228559177f8 545 maxOne(1,4,gbit_s[k+3]);
takeuchi 0:6228559177f8 546 maxOne(1,5,gbit_s[k+4]);
takeuchi 0:6228559177f8 547 maxOne(1,6,gbit_s[k+5]);
takeuchi 0:6228559177f8 548 maxOne(1,7,gbit_s[k+6]);
takeuchi 0:6228559177f8 549 maxOne(1,8,gbit_s[k+7]);
takeuchi 0:6228559177f8 550 maxOne(2,1,gbit_s[k+8]);
takeuchi 0:6228559177f8 551 maxOne(2,2,gbit_s[k+9]);
takeuchi 0:6228559177f8 552 maxOne(2,3,gbit_s[k+10]);
takeuchi 0:6228559177f8 553 maxOne(2,4,gbit_s[k+11]);
takeuchi 0:6228559177f8 554 maxOne(2,5,gbit_s[k+12]);
takeuchi 0:6228559177f8 555 maxOne(2,6,gbit_s[k+13]);
takeuchi 0:6228559177f8 556 maxOne(2,7,gbit_s[k+14]);
takeuchi 0:6228559177f8 557 maxOne(2,8,gbit_s[k+15]);
takeuchi 0:6228559177f8 558 maxOne(3,1,gbit_s[k+16]);
takeuchi 0:6228559177f8 559 maxOne(3,2,gbit_s[k+17]);
takeuchi 0:6228559177f8 560 maxOne(3,3,gbit_s[k+18]);
takeuchi 0:6228559177f8 561 maxOne(3,4,gbit_s[k+19]);
takeuchi 0:6228559177f8 562 maxOne(3,5,gbit_s[k+20]);
takeuchi 0:6228559177f8 563 maxOne(3,6,gbit_s[k+21]);
takeuchi 0:6228559177f8 564 maxOne(3,7,gbit_s[k+22]);
takeuchi 0:6228559177f8 565 maxOne(3,8,gbit_s[k+23]);
takeuchi 0:6228559177f8 566 maxOne(4,1,gbit_s[k+24]);
takeuchi 0:6228559177f8 567 maxOne(4,2,gbit_s[k+25]);
takeuchi 0:6228559177f8 568 maxOne(4,3,gbit_s[k+26]);
takeuchi 0:6228559177f8 569 maxOne(4,4,gbit_s[k+27]);
takeuchi 0:6228559177f8 570 maxOne(4,5,gbit_s[k+28]);
takeuchi 0:6228559177f8 571 maxOne(4,6,gbit_s[k+29]);
takeuchi 0:6228559177f8 572 maxOne(4,7,gbit_s[k+30]);
takeuchi 0:6228559177f8 573 maxOne(4,8,gbit_s[k+31]);
takeuchi 0:6228559177f8 574 maxOne(5,1,gbit_s[k+32]);
takeuchi 0:6228559177f8 575 maxOne(5,2,gbit_s[k+33]);
takeuchi 0:6228559177f8 576 maxOne(5,3,gbit_s[k+34]);
takeuchi 0:6228559177f8 577 maxOne(5,4,gbit_s[k+35]);
takeuchi 0:6228559177f8 578 maxOne(5,5,gbit_s[k+36]);
takeuchi 0:6228559177f8 579 maxOne(5,6,gbit_s[k+37]);
takeuchi 0:6228559177f8 580 maxOne(5,7,gbit_s[k+38]);
takeuchi 0:6228559177f8 581 maxOne(5,8,gbit_s[k+39]);
takeuchi 0:6228559177f8 582 wait(0.1);
takeuchi 0:6228559177f8 583 }
takeuchi 0:6228559177f8 584
takeuchi 0:6228559177f8 585 k=0;
takeuchi 0:6228559177f8 586 maxOne(1,1,gbit[k]);// kiatu graph hyouji
takeuchi 0:6228559177f8 587 maxOne(1,2,gbit[k+1]);
takeuchi 0:6228559177f8 588 maxOne(1,3,gbit[k+2]);
takeuchi 0:6228559177f8 589 maxOne(1,4,gbit[k+3]);
takeuchi 0:6228559177f8 590 maxOne(1,5,gbit[k+4]);
takeuchi 0:6228559177f8 591 maxOne(1,6,gbit[k+5]);
takeuchi 0:6228559177f8 592 maxOne(1,7,gbit[k+6]);
takeuchi 0:6228559177f8 593 maxOne(1,8,gbit[k+7]);
takeuchi 0:6228559177f8 594 maxOne(2,1,gbit[k+8]);
takeuchi 0:6228559177f8 595 maxOne(2,2,gbit[k+9]);
takeuchi 0:6228559177f8 596 maxOne(2,3,gbit[k+10]);
takeuchi 0:6228559177f8 597 maxOne(2,4,gbit[k+11]);
takeuchi 0:6228559177f8 598 maxOne(2,5,gbit[k+12]);
takeuchi 0:6228559177f8 599 maxOne(2,6,gbit[k+13]);
takeuchi 0:6228559177f8 600 maxOne(2,7,gbit[k+14]);
takeuchi 0:6228559177f8 601 maxOne(2,8,gbit[k+15]);
takeuchi 0:6228559177f8 602 maxOne(3,1,gbit[k+16]);
takeuchi 0:6228559177f8 603 maxOne(3,2,gbit[k+17]);
takeuchi 0:6228559177f8 604 maxOne(3,3,gbit[k+18]);
takeuchi 0:6228559177f8 605 maxOne(3,4,gbit[k+19]);
takeuchi 0:6228559177f8 606 maxOne(3,5,gbit[k+20]);
takeuchi 0:6228559177f8 607 maxOne(3,6,gbit[k+21]);
takeuchi 0:6228559177f8 608 maxOne(3,7,gbit[k+22]);
takeuchi 0:6228559177f8 609 maxOne(3,8,gbit[k+23]);
takeuchi 0:6228559177f8 610 maxOne(4,1,gbit[k+24]);
takeuchi 0:6228559177f8 611 maxOne(4,2,gbit[k+25]);
takeuchi 0:6228559177f8 612 maxOne(4,3,gbit[k+26]);
takeuchi 0:6228559177f8 613 maxOne(4,4,gbit[k+27]);
takeuchi 0:6228559177f8 614 maxOne(4,5,gbit[k+28]);
takeuchi 0:6228559177f8 615 maxOne(4,6,gbit[k+29]);
takeuchi 0:6228559177f8 616 maxOne(4,7,gbit[k+30]);
takeuchi 0:6228559177f8 617 maxOne(4,8,gbit[k+31]);
takeuchi 0:6228559177f8 618 maxOne(5,1,gbit[k+32]);
takeuchi 0:6228559177f8 619 maxOne(5,2,gbit[k+33]);
takeuchi 0:6228559177f8 620 maxOne(5,3,gbit[k+34]);
takeuchi 0:6228559177f8 621 maxOne(5,4,gbit[k+35]);
takeuchi 0:6228559177f8 622 maxOne(5,5,gbit[k+36]);
takeuchi 0:6228559177f8 623 maxOne(5,6,gbit[k+37]);
takeuchi 0:6228559177f8 624 maxOne(5,7,gbit[k+38]);
takeuchi 0:6228559177f8 625 maxOne(5,8,gbit[k+39]);
takeuchi 0:6228559177f8 626
takeuchi 0:6228559177f8 627 for(i=0;i<4;i++){
takeuchi 0:6228559177f8 628 wait(0.5);
takeuchi 0:6228559177f8 629 maxOne(5,8,0);
takeuchi 0:6228559177f8 630 maxOne(1,1,0);
takeuchi 0:6228559177f8 631 wait(0.5);
takeuchi 0:6228559177f8 632 maxOne(1,1,gbit[k]);
takeuchi 0:6228559177f8 633 maxOne(5,8,gbit[k+39]);
takeuchi 0:6228559177f8 634 }
takeuchi 0:6228559177f8 635
takeuchi 0:6228559177f8 636 fshuuki=120;// kousin jikan
takeuchi 0:6228559177f8 637 wtime++;
takeuchi 0:6228559177f8 638 if(wtime == fshuuki){
takeuchi 0:6228559177f8 639 yosou_old=yosou;
takeuchi 0:6228559177f8 640 for(m=1;m<=38;m++){
takeuchi 0:6228559177f8 641 hpdata[m]=hpdata[m+1];
takeuchi 0:6228559177f8 642 }
takeuchi 0:6228559177f8 643 wtime=0;
takeuchi 0:6228559177f8 644 }
takeuchi 0:6228559177f8 645
takeuchi 0:6228559177f8 646 }//while
takeuchi 0:6228559177f8 647 }//main
takeuchi 0:6228559177f8 648
takeuchi 0:6228559177f8 649