Animation demo with MIP8F_SPI_Ver60

Dependencies:   mbed MIP8F_SPI_Ver60 MIP8f_FRDM_LineBuffer_sample MIP8f_FRDM_TransferMode_sample

Introduction

Animation Demo. Some Goldfish swin in water, from left to right, from bottom to top. Color and monochrome version

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/goldfish_400x240.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_animation_sample.k64f.bin

Committer:
JDI_Mbed_Team
Date:
Mon Nov 12 04:33:43 2018 +0000
Revision:
14:9d58f49f326f
Parent:
12:40156f03a763
Child:
16:7c472f8a81a5
Check refresh speed by transfermode 4bt,3bit,1bit with MIP8F_SPI_Ver50

Who changed what in which revision?

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