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

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;
+    }     
+}
+
+