Interference current stimulation program with kaji-lab ES device.

Dependencies:   mbed SerialInputReactionHandler AMPulseTrain SwArr16MOSFET StrCommandHandler KajiLabES

main.cpp

Committer:
aktk
Date:
2019-10-23
Revision:
1:b97639dad576
Parent:
0:19a67422961f
Child:
2:5cb68cc8ecaa

File content as of revision 1:b97639dad576:

#include "mbed.h"
#include "KajiLabES.h"
#include "PMRC16ch.h"
#include "sigbind.h"
#include <iostream>
#include <bitset>
ProcessState   pstate = WAIT_A_CERTAIN_KEY;
ElectrodeSpacing spacing = WIDE_CONDITION;
StimulationMode smode = BIPOLAR;
Serial pc(USBTX, USBRX); // tx, rx

DigitalOut  myled1(LED1);
DigitalOut  myled2(LED2);
DigitalOut  myled3(LED3);
DigitalOut  myled4(LED4);
KajiLabES   stimulator;
PMRC16ch    pmrc(16);
uint32_t pw;//pulse width
uint32_t pp;//pulse period
uint32_t ph;//pulse hight

int main()
{
    stimulator.init();
    myled1 = 1;
    pmrc.allHiZ();
    myled2 = 1;
    {
        using namespace aktk_sigbind;
        pc.baud(921600);
        pc.attach(&keyBind);
        pw = 100;
        pp = 5000;
        ph = 0;
        printKBManual();
        wait(.5);
    }
    while(1) {
        while (pstate == WAIT_A_CERTAIN_KEY) {
            myled3  = (!myled3);
            wait(0.5);
        }
        myled3 = 1;
        pmrc.setPol(PMRC16ch::Cathodic);
        while (pstate == MAIN_ROUTINE) {
            
            for (int i = 0; i < 2; i++) {
                switch(smode){
                    case BIPOLAR:   pmrc.setPol((PMRC16ch::Polarity)i); break;
                    case CATHODIC:  pmrc.setPol(PMRC16ch::Cathodic);    break;
                    case ANODIC:    pmrc.setPol(PMRC16ch::Anodic);      break;
                }
                if(spacing == WIDE_CONDITION)
                    //pmrc.setTrio(3,1,5);
                    pmrc.setTwin(1, 2);
                else
                    //pmrc.setTrio(3,2,4);
                    pmrc.setTwin(1, 3);
                wait_us(pp-pw);
                stimulator.DAAD(ph);
                wait_us(pw);
                stimulator.DAAD(0);
            }
            /*
            for(int i = 0; i < 2; i++) {
                pmrc.setTwin(i+1, (i+1)%8+1);
                //pmrc.setTwin(i+1, (i+1)%8+1);
                //pmrc.setTwin(i+1, (i+1)%8+1);
                //pmrc.setOvsO(i+1);
                wait_us(pp-pw);
                stimulator.DAAD(ph);
                wait_us(pw);
                stimulator.DAAD(0);
                //pmrc.allHiZ();
                //wait_us(pw);
            }
             */
            if (pstate == TERMINATED) break;
        }
    }
}