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