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
Diff: StateSw/StateSW.cpp
- Revision:
- 0:33fe30a2b785
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/StateSw/StateSW.cpp Tue Sep 04 06:44:01 2018 +0000 @@ -0,0 +1,96 @@ +#include "StateSW.h" +#include "mbed.h" + +StateSW::StateSW(PinName SWPin) : _SW(SWPin) {} + +void StateSW::Enable(int StateNum, int NoiseCancel, int OpenTime) { // _PRSCNT -- unit [times] ,_OPNCNT -- unit [s] + _STATENUM = StateNum; + _REPEAT = NoiseCancel; + _OPNCNT = OpenTime; + _preSW = 1; + _PressCount= 0; + _IfCntOpen = 0; + _IfCntClose= 0; + _IfCntState= 0; + _IfAtTime = 0; + + _StateCounter.attach(this, &StateSW::_SeekPress, 0.05); // Ticker[s] +} + +int StateSW::State(void){ + return _State; +} + +bool StateSW::IfAtTime(void){ + return _IfAtTime; +} + +void StateSW::IfCntState(bool IfCntState){ + _IfCntState = IfCntState; +} + +void StateSW::IfCntClose(bool IfCntClose){ + _IfCntClose = IfCntClose; + if(_IfCntClose == 0 ){ + _Timer_SW.stop(); + _Timer_SW.reset(); + } +} +void StateSW::IfCntOpen(bool IfCntOpen){ + _IfCntOpen = IfCntOpen; + if(_IfCntOpen == 0 ){ + _Timer_SW.stop(); + _Timer_SW.reset(); + } +} + +/* +void StateSW::Reset(void){ + +} +bool StateSW::IfOnetime(void){ + if(IfOnetime==1){ + IfOnetime = 0; + return 1; + } + else return 0; +} +*/ +void StateSW::_SeekPress(void) { // instead of InterruptIn -- for against noise + if(_preSW != _SW) _PressCount++; + else _PressCount=0; + if(_PressCount > _REPEAT ) { + if(_SW) StateSW::_rise(); + else StateSW::_fall(); + _preSW = _SW; + _PressCount = 0; + } + if(_Timer_SW.read() > _OPNCNT){ + _Timer_SW.stop(); + _Timer_SW.reset(); + _IfAtTime =1; + } +} + +void StateSW::_fall(void) { + if(_IfCntOpen == 1 ){ + _Timer_SW.stop(); + _Timer_SW.reset(); + } + if(_IfCntClose== 1 ) _Timer_SW.start(); +} + +void StateSW::_rise(void) { + if(_IfCntOpen == 1 ) _Timer_SW.start(); + if(_IfCntClose== 1 ){ + _Timer_SW.stop(); + _Timer_SW.reset(); + } + if(_IfCntState) { + _State++; + _State = _State%_STATENUM; +// IfOnetime=1; + } +} + +