LEDマトリックスユニット 3枚 気圧グラフ表示搭載

Dependencies:   mbed

Committer:
takeuchi
Date:
Wed Jun 15 08:36:43 2016 +0000
Revision:
0:191b5a7c9fd0
LED???????????3???????????

Who changed what in which revision?

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