for LED Matrix 5piece

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 // LedMatrix  5mai fullset  final version
00002 
00003 #include "mbed.h"
00004 #include "BME280.h"
00005  
00006 DigitalOut led(dp28);
00007 
00008 BME280 sensor1(dp5,dp27,0x76 << 1);
00009 BME280 sensor2(dp5,dp27,0x77 << 1);
00010 
00011 // spi(mosi,miso,sck)
00012 SPI max72_spi(dp2, NC, dp6);
00013 DigitalOut load(dp14);//spi load
00014 
00015 DigitalOut red(dp16);
00016 DigitalOut yellow(dp17);
00017 DigitalOut green(dp18);
00018 
00019 // CPU       MT7219
00020 // dp1 mosi(Master In Salve Out) =>   DIN
00021 // dp2 miso(Master OutSlave)   =>   nc
00022 // dp6 sck (Serial Clock) =>   clk
00023 // dp14 =>(Slave Select) load
00024 
00025 int maxInUse = 5;    //change this variable to set how many MAX7219's you'll use
00026  
00027 // define max7219 registers
00028 #define max7219_reg_noop         0x00
00029 #define max7219_reg_digit0       0x01
00030 #define max7219_reg_digit1       0x02
00031 #define max7219_reg_digit2       0x03
00032 #define max7219_reg_digit3       0x04
00033 #define max7219_reg_digit4       0x05
00034 #define max7219_reg_digit5       0x06
00035 #define max7219_reg_digit6       0x07
00036 #define max7219_reg_digit7       0x08
00037 #define max7219_reg_decodeMode   0x09
00038 #define max7219_reg_intensity    0x0a
00039 #define max7219_reg_scanLimit    0x0b
00040 #define max7219_reg_shutdown     0x0c
00041 #define max7219_reg_displayTest  0x0f
00042  
00043 #define LOW 0
00044 #define HIGH 1
00045 #define MHZ 1000000
00046 #define ON 1
00047 #define OFF 0
00048 
00049 double p1,t1,h1,pp1;
00050 double p2,t2,h2,pp2;
00051  
00052 void maxSingle( int reg, int col) {
00053 //maxSingle is the "easy"  function to use for a
00054 //single max7219
00055     load = LOW;            // begin
00056     max72_spi.write(reg);  // specify register
00057     max72_spi.write(col);  // put data
00058     load = HIGH;           // make sure data is loaded (on rising edge of LOAD/CS)
00059 }
00060  
00061 void maxAll (int reg, int col) {    // initialize  all  MAX7219's in the system
00062     load = LOW;                    // begin
00063     for ( int c=1; c<= maxInUse; c++) {
00064         max72_spi.write(reg);  // specify register
00065         max72_spi.write(col);  // put data
00066     }
00067     load = HIGH;
00068 }
00069  
00070 void maxOne(int maxNr, int reg, int col) {
00071 //maxOne is for adressing different MAX7219's,
00072 //while having a couple of them cascaded
00073     int c = 0;
00074     load = LOW;
00075  
00076     for ( c = maxInUse; c >= maxNr; c--) {
00077         max72_spi.write(0);  // no-op
00078         max72_spi.write(0);  // no-op
00079     }
00080  
00081     max72_spi.write(reg);  // specify register
00082     max72_spi.write(col);  // put data
00083  
00084     for ( c=maxNr-1; c >= 1; c--) {
00085         max72_spi.write(0);  // no-op
00086         max72_spi.write(0);  // no-op
00087     }
00088     load = HIGH;
00089 }
00090   
00091 void setup () {
00092     // initiation of the max 7219
00093     // SPI setup: 8 bits, mode 0
00094     max72_spi.format(8, 0);
00095     
00096     // going by the datasheet, min clk is 100ns so theoretically 10MHz should work...
00097     // max72_spi.frequency(10*MHZ);
00098     
00099     maxAll(max7219_reg_scanLimit, 0x07);
00100     maxAll(max7219_reg_decodeMode, 0x00);  // using an led matrix (not digits)
00101     maxAll(max7219_reg_shutdown, 0x01);    // not in shutdown mode
00102     maxAll(max7219_reg_displayTest, 0x00); // no display test
00103     for (int e=1; e<=8; e++) {    // empty registers, turn all LEDs off
00104         maxAll(e,0);
00105     }
00106     maxAll(max7219_reg_intensity, 0x0f & 0x0f);    // the first 0x0f is the value you can set
00107     // range: 0x00 to 0x0f
00108 } 
00109  
00110 void get_sensor1(void){
00111     t1=sensor1.getTemperature();
00112     if(t1 > 85.0){
00113          t1=t1-409.0-1;
00114     }
00115     h1=sensor1.getHumidity();
00116     pp1=sensor1.getPressure(); 
00117     pp1=pp1+int(700/9);// kiatu kani hosei
00118 } 
00119 
00120 void get_sensor2(void){
00121     t2=sensor2.getTemperature();
00122     if(t2 > 85.0){
00123          t2=t2-409.0-1;
00124     }
00125     h2=sensor2.getHumidity();
00126     pp2=sensor2.getPressure(); 
00127     pp2=pp2+int(700/9);
00128 }  
00129  
00130 int main(void) {
00131 
00132  const uint64_t moji_font[] = {// bold font , kagami moji font
00133     /*0x3c66666e76663c00,//0~9
00134     0x7e1818181c181800,
00135     0x7e060c3060663c00,
00136     0x3c66603860663c00,
00137     0x30307e3234383000,
00138     0x3c6660603e067e00,
00139     0x3c66663e06663c00,
00140     0x1818183030667e00,
00141     0x3c66663c66663c00,
00142     0x3c66607c66663c00,*/
00143     
00144     0x1c2222222222221c,//0~9
00145     0x1c08080808080c08,
00146     0x3e0408102020221c,
00147     0x1c2220201820221c,
00148     0x20203e2224283020,
00149     0x1c2220201e02023e,
00150     0x1c2222221e02221c,
00151     0x040404081020203e,
00152     0x1c2222221c22221c,
00153     0x1c22203c2222221c,  
00154     0x6666663e06060600,// 10 h
00155     0x06063e66663e0000,// 11 p
00156     0x1818000000000000,// 12 .
00157     0x30480848340a0a04, // 13 dc
00158     0x1010157555770101,// 14 hp
00159     0x0010107c10100000,// 15 +
00160     0x0000007e00000000,// 16 -
00161     0x082a1c771c2a0800, //17 asuta1
00162     0x007e424a52427e00, // 18 sikaku2
00163     0x0000000000000000, // 19 blank
00164     0x60660c1830660600, // 20 %
00165     0x4242665a5a7e1800, // 21 uchi
00166     0x220424692e2a2c00,  // 22 soto
00167     0x126a3a22227a2200,// 23 ha
00168     0x44c6444c56640400,// 24 re
00169     0x2010080408102000,// 25 ku
00170     0x1028483e083e1000,// 26 mo
00171     0x1020404044444400,// 27 ri
00172     0x2874d27c107c1000,// 28 a
00173     0x449a9aaaaa7c2800,//  29 me
00174     0x6c927cc482443800,//  30 kumo
00175     0x30309254ba10aa28,//  31 ame
00176     0x082a1c771c2a0800,// 32 hare 
00177     0x1010101054381000,// 33 ue yajirusi
00178     0x0002044850607800,// 34 naname ue 
00179     0x0078605048040200,// 35 naname sita
00180     0x1038541010101000, // 36 sita
00181     0x0000183c3c180000, // 37 asuta2
00182     0x0010207e20100000,  // 38 onaji yajirusi
00183     0x5050557553550503  // 39 RH 
00184     };
00185     
00186 /*
00187     
00188  const uint64_t moji_font[]={   
00189   0x006e333e301e0000,//a
00190   0x003b66663e060607,//b
00191   0x001e3303331e0000,//c
00192   0x006e33333e303038,//d
00193   0x001e033f331e0000,//e
00194   0x000f06060f06361c,//f
00195   0x1f303e33336e0000,//g
00196   0x006766666e360607,//h
00197   0x001e0c0c0c0e000c,//i
00198   0x1e33333030300030,//j
00199   0x0067361e36660607,//k
00200   0x001e0c0c0c0c0c0e,//l
00201   0x00636b7f7f330000,//m
00202   0x00333333331f0000,//n
00203   0x001e3333331e0000,//o
00204   0x0f063e66663b0000,//p
00205   0x78303e33336e0000,//q
00206   0x000f06666e3b0000,//r
00207   0x001f301e033e0000,//s
00208   0x00182c0c0c3e0c08,//t
00209   0x006e333333330000,//u
00210   0x000c1e3333330000,//v
00211   0x00367f7f6b630000,//w
00212   0x0063361c36630000,//x
00213   0x1f303e3333330000,//y
00214   0x003f260c193f0000 //z
00215  };
00216 
00217 */
00218 
00219 //    // Jissainiha konoyouni mieru
00220 //     maxSingle(1,1);                        |-| -------+
00221 //     maxSingle(2,2);                        |-| ------+-
00222 //     maxSingle(3,4);                        |-| -----+--
00223 //     maxSingle(4,8);                        |-| ----+---
00224 //     maxSingle(5,16);                       |-| ---+----
00225 //     maxSingle(6,32);                       |-| --+-----
00226 //     maxSingle(7,64);                       |-| -+------
00227 //     maxSingle(8,128);                      |-| +-------
00228   
00229     int i,j,k,m,n;
00230     uint8_t bitsum[22][9],bit1gyou,bitline[350];
00231     uint64_t moji1,load_image[35];
00232     long hpascal,ttemp,sitemp;
00233     int hpketa[4],tpketa[3],siketa[3];
00234     int gdot[]={128,64,32,16,8,4,2,1};
00235     int gbit[40],gbit_s[80];
00236     long wtime=0;
00237     long hpdata[40],hprange,hpmax,hpmin;
00238     long hpcenter;
00239     int dotdata[40],fstloop,fshuuki;
00240     double hpscope;
00241     double gctrim=0.0;
00242     int henka=0;
00243     int yosou=1,yosou_old;
00244     int mojisu;
00245     double hpsum,hpavg;
00246  
00247     setup();
00248     
00249     wait(0.1);
00250     get_sensor1();
00251     get_sensor2();
00252     
00253     hpascal=long(pp1);
00254     hpmin=hpascal;
00255     hpmax=hpascal;
00256     hpscope=1;
00257     hprange=0;
00258     for(i=0;i<40;i++){
00259         hpdata[i]=hpascal-3;
00260     }
00261             
00262     while(1){
00263        
00264       get_sensor1();
00265       get_sensor2();
00266             
00267       hpascal=long(pp1);
00268       ttemp=long(t2*10); // seisuuchi henkan
00269       sitemp=long(h2);
00270  
00271       hpketa[0]=int(hpascal/1000);hpascal=hpascal-hpketa[0]*1000;
00272       hpketa[1]=int(hpascal/100); hpascal=hpascal-hpketa[1]*100;
00273       hpketa[2]=int(hpascal/10);  hpascal=hpascal-hpketa[2]*10;
00274       hpketa[3]=hpascal;
00275       
00276       tpketa[0]=int(ttemp/100);ttemp=ttemp-tpketa[0]*100;// jyuu noketa
00277       tpketa[1]=int(ttemp/10);ttemp=ttemp-tpketa[1]*10;// ichi no keta
00278       tpketa[2]=int(ttemp); // shousuutenika no keta
00279       
00280       siketa[0]=int(sitemp/100);sitemp=sitemp-siketa[0]*100;
00281       siketa[1]=int(sitemp/10);sitemp=sitemp-siketa[1]*10;
00282       siketa[2]=int(sitemp);
00283       
00284       load_image[0]=moji_font[19]; //blank        
00285       load_image[1]=moji_font[19]; //blank 
00286 
00287       if(hpdata[23] > hpdata[22]){
00288              load_image[2]=moji_font[34];//naname ue
00289       }
00290       else if(hpdata[23] < hpdata[22]){
00291              load_image[2]=moji_font[35];//naname sita
00292       }
00293       else{
00294              load_image[2]=moji_font[38];//onaji yajirusi
00295       }
00296 
00297       for(i=3;i<=6;i++){// kiatu 4keta suuji [3 ~ 6]
00298             for(j=0;j<=9;j++){
00299                 if(hpketa[i-3] == j){
00300                     load_image[i]=moji_font[j];
00301                 }
00302             }
00303       }
00304       load_image[7]=moji_font[14];//hp
00305       load_image[8]=moji_font[19]; //blank       
00306       
00307       if(t1 >=0){
00308           load_image[9]=moji_font[15];//+
00309       }
00310       else {
00311           load_image[9]=moji_font[16];// -
00312       }                
00313 
00314       for(i=0;i<=1;i++){// kion seisuuketa
00315           for(j=0;j<=9;j++){
00316               if(tpketa[i] == j){
00317                   load_image[i+10]=moji_font[j];
00318               }
00319           }
00320       }
00321       load_image[12]=moji_font[12];// .
00322       for(j=0;j<=9;j++){// kion shousuu keta
00323               if(tpketa[2] == j){
00324                   load_image[13]=moji_font[j];
00325               }
00326       }
00327       load_image[14]=moji_font[13]; //dc 
00328 
00329       load_image[15]=moji_font[19];//blank
00330       
00331        for(i=0;i<=2;i++){ // situdo 3 keta
00332             for(j=0;j<=9;j++){
00333                 if(siketa[i] == j){
00334                     load_image[i+16]=moji_font[j];
00335                 }
00336             }
00337        }
00338        if(siketa[0]==0){// 0 shouryaku
00339            load_image[16]=moji_font[39];// situdo
00340        }
00341        
00342              
00343        load_image[19]=moji_font[20]; // %
00344 
00345        load_image[20]=moji_font[19];//blank
00346 
00347       // Tenki yosoku
00348        henka=0;
00349        for(m=39;m>=32;m--){
00350            henka=henka+(hpdata[m]-hpdata[m-1]);
00351        }
00352        
00353        load_image[21]=load_image[2];// hadder
00354        
00355         if(henka >= 3){
00356             yosou=1;
00357             load_image[22]=moji_font[23];//ha
00358             load_image[23]=moji_font[24];//re
00359             load_image[24]=moji_font[38];//onaji yajirusi
00360             load_image[25]=moji_font[23];//ha
00361             load_image[26]=moji_font[24];//re
00362             load_image[27]=moji_font[34];//naname ue          
00363         }
00364         else if(henka ==1 || henka == 2){
00365             yosou=2;
00366             load_image[22]=moji_font[23];//ha
00367             load_image[23]=moji_font[24];//re
00368             load_image[24]=moji_font[38];//onaji yajirusi
00369             load_image[25]=moji_font[25];//ku
00370             load_image[26]=moji_font[26];//mo
00371             load_image[27]=moji_font[27];//ri          
00372         }    
00373         else if(henka == 0){
00374             yosou=3;
00375             if(yosou_old <= 3){
00376                 load_image[22]=moji_font[25];//ku
00377                 load_image[23]=moji_font[26];//mo
00378                 load_image[24]=moji_font[27];//ri          
00379                 load_image[25]=moji_font[34];//naname ue          
00380                 load_image[26]=moji_font[23];//ha
00381                 load_image[27]=moji_font[24];//re
00382             }
00383             else if(yosou_old >= 4){
00384                 load_image[22]=moji_font[25];//ku
00385                 load_image[23]=moji_font[26];//mo
00386                 load_image[24]=moji_font[27];//ri          
00387                 load_image[25]=moji_font[38];//onaji yajirusi
00388                 load_image[26]=moji_font[28];//a
00389                 load_image[27]=moji_font[29];//me
00390             }
00391                 
00392          }
00393          else if(henka == -1 || henka ==-2){
00394             yosou=4;
00395             load_image[22]=moji_font[25];//ku
00396             load_image[23]=moji_font[26];//mo
00397             load_image[24]=moji_font[27];//ri          
00398             load_image[25]=moji_font[35];//naname sita
00399             load_image[26]=moji_font[28];//a
00400             load_image[27]=moji_font[29];//me
00401 
00402         }          
00403         else if(henka <= -3){
00404             yosou=5;
00405                 load_image[22]=moji_font[28];//a
00406                 load_image[23]=moji_font[29];//me
00407                 load_image[24]=moji_font[38];//onaji yajirusi
00408                 load_image[25]=moji_font[28];//a
00409                 load_image[26]=moji_font[29];//me
00410                 load_image[27]=moji_font[35];//naname sita
00411        }
00412        load_image[28]=moji_font[19];//blank
00413        load_image[29]=moji_font[19];//blank
00414        load_image[30]=moji_font[19];//blank
00415        
00416        mojisu=31;//0~30 31 moji
00417        
00418        for(i=0;i< mojisu;i++){ 
00419             moji1=load_image[i];
00420             for(j=0;j<8;j++){// bitsum[1]
00421                 bitsum[i][j]=0;
00422             }//j
00423             for(j=0;j<8;j++){
00424                 bit1gyou=moji1 & 0xff;
00425                 for(k=0;k<8;k++){//  kagami moji no font
00426                 //for(k=8;k>=1;k--){ // futuu no font
00427                     bitsum[i][k]=bitsum[i][k]+(bit1gyou & 0x01)*pow((double)2,(double)(j));
00428                     bit1gyou=bit1gyou >> 1;
00429                 }//k
00430                 moji1=moji1 >> 8;
00431             }//j
00432         }// i
00433         
00434         k=0;// bitline henkan
00435         for(i=0;i<mojisu;i++){
00436             for(j=0;j<8;j++){
00437                 bitline[k]=bitsum[i][j];
00438                 k++;
00439             }
00440         }
00441         
00442         for(i=0;i<=(mojisu*8-1-39);i++){// bitline hyouji
00443             k=i;
00444             maxOne(1,1,bitline[k]);
00445             maxOne(1,2,bitline[k+1]);
00446             maxOne(1,3,bitline[k+2]);
00447             maxOne(1,4,bitline[k+3]);
00448             maxOne(1,5,bitline[k+4]);
00449             maxOne(1,6,bitline[k+5]);
00450             maxOne(1,7,bitline[k+6]);
00451             maxOne(1,8,bitline[k+7]);
00452             maxOne(2,1,bitline[k+8]);
00453             maxOne(2,2,bitline[k+9]);
00454             maxOne(2,3,bitline[k+10]);
00455             maxOne(2,4,bitline[k+11]);
00456             maxOne(2,5,bitline[k+12]);
00457             maxOne(2,6,bitline[k+13]);
00458             maxOne(2,7,bitline[k+14]);
00459             maxOne(2,8,bitline[k+15]);
00460             maxOne(3,1,bitline[k+16]);
00461             maxOne(3,2,bitline[k+17]);
00462             maxOne(3,3,bitline[k+18]);
00463             maxOne(3,4,bitline[k+19]);
00464             maxOne(3,5,bitline[k+20]);
00465             maxOne(3,6,bitline[k+21]);
00466             maxOne(3,7,bitline[k+22]);
00467             maxOne(3,8,bitline[k+23]);
00468             maxOne(4,1,bitline[k+24]);
00469             maxOne(4,2,bitline[k+25]);
00470             maxOne(4,3,bitline[k+26]);
00471             maxOne(4,4,bitline[k+27]);
00472             maxOne(4,5,bitline[k+28]);
00473             maxOne(4,6,bitline[k+29]);
00474             maxOne(4,7,bitline[k+30]);
00475             maxOne(4,8,bitline[k+31]);
00476             maxOne(5,1,bitline[k+32]);
00477             maxOne(5,2,bitline[k+33]);
00478             maxOne(5,3,bitline[k+34]);
00479             maxOne(5,4,bitline[k+35]);
00480             maxOne(5,5,bitline[k+36]);
00481             maxOne(5,6,bitline[k+37]);
00482             maxOne(5,7,bitline[k+38]);
00483             maxOne(5,8,bitline[k+39]);
00484             wait(0.1);
00485         }                               
00486                 
00487         hpascal=long(pp1);
00488         if(hpascal > hpdata[39]+5){
00489             hpascal=hpdata[39]+5;
00490         }
00491         if(hpascal < hpdata[39]-5){
00492             hpascal=hpdata[39]-5;
00493         }       
00494         hpdata[39]=hpascal;
00495         hpmax=hpdata[39];
00496         hpmin=hpdata[39];                          
00497         for(m=16;m<39;m++){ // graph bunseki 24h
00498             if(hpmax < hpdata[m]){
00499                 hpmax=hpdata[m];
00500             }
00501             if(hpmin > hpdata[m]){
00502                 hpmin=hpdata[m];
00503             }
00504         }//for
00505    
00506         hprange=hpmax-hpmin;// auto graph
00507         if(hprange <= -1){
00508             hprange=0;
00509         }
00510         if(hprange >= 8 ){//auto range hpscope set
00511             hpscope=double(hprange)/8.0;
00512         }
00513         else{
00514             hpscope=1.0;
00515         }
00516         if(hprange <= 3){//auto trim gctrim set
00517             gctrim=double(4-hprange);
00518         }
00519         else {
00520             gctrim=0;
00521         }
00522         for(m=1;m<=39;m++){
00523             dotdata[m]=int(double(hpdata[m]-hpmin)/hpscope)+gctrim;
00524             if(dotdata[m] < 0){
00525                 dotdata[m]=0;
00526             }
00527             if(dotdata[m] > 7){
00528                 dotdata[m]=7;
00529             }
00530             gbit[m]=gdot[dotdata[m]];
00531        }
00532        gbit[0]=gdot[int(hpscope+0.5-1)];//range hyouji        
00533                         
00534         for(i=0;i<40;i++){// graph scroll data
00535             gbit_s[i]=0;  // zenhan 0
00536         }
00537         for(i=40;i<80;i++){// kouhan jitu data
00538             gbit_s[i]=gbit[i-40];
00539         }
00540         
00541         for(k=0;k<40;k++){
00542             maxOne(1,1,gbit_s[k]);// graph scroll
00543             maxOne(1,2,gbit_s[k+1]);
00544             maxOne(1,3,gbit_s[k+2]);
00545             maxOne(1,4,gbit_s[k+3]);
00546             maxOne(1,5,gbit_s[k+4]);
00547             maxOne(1,6,gbit_s[k+5]);
00548             maxOne(1,7,gbit_s[k+6]);
00549             maxOne(1,8,gbit_s[k+7]);
00550             maxOne(2,1,gbit_s[k+8]);
00551             maxOne(2,2,gbit_s[k+9]);
00552             maxOne(2,3,gbit_s[k+10]);
00553             maxOne(2,4,gbit_s[k+11]);
00554             maxOne(2,5,gbit_s[k+12]);
00555             maxOne(2,6,gbit_s[k+13]);
00556             maxOne(2,7,gbit_s[k+14]);
00557             maxOne(2,8,gbit_s[k+15]);
00558             maxOne(3,1,gbit_s[k+16]);
00559             maxOne(3,2,gbit_s[k+17]);
00560             maxOne(3,3,gbit_s[k+18]);
00561             maxOne(3,4,gbit_s[k+19]);
00562             maxOne(3,5,gbit_s[k+20]);
00563             maxOne(3,6,gbit_s[k+21]);
00564             maxOne(3,7,gbit_s[k+22]);
00565             maxOne(3,8,gbit_s[k+23]);
00566             maxOne(4,1,gbit_s[k+24]);
00567             maxOne(4,2,gbit_s[k+25]);
00568             maxOne(4,3,gbit_s[k+26]);
00569             maxOne(4,4,gbit_s[k+27]);
00570             maxOne(4,5,gbit_s[k+28]);
00571             maxOne(4,6,gbit_s[k+29]);
00572             maxOne(4,7,gbit_s[k+30]);
00573             maxOne(4,8,gbit_s[k+31]);
00574             maxOne(5,1,gbit_s[k+32]);
00575             maxOne(5,2,gbit_s[k+33]);
00576             maxOne(5,3,gbit_s[k+34]);
00577             maxOne(5,4,gbit_s[k+35]);
00578             maxOne(5,5,gbit_s[k+36]);
00579             maxOne(5,6,gbit_s[k+37]);
00580             maxOne(5,7,gbit_s[k+38]);
00581             maxOne(5,8,gbit_s[k+39]);
00582             wait(0.1);
00583         } 
00584                
00585         k=0;
00586         maxOne(1,1,gbit[k]);// kiatu graph hyouji
00587         maxOne(1,2,gbit[k+1]);
00588         maxOne(1,3,gbit[k+2]);
00589         maxOne(1,4,gbit[k+3]);
00590         maxOne(1,5,gbit[k+4]);
00591         maxOne(1,6,gbit[k+5]);
00592         maxOne(1,7,gbit[k+6]);
00593         maxOne(1,8,gbit[k+7]);
00594         maxOne(2,1,gbit[k+8]);
00595         maxOne(2,2,gbit[k+9]);
00596         maxOne(2,3,gbit[k+10]);
00597         maxOne(2,4,gbit[k+11]);
00598         maxOne(2,5,gbit[k+12]);
00599         maxOne(2,6,gbit[k+13]);
00600         maxOne(2,7,gbit[k+14]);
00601         maxOne(2,8,gbit[k+15]);
00602         maxOne(3,1,gbit[k+16]);
00603         maxOne(3,2,gbit[k+17]);
00604         maxOne(3,3,gbit[k+18]);
00605         maxOne(3,4,gbit[k+19]);
00606         maxOne(3,5,gbit[k+20]);
00607         maxOne(3,6,gbit[k+21]);
00608         maxOne(3,7,gbit[k+22]);
00609         maxOne(3,8,gbit[k+23]);
00610         maxOne(4,1,gbit[k+24]);
00611         maxOne(4,2,gbit[k+25]);
00612         maxOne(4,3,gbit[k+26]);
00613         maxOne(4,4,gbit[k+27]);
00614         maxOne(4,5,gbit[k+28]);
00615         maxOne(4,6,gbit[k+29]);
00616         maxOne(4,7,gbit[k+30]);
00617         maxOne(4,8,gbit[k+31]);
00618         maxOne(5,1,gbit[k+32]);
00619         maxOne(5,2,gbit[k+33]);
00620         maxOne(5,3,gbit[k+34]);
00621         maxOne(5,4,gbit[k+35]);
00622         maxOne(5,5,gbit[k+36]);
00623         maxOne(5,6,gbit[k+37]);
00624         maxOne(5,7,gbit[k+38]);
00625         maxOne(5,8,gbit[k+39]);
00626 
00627        for(i=0;i<4;i++){
00628            wait(0.5);
00629            maxOne(5,8,0);
00630            maxOne(1,1,0);
00631            wait(0.5);
00632            maxOne(1,1,gbit[k]);
00633            maxOne(5,8,gbit[k+39]);
00634        }
00635        
00636        fshuuki=120;// kousin jikan
00637        wtime++;
00638        if(wtime == fshuuki){
00639            yosou_old=yosou;
00640            for(m=1;m<=38;m++){
00641                hpdata[m]=hpdata[m+1];
00642            }
00643            wtime=0;
00644        }      
00645                     
00646     }//while
00647 }//main
00648 
00649