Number charactors count up sample with MIP8F_SPI_Ver30
Dependencies: MIP8F_SPI_Ver30 mbed
Number charactors count up sample like a speed meter of a car with MIP8F_SPI_Ver30
Introduction
Mumber charactors count up sample like a speed meter of a car with MIP8F_SPI_Ver30
Only for LPM027M128x (400x240) ,JDI DIsplay.
Other information , please refer to https://os.mbed.com/teams/JapanDisplayInc/code/MIP8f_FRDM_sample/
Usage
Copy Setting File and Image to micro SD-CARD. you can NOT use same sample color images of OTHER VERSION SAMPLE.
a) Download the following file corresponding to the target panel, and rename file identifier (.bin -> .zip), and unzip the file on micro SD Card's root directory.
LPM027M128x (400x240) :/media/uploads/JDI_Mbed_Team/400x240_ver30.bin
b) Insert micro SD-CARD to FRDM-K64F. c) Upload binary file to FRDM-K64F.and push Reset Button.
Other information
refer to Usage on https://os.mbed.com/teams/JapanDisplayInc/code/MIP8f_FRDM_sample/
this Sample Code (.bin)
/media/uploads/JDI_Mbed_Team/mip8f_frdm_sample_countupdigit.k64f.bin
main.cpp@9:0550432c22b5, 2018-10-31 (annotated)
- Committer:
- JDI_Mbed_Team
- Date:
- Wed Oct 31 02:18:53 2018 +0000
- Revision:
- 9:0550432c22b5
- Parent:
- 7:c7a676157b4d
Digit count up sample with MIP8F_SPI_Ver30
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JDI_Mbed_Team | 0:33fe30a2b785 | 1 | /** |
JDI_Mbed_Team | 1:e5796aa9f1aa | 2 | * @file main.cpp |
JDI_Mbed_Team | 7:c7a676157b4d | 3 | * @brief Ver3.0 Sample source code for MIP8 diplay. |
JDI_Mbed_Team | 1:e5796aa9f1aa | 4 | * @details |
JDI_Mbed_Team | 1:e5796aa9f1aa | 5 | * |
JDI_Mbed_Team | 7:c7a676157b4d | 6 | * Ver3.0 Addtional function is font display. this demo code is tha degit is counted up like a meter panel |
JDI_Mbed_Team | 7:c7a676157b4d | 7 | * ver2.0 Addtional function is Monochome display by 1bit mode of SPI transfer. |
JDI_Mbed_Team | 1:e5796aa9f1aa | 8 | * |
JDI_Mbed_Team | 1:e5796aa9f1aa | 9 | * spi-transfer to Display has 3 mode. |
JDI_Mbed_Team | 1:e5796aa9f1aa | 10 | * 4bit mode is color display, this bit arrange is R,G,B,x. R,G,B = R,G,B subpixel bit. a x bit is Dummy. |
JDI_Mbed_Team | 1:e5796aa9f1aa | 11 | * No ues(3bit mode is color display, this bit arrange is R,G,B. R,G,B = R,G,B subpixel bit. No bit is Dummy.) |
JDI_Mbed_Team | 1:e5796aa9f1aa | 12 | * 1bit mode is monocrome display,high speed refresh mode. a only Green subpixel of bitmap data is transfered. |
JDI_Mbed_Team | 1:e5796aa9f1aa | 13 | * <License> |
JDI_Mbed_Team | 1:e5796aa9f1aa | 14 | * Copyright 2018 Japan Display Inc. |
JDI_Mbed_Team | 1:e5796aa9f1aa | 15 | * Licensed under the Apache License, Version 2.0 (the "License"); |
JDI_Mbed_Team | 1:e5796aa9f1aa | 16 | * you may not use this file except in compliance with the License. |
JDI_Mbed_Team | 1:e5796aa9f1aa | 17 | * You may obtain a copy of the License at |
JDI_Mbed_Team | 1:e5796aa9f1aa | 18 | * |
JDI_Mbed_Team | 1:e5796aa9f1aa | 19 | * http://www.apache.org/licenses/LICENSE-2.0 |
JDI_Mbed_Team | 1:e5796aa9f1aa | 20 | * |
JDI_Mbed_Team | 1:e5796aa9f1aa | 21 | * Unless required by applicable law or agreed to in writing, software |
JDI_Mbed_Team | 1:e5796aa9f1aa | 22 | * distributed under the License is distributed on an "AS IS" BASIS, |
JDI_Mbed_Team | 1:e5796aa9f1aa | 23 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
JDI_Mbed_Team | 1:e5796aa9f1aa | 24 | * See the License for the specific language governing permissions and |
JDI_Mbed_Team | 1:e5796aa9f1aa | 25 | * limitations under the License. |
JDI_Mbed_Team | 1:e5796aa9f1aa | 26 | */ |
JDI_Mbed_Team | 1:e5796aa9f1aa | 27 | #include "stdio.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 28 | #include "string" |
JDI_Mbed_Team | 0:33fe30a2b785 | 29 | #include "mbed.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 30 | #include "MIP8F_SPI.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 31 | #include "SDFileSystem.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 32 | #include "StateSW.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 33 | #include "TglSW.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 34 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 35 | #include "Arial12x12.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 36 | #include "Arial24x23.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 37 | #include "Arial28x28.h" |
JDI_Mbed_Team | 7:c7a676157b4d | 38 | #include "Arial37x36.h" |
JDI_Mbed_Team | 7:c7a676157b4d | 39 | #include "Arial42x42.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 40 | #include "font_big.h" |
JDI_Mbed_Team | 7:c7a676157b4d | 41 | #include "Arial94x94.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 42 | //#include "Prototype29x28.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 43 | //#include "Prototype70x86.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 44 | //#include "HGP23x29.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 45 | //#include "HGP15x19.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 46 | //#include "symbol.h" |
JDI_Mbed_Team | 0:33fe30a2b785 | 47 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 48 | #define ON 1 |
JDI_Mbed_Team | 0:33fe30a2b785 | 49 | #define OFF 0 |
JDI_Mbed_Team | 0:33fe30a2b785 | 50 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 51 | //K64F |
JDI_Mbed_Team | 0:33fe30a2b785 | 52 | SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // mosi,miso,sck,cs |
JDI_Mbed_Team | 0:33fe30a2b785 | 53 | memLCD8 WD(PTD2,PTD3,PTD1,PTD0,PTC4,PTD3); //PTC12); // mosi,miso,clk,cs,disp,power |
JDI_Mbed_Team | 0:33fe30a2b785 | 54 | PwmOut BK(PTC3); |
JDI_Mbed_Team | 0:33fe30a2b785 | 55 | PwmOut COM60HZ(PTC10); //add 20161108 |
JDI_Mbed_Team | 0:33fe30a2b785 | 56 | DigitalOut COMSEL(PTA2,0); //add 20161108 |
JDI_Mbed_Team | 0:33fe30a2b785 | 57 | DigitalOut BLCTRL(PTB10,0); //add 20171115 |
JDI_Mbed_Team | 0:33fe30a2b785 | 58 | // SW2 |
JDI_Mbed_Team | 0:33fe30a2b785 | 59 | StateSW swPWMorOFF(SW2); //PTC6); |
JDI_Mbed_Team | 0:33fe30a2b785 | 60 | InterruptIn PWMorOFF(SW2); |
JDI_Mbed_Team | 0:33fe30a2b785 | 61 | // SW3 |
JDI_Mbed_Team | 0:33fe30a2b785 | 62 | TglSW HaltSW(SW3); //PTA4); |
JDI_Mbed_Team | 0:33fe30a2b785 | 63 | DigitalIn TexSW(SW3); |
JDI_Mbed_Team | 0:33fe30a2b785 | 64 | |
JDI_Mbed_Team | 1:e5796aa9f1aa | 65 | //for debug |
JDI_Mbed_Team | 7:c7a676157b4d | 66 | Serial pc(USBTX, USBRX); // tx, rx |
JDI_Mbed_Team | 7:c7a676157b4d | 67 | |
JDI_Mbed_Team | 7:c7a676157b4d | 68 | void SDtex2BUF(char *filepath); |
JDI_Mbed_Team | 0:33fe30a2b785 | 69 | |
JDI_Mbed_Team | 1:e5796aa9f1aa | 70 | //function prototype |
JDI_Mbed_Team | 0:33fe30a2b785 | 71 | void SD2BUF(char *filepath); |
JDI_Mbed_Team | 0:33fe30a2b785 | 72 | void ifOFFseq(void); |
JDI_Mbed_Team | 0:33fe30a2b785 | 73 | void ifswPWM(void); |
JDI_Mbed_Team | 0:33fe30a2b785 | 74 | void OffSequence(void); |
JDI_Mbed_Team | 0:33fe30a2b785 | 75 | void DispAllDir(const char *fsrc); |
JDI_Mbed_Team | 0:33fe30a2b785 | 76 | void ReadBmp(const char *fsrc, uint32_t FileNum); |
JDI_Mbed_Team | 0:33fe30a2b785 | 77 | uint32_t CntFile(const char *fsrc); |
JDI_Mbed_Team | 1:e5796aa9f1aa | 78 | //Grobal value |
JDI_Mbed_Team | 0:33fe30a2b785 | 79 | int ifMargeTXT = 0; |
JDI_Mbed_Team | 0:33fe30a2b785 | 80 | int width = 400; |
JDI_Mbed_Team | 0:33fe30a2b785 | 81 | int height= 240; |
JDI_Mbed_Team | 0:33fe30a2b785 | 82 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 83 | float BKduty = 0; |
JDI_Mbed_Team | 0:33fe30a2b785 | 84 | float BKjudge = 0; |
JDI_Mbed_Team | 0:33fe30a2b785 | 85 | //double BKduty = 0; |
JDI_Mbed_Team | 0:33fe30a2b785 | 86 | float bk_timer = 1.0; |
JDI_Mbed_Team | 0:33fe30a2b785 | 87 | int blduty = 0; |
JDI_Mbed_Team | 0:33fe30a2b785 | 88 | int bloff = 0; |
JDI_Mbed_Team | 1:e5796aa9f1aa | 89 | int blctrl_sel = 0; //0:40mA, 1:160mA //Y.S |
JDI_Mbed_Team | 7:c7a676157b4d | 90 | // Readed bitmap format, Color bit size = 1,4,8,(16),24,32 |
JDI_Mbed_Team | 7:c7a676157b4d | 91 | uint16_t bmp_bitcount; |
JDI_Mbed_Team | 0:33fe30a2b785 | 92 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 93 | int main() { |
JDI_Mbed_Team | 0:33fe30a2b785 | 94 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 95 | uint32_t filenum=0; |
JDI_Mbed_Team | 0:33fe30a2b785 | 96 | char filepath[40]; |
JDI_Mbed_Team | 7:c7a676157b4d | 97 | char countup[3+1]; |
JDI_Mbed_Team | 7:c7a676157b4d | 98 | char KMPH[4+1]; |
JDI_Mbed_Team | 0:33fe30a2b785 | 99 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 100 | sd.disk_initialize(); |
JDI_Mbed_Team | 0:33fe30a2b785 | 101 | HaltSW.Enable(1); |
JDI_Mbed_Team | 0:33fe30a2b785 | 102 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 103 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 104 | FILE *fp = fopen("/sd/settings2.txt", "rb"); //read binary |
JDI_Mbed_Team | 0:33fe30a2b785 | 105 | if(fp != NULL) { |
JDI_Mbed_Team | 0:33fe30a2b785 | 106 | fscanf(fp, "%d",&width); //width read |
JDI_Mbed_Team | 0:33fe30a2b785 | 107 | fscanf(fp, "%d",&height); //height read |
JDI_Mbed_Team | 0:33fe30a2b785 | 108 | fscanf(fp, "%d",&blctrl_sel);//blct_sel read //0:40mA, 1:160mA |
JDI_Mbed_Team | 0:33fe30a2b785 | 109 | sprintf(filepath,"/sd/%dx%d",width,height); //DispAllDir("/sd/180x180") //file name write to filepath |
JDI_Mbed_Team | 0:33fe30a2b785 | 110 | fclose(fp); |
JDI_Mbed_Team | 0:33fe30a2b785 | 111 | } else { |
JDI_Mbed_Team | 0:33fe30a2b785 | 112 | FILE *fp = fopen("/sd/settings.txt", "rb"); //read binary |
JDI_Mbed_Team | 0:33fe30a2b785 | 113 | if(fp != NULL) { |
JDI_Mbed_Team | 0:33fe30a2b785 | 114 | fscanf(fp, "%d",&width); //width read |
JDI_Mbed_Team | 0:33fe30a2b785 | 115 | fscanf(fp, "%d",&height); //height read |
JDI_Mbed_Team | 0:33fe30a2b785 | 116 | sprintf(filepath,"/sd/%dx%d",width,height); //DispAllDir("/sd/180x180") //file name write to filepath |
JDI_Mbed_Team | 0:33fe30a2b785 | 117 | fclose(fp); |
JDI_Mbed_Team | 0:33fe30a2b785 | 118 | } else{ |
JDI_Mbed_Team | 0:33fe30a2b785 | 119 | width =180; |
JDI_Mbed_Team | 0:33fe30a2b785 | 120 | height=180; |
JDI_Mbed_Team | 0:33fe30a2b785 | 121 | sprintf(filepath,"/sd/180x180"); //DispAllDir("/sd/180x180") |
JDI_Mbed_Team | 0:33fe30a2b785 | 122 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 123 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 124 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 125 | COMSEL.write(1); // |
JDI_Mbed_Team | 0:33fe30a2b785 | 126 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 127 | BLCTRL.write(blctrl_sel); // |
JDI_Mbed_Team | 0:33fe30a2b785 | 128 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 129 | WD.setWH(width,height); //input -> width, height |
JDI_Mbed_Team | 0:33fe30a2b785 | 130 | WD.background(Black); //background = black |
JDI_Mbed_Team | 0:33fe30a2b785 | 131 | WD.clsBUF(); //data initialize |
JDI_Mbed_Team | 0:33fe30a2b785 | 132 | WD.writeDISP(); //picture write(black) |
JDI_Mbed_Team | 0:33fe30a2b785 | 133 | WD.SwDisp(1); //disp on |
JDI_Mbed_Team | 0:33fe30a2b785 | 134 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 135 | // OffSW.fall(&OffSequence); // Renamed "OffSW" as "PWMorOFF" for BK PWM setting |
JDI_Mbed_Team | 0:33fe30a2b785 | 136 | // SW settings for PWM or OFF |
JDI_Mbed_Team | 0:33fe30a2b785 | 137 | PWMorOFF.fall(&ifswPWM); // Backlight //sw2 fall edge |
JDI_Mbed_Team | 0:33fe30a2b785 | 138 | PWMorOFF.rise(&ifOFFseq); // OFF Sequence //sw2 rise edge |
JDI_Mbed_Team | 0:33fe30a2b785 | 139 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 140 | swPWMorOFF.Enable(8, 2, 1); //int ModeNum, int NoiseCancel, int OpenTime //???? |
JDI_Mbed_Team | 0:33fe30a2b785 | 141 | swPWMorOFF.IfCntClose(ON); |
JDI_Mbed_Team | 0:33fe30a2b785 | 142 | swPWMorOFF.IfCntState(ON); |
JDI_Mbed_Team | 0:33fe30a2b785 | 143 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 144 | COM60HZ.period_ms(8); //add 20161108 |
JDI_Mbed_Team | 5:069467469900 | 145 | COM60HZ.write(0.5); //add 20161108 |
JDI_Mbed_Team | 0:33fe30a2b785 | 146 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 147 | BK.period_ms(1); //1ms cycle 20161012 |
JDI_Mbed_Team | 7:c7a676157b4d | 148 | BK.write(1); //low output 20160725 <- high output |
JDI_Mbed_Team | 7:c7a676157b4d | 149 | |
JDI_Mbed_Team | 7:c7a676157b4d | 150 | //DIR *d; |
JDI_Mbed_Team | 0:33fe30a2b785 | 151 | |
JDI_Mbed_Team | 5:069467469900 | 152 | while(1) |
JDI_Mbed_Team | 1:e5796aa9f1aa | 153 | { //BITMAPS |
JDI_Mbed_Team | 0:33fe30a2b785 | 154 | filenum = CntFile(filepath); //file number read |
JDI_Mbed_Team | 7:c7a676157b4d | 155 | for(uint32_t i=0; i<filenum; i++) |
JDI_Mbed_Team | 5:069467469900 | 156 | { |
JDI_Mbed_Team | 7:c7a676157b4d | 157 | for( int j = 0; j < 2; j++) |
JDI_Mbed_Team | 6:2646a55a0233 | 158 | { |
JDI_Mbed_Team | 7:c7a676157b4d | 159 | ReadBmp(filepath,0); |
JDI_Mbed_Team | 7:c7a676157b4d | 160 | |
JDI_Mbed_Team | 5:069467469900 | 161 | while(HaltSW.State()) { // VCOM invert when image is still |
JDI_Mbed_Team | 5:069467469900 | 162 | // pol++; |
JDI_Mbed_Team | 5:069467469900 | 163 | // WD.command( (pol << 6) & 0x40 ); |
JDI_Mbed_Team | 5:069467469900 | 164 | // wait(bk_timer); //1Hz |
JDI_Mbed_Team | 5:069467469900 | 165 | } |
JDI_Mbed_Team | 5:069467469900 | 166 | HaltSW.Clear(); |
JDI_Mbed_Team | 7:c7a676157b4d | 167 | |
JDI_Mbed_Team | 5:069467469900 | 168 | //1bit trasfer mode = monochro diplay |
JDI_Mbed_Team | 7:c7a676157b4d | 169 | if( j%2 == 0 && bmp_bitcount != 8) |
JDI_Mbed_Team | 5:069467469900 | 170 | WD.writeDISP(TrBIT4); |
JDI_Mbed_Team | 5:069467469900 | 171 | else |
JDI_Mbed_Team | 7:c7a676157b4d | 172 | WD.writeDISP(TrBIT1); |
JDI_Mbed_Team | 7:c7a676157b4d | 173 | //wait(2); |
JDI_Mbed_Team | 7:c7a676157b4d | 174 | |
JDI_Mbed_Team | 7:c7a676157b4d | 175 | if( j%2 == 0 ) |
JDI_Mbed_Team | 7:c7a676157b4d | 176 | { |
JDI_Mbed_Team | 7:c7a676157b4d | 177 | // for color diaplay |
JDI_Mbed_Team | 7:c7a676157b4d | 178 | WD.foreground(0x04); |
JDI_Mbed_Team | 7:c7a676157b4d | 179 | WD.background(0x00); |
JDI_Mbed_Team | 7:c7a676157b4d | 180 | }else{ |
JDI_Mbed_Team | 7:c7a676157b4d | 181 | // for monochrome diaplay |
JDI_Mbed_Team | 7:c7a676157b4d | 182 | WD.foreground(0x0e); |
JDI_Mbed_Team | 7:c7a676157b4d | 183 | WD.background(0x00); |
JDI_Mbed_Team | 7:c7a676157b4d | 184 | } |
JDI_Mbed_Team | 7:c7a676157b4d | 185 | //WD.fillrect(0,115,399,205, WD.get_Background() ); |
JDI_Mbed_Team | 7:c7a676157b4d | 186 | |
JDI_Mbed_Team | 7:c7a676157b4d | 187 | sprintf(KMPH,"km/h"); |
JDI_Mbed_Team | 7:c7a676157b4d | 188 | WD.set_ActualFontWidth(); |
JDI_Mbed_Team | 7:c7a676157b4d | 189 | WD.set_font((unsigned char*) Arial28x28); |
JDI_Mbed_Team | 7:c7a676157b4d | 190 | WD.obliqueout(70+200+35,100+20+49,KMPH); |
JDI_Mbed_Team | 7:c7a676157b4d | 191 | |
JDI_Mbed_Team | 7:c7a676157b4d | 192 | WD.set_font((unsigned char*) Arial94x94); |
JDI_Mbed_Team | 7:c7a676157b4d | 193 | WD.set_FixedFontWidth(50); |
JDI_Mbed_Team | 7:c7a676157b4d | 194 | for(int t=0;t<100;t++) |
JDI_Mbed_Team | 7:c7a676157b4d | 195 | { |
JDI_Mbed_Team | 7:c7a676157b4d | 196 | sprintf(countup,"%2d",t); |
JDI_Mbed_Team | 7:c7a676157b4d | 197 | WD.obliqueout(70+35+48,100+20,countup); |
JDI_Mbed_Team | 7:c7a676157b4d | 198 | |
JDI_Mbed_Team | 7:c7a676157b4d | 199 | //1bit trasfer mode = monochro diplay |
JDI_Mbed_Team | 7:c7a676157b4d | 200 | if( j%2 == 0 /*&& bmp_bitcount != 8*/) |
JDI_Mbed_Team | 7:c7a676157b4d | 201 | // for color display |
JDI_Mbed_Team | 7:c7a676157b4d | 202 | WD.writeDISP(100+20,190+20,TrBIT4); |
JDI_Mbed_Team | 7:c7a676157b4d | 203 | else |
JDI_Mbed_Team | 7:c7a676157b4d | 204 | // for color diaplay |
JDI_Mbed_Team | 7:c7a676157b4d | 205 | WD.writeDISP(100+20,190+20,TrBIT1); |
JDI_Mbed_Team | 7:c7a676157b4d | 206 | |
JDI_Mbed_Team | 7:c7a676157b4d | 207 | if( j%2 == 0 && t==60) |
JDI_Mbed_Team | 7:c7a676157b4d | 208 | { |
JDI_Mbed_Team | 7:c7a676157b4d | 209 | // 60 < t => 80 yellow char |
JDI_Mbed_Team | 7:c7a676157b4d | 210 | WD.foreground(0x0C); |
JDI_Mbed_Team | 7:c7a676157b4d | 211 | }else |
JDI_Mbed_Team | 7:c7a676157b4d | 212 | if( j%2 == 0 && t==80) |
JDI_Mbed_Team | 7:c7a676157b4d | 213 | { |
JDI_Mbed_Team | 7:c7a676157b4d | 214 | // 80 < t => 99 rec char |
JDI_Mbed_Team | 7:c7a676157b4d | 215 | WD.foreground(0x08); |
JDI_Mbed_Team | 7:c7a676157b4d | 216 | } |
JDI_Mbed_Team | 7:c7a676157b4d | 217 | //wait(0.5); |
JDI_Mbed_Team | 7:c7a676157b4d | 218 | } |
JDI_Mbed_Team | 5:069467469900 | 219 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 220 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 221 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 222 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 223 | |
JDI_Mbed_Team | 7:c7a676157b4d | 224 | /** |
JDI_Mbed_Team | 7:c7a676157b4d | 225 | * @brief read a bitmap file in SD. 8color mode |
JDI_Mbed_Team | 7:c7a676157b4d | 226 | */ |
JDI_Mbed_Team | 0:33fe30a2b785 | 227 | void SD2BUF(char *filepath){ |
JDI_Mbed_Team | 7:c7a676157b4d | 228 | char R8[1],G8[1],B8[1] ,DUMMY[1],bc[2]; |
JDI_Mbed_Team | 0:33fe30a2b785 | 229 | int RGB; |
JDI_Mbed_Team | 0:33fe30a2b785 | 230 | FILE *fp ; |
JDI_Mbed_Team | 0:33fe30a2b785 | 231 | |
JDI_Mbed_Team | 7:c7a676157b4d | 232 | pc.printf("file=%s\n",filepath); |
JDI_Mbed_Team | 0:33fe30a2b785 | 233 | fp = fopen(filepath, "rb"); |
JDI_Mbed_Team | 0:33fe30a2b785 | 234 | if(fp != NULL) { |
JDI_Mbed_Team | 7:c7a676157b4d | 235 | //for(int i=0; i< 54 ; i++) fscanf(fp,"%c",DUMMY); // Discard Header 54bytes |
JDI_Mbed_Team | 7:c7a676157b4d | 236 | for(int i=0; i< 28 ; i++) fscanf(fp,"%c",DUMMY); // Discard Header 26bytes |
JDI_Mbed_Team | 7:c7a676157b4d | 237 | fscanf(fp,"%c",&(bc[0]));fscanf(fp,"%c",&(bc[1]));// color bit size 2bytes |
JDI_Mbed_Team | 7:c7a676157b4d | 238 | for(int i=0; i< 24 ; i++) fscanf(fp,"%c",DUMMY); // Discard Header 26bytes |
JDI_Mbed_Team | 7:c7a676157b4d | 239 | bmp_bitcount = bc[0]+bc[1]*256; |
JDI_Mbed_Team | 7:c7a676157b4d | 240 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 241 | for(int y=height-1; y>=0; y--) { |
JDI_Mbed_Team | 0:33fe30a2b785 | 242 | for(int x=0; x< width; x++) { //24bit color B 8bit -> G 8bit -> R 8bit |
JDI_Mbed_Team | 0:33fe30a2b785 | 243 | fscanf(fp, "%c",B8); |
JDI_Mbed_Team | 0:33fe30a2b785 | 244 | fscanf(fp, "%c",G8); |
JDI_Mbed_Team | 0:33fe30a2b785 | 245 | fscanf(fp, "%c",R8); |
JDI_Mbed_Team | 0:33fe30a2b785 | 246 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 247 | RGB = RGB8(*R8,*G8,*B8); //6bit(8bit) MIP MASK 0000 1110 |
JDI_Mbed_Team | 0:33fe30a2b785 | 248 | WD.pixel(x,y,RGB); |
JDI_Mbed_Team | 0:33fe30a2b785 | 249 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 250 | if( y!=0) // The last data column doesn't need padding |
JDI_Mbed_Team | 1:e5796aa9f1aa | 251 | for(int x=(width*3)%4; (x%4 !=0); x++) fscanf(fp, "%c",DUMMY); // 4byte boundery for every column(only windows bitmap format) |
JDI_Mbed_Team | 0:33fe30a2b785 | 252 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 253 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 254 | fclose(fp); |
JDI_Mbed_Team | 0:33fe30a2b785 | 255 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 256 | |
JDI_Mbed_Team | 7:c7a676157b4d | 257 | /** |
JDI_Mbed_Team | 7:c7a676157b4d | 258 | * @brief read a text file in SD. |
JDI_Mbed_Team | 7:c7a676157b4d | 259 | */ |
JDI_Mbed_Team | 0:33fe30a2b785 | 260 | void SDtex2BUF(char *filepath){ |
JDI_Mbed_Team | 0:33fe30a2b785 | 261 | int x,y,font,color; |
JDI_Mbed_Team | 0:33fe30a2b785 | 262 | char text[40]; |
JDI_Mbed_Team | 0:33fe30a2b785 | 263 | int ifEOF; |
JDI_Mbed_Team | 0:33fe30a2b785 | 264 | FILE *fp ; |
JDI_Mbed_Team | 0:33fe30a2b785 | 265 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 266 | fp = fopen(filepath, "r"); |
JDI_Mbed_Team | 0:33fe30a2b785 | 267 | if(fp != NULL) { |
JDI_Mbed_Team | 0:33fe30a2b785 | 268 | while(ifEOF != -1){ |
JDI_Mbed_Team | 0:33fe30a2b785 | 269 | ifEOF = fscanf(fp,"%d,%d,%d,%d,%[^,],",&x,&y,&font,&color,text); |
JDI_Mbed_Team | 0:33fe30a2b785 | 270 | WD.locate(x,y); |
JDI_Mbed_Team | 0:33fe30a2b785 | 271 | WD.foreground(color); |
JDI_Mbed_Team | 0:33fe30a2b785 | 272 | if (font ==1) WD.set_font((unsigned char*) Arial12x12); |
JDI_Mbed_Team | 0:33fe30a2b785 | 273 | else if (font ==2) WD.set_font((unsigned char*) Arial24x23); |
JDI_Mbed_Team | 0:33fe30a2b785 | 274 | else if (font ==3) WD.set_font((unsigned char*) Arial28x28); |
JDI_Mbed_Team | 0:33fe30a2b785 | 275 | else WD.set_font((unsigned char*) Neu42x35); |
JDI_Mbed_Team | 0:33fe30a2b785 | 276 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 277 | WD.printf("%s",text); |
JDI_Mbed_Team | 0:33fe30a2b785 | 278 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 279 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 280 | fclose(fp); |
JDI_Mbed_Team | 0:33fe30a2b785 | 281 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 282 | |
JDI_Mbed_Team | 7:c7a676157b4d | 283 | /* |
JDI_Mbed_Team | 0:33fe30a2b785 | 284 | void DispAllDir(const char *fsrc) |
JDI_Mbed_Team | 0:33fe30a2b785 | 285 | { |
JDI_Mbed_Team | 0:33fe30a2b785 | 286 | DIR *d = opendir(fsrc); |
JDI_Mbed_Team | 0:33fe30a2b785 | 287 | struct dirent *p; |
JDI_Mbed_Team | 0:33fe30a2b785 | 288 | char filepath[40]; |
JDI_Mbed_Team | 0:33fe30a2b785 | 289 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 290 | while ((p = readdir(d)) != NULL) { |
JDI_Mbed_Team | 0:33fe30a2b785 | 291 | sprintf(filepath, "%s/%s",fsrc,p->d_name); |
JDI_Mbed_Team | 0:33fe30a2b785 | 292 | SD2BUF(filepath); |
JDI_Mbed_Team | 0:33fe30a2b785 | 293 | WD.writeDISP(); |
JDI_Mbed_Team | 0:33fe30a2b785 | 294 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 295 | closedir(d); |
JDI_Mbed_Team | 0:33fe30a2b785 | 296 | } |
JDI_Mbed_Team | 7:c7a676157b4d | 297 | */ |
JDI_Mbed_Team | 0:33fe30a2b785 | 298 | |
JDI_Mbed_Team | 7:c7a676157b4d | 299 | /** |
JDI_Mbed_Team | 7:c7a676157b4d | 300 | * @brief read a bitmap file in SD by file number. |
JDI_Mbed_Team | 7:c7a676157b4d | 301 | */ |
JDI_Mbed_Team | 0:33fe30a2b785 | 302 | void ReadBmp(const char *fsrc, uint32_t FileNum) |
JDI_Mbed_Team | 0:33fe30a2b785 | 303 | { |
JDI_Mbed_Team | 0:33fe30a2b785 | 304 | DIR *d = opendir(fsrc); |
JDI_Mbed_Team | 0:33fe30a2b785 | 305 | struct dirent *p; |
JDI_Mbed_Team | 0:33fe30a2b785 | 306 | char filepath[40]; |
JDI_Mbed_Team | 0:33fe30a2b785 | 307 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 308 | for(uint32_t i=0; i< FileNum; i++) readdir(d); |
JDI_Mbed_Team | 0:33fe30a2b785 | 309 | if ((p = readdir(d)) != NULL) { |
JDI_Mbed_Team | 0:33fe30a2b785 | 310 | sprintf(filepath, "%s/%s",fsrc,p->d_name); |
JDI_Mbed_Team | 0:33fe30a2b785 | 311 | SD2BUF(filepath); |
JDI_Mbed_Team | 0:33fe30a2b785 | 312 | if(ifMargeTXT){ |
JDI_Mbed_Team | 0:33fe30a2b785 | 313 | sprintf(filepath, "%s_txt/%s.txt",fsrc,p->d_name); |
JDI_Mbed_Team | 0:33fe30a2b785 | 314 | SDtex2BUF(filepath); |
JDI_Mbed_Team | 0:33fe30a2b785 | 315 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 316 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 317 | closedir(d); |
JDI_Mbed_Team | 0:33fe30a2b785 | 318 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 319 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 320 | uint32_t CntFile(const char *fsrc) |
JDI_Mbed_Team | 0:33fe30a2b785 | 321 | { |
JDI_Mbed_Team | 0:33fe30a2b785 | 322 | DIR *d = opendir(fsrc); |
JDI_Mbed_Team | 0:33fe30a2b785 | 323 | uint32_t counter = 0; |
JDI_Mbed_Team | 0:33fe30a2b785 | 324 | while (readdir(d)!= NULL) counter++; |
JDI_Mbed_Team | 0:33fe30a2b785 | 325 | closedir(d); |
JDI_Mbed_Team | 0:33fe30a2b785 | 326 | return counter; |
JDI_Mbed_Team | 0:33fe30a2b785 | 327 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 328 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 329 | void OffSequence(void){ |
JDI_Mbed_Team | 0:33fe30a2b785 | 330 | BK.write(0); //add 20160712 17:00 |
JDI_Mbed_Team | 0:33fe30a2b785 | 331 | WD.background(Black); |
JDI_Mbed_Team | 0:33fe30a2b785 | 332 | WD.clsBUF(); |
JDI_Mbed_Team | 0:33fe30a2b785 | 333 | WD.SwDisp(0); |
JDI_Mbed_Team | 0:33fe30a2b785 | 334 | WD.writeDISP(); |
JDI_Mbed_Team | 0:33fe30a2b785 | 335 | WD.writeDISP(); |
JDI_Mbed_Team | 0:33fe30a2b785 | 336 | bloff = 1; |
JDI_Mbed_Team | 0:33fe30a2b785 | 337 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 338 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 339 | void ifswPWM(void){ |
JDI_Mbed_Team | 0:33fe30a2b785 | 340 | if(bloff == 0){ |
JDI_Mbed_Team | 0:33fe30a2b785 | 341 | if(blduty >= 10){ //0 |
JDI_Mbed_Team | 0:33fe30a2b785 | 342 | blduty = 0; //10 |
JDI_Mbed_Team | 0:33fe30a2b785 | 343 | COMSEL.write(1); // |
JDI_Mbed_Team | 0:33fe30a2b785 | 344 | }else{ |
JDI_Mbed_Team | 0:33fe30a2b785 | 345 | blduty += 1; //-= |
JDI_Mbed_Team | 0:33fe30a2b785 | 346 | COMSEL.write(1); // |
JDI_Mbed_Team | 0:33fe30a2b785 | 347 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 348 | }else{ |
JDI_Mbed_Team | 0:33fe30a2b785 | 349 | blduty = 0; |
JDI_Mbed_Team | 0:33fe30a2b785 | 350 | COMSEL.write(1); // |
JDI_Mbed_Team | 0:33fe30a2b785 | 351 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 352 | // BKduty = BKduty - 0.125; |
JDI_Mbed_Team | 0:33fe30a2b785 | 353 | // BKduty -= 0.125; |
JDI_Mbed_Team | 0:33fe30a2b785 | 354 | // if(BKduty <= 0) BKduty = 1; |
JDI_Mbed_Team | 0:33fe30a2b785 | 355 | // BK.write(BKduty); |
JDI_Mbed_Team | 0:33fe30a2b785 | 356 | BK.write(blduty*0.1); // |
JDI_Mbed_Team | 0:33fe30a2b785 | 357 | if(blduty == 0){ |
JDI_Mbed_Team | 0:33fe30a2b785 | 358 | bk_timer = 1.0; |
JDI_Mbed_Team | 0:33fe30a2b785 | 359 | }else{ |
JDI_Mbed_Team | 0:33fe30a2b785 | 360 | bk_timer = 0.008; //0.016 20160712 |
JDI_Mbed_Team | 0:33fe30a2b785 | 361 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 362 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 363 | |
JDI_Mbed_Team | 0:33fe30a2b785 | 364 | void ifOFFseq(void){ |
JDI_Mbed_Team | 0:33fe30a2b785 | 365 | if(swPWMorOFF.IfAtTime()){ |
JDI_Mbed_Team | 0:33fe30a2b785 | 366 | swPWMorOFF.IfCntClose(OFF); |
JDI_Mbed_Team | 0:33fe30a2b785 | 367 | swPWMorOFF.IfCntState(OFF); |
JDI_Mbed_Team | 0:33fe30a2b785 | 368 | OffSequence(); |
JDI_Mbed_Team | 0:33fe30a2b785 | 369 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 370 | } |
JDI_Mbed_Team | 0:33fe30a2b785 | 371 |