EMS Example

Recent Topics Forums Development EMS Example

Tagged: 

This topic contains 1 reply, has 2 voices, and was last updated by Profile photo of H2L H2L 3 years, 2 months ago.

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #310
    Profile photo of tak22
    tak22
    Participant

    Can you provide an example and/or more complete documentation of the Arduino EMS functions? I’ve mastered the sending of commands and receiving data from UH and would now like to start getting the fingers and wrist to move.

    initEMS()
    connectMUX()
    keepVoltage()
    updateEMS()
    updateEMS_HighVoltage()
    setEMS_LOW()
    setStimulationTime()
    setStimulationChannel()
    setStimulationVoltage()

    #312
    Profile photo of H2L
    H2L
    Keymaster

    @tak22

    Thank you for your question. When you wish to move the hands,
    wrist or fingers of the wearer, a few things need to be done with the code.

    – Initialize EMS
    – Configure EMS parameters (intensity and duration)
    – Pick the electrode you wish to deliver EMS with.
    – Update EMS

    The following sample shows how a single instance of EMS can be
    configured and then delivered upon the insertion of a serial command.

    You will need to. . .
    SET EMS PARAMETERS and PICK ELECTRODE TO DELIVER EMS.
    after that. . .
    compile the code, bring up the serial monitor and insert ‘d’
    to activate the stimulation.

    
    #include <UH.h>
    UH uh;  // create an UH object
    
    int inByte = 0;
    int voltage;
    int channel;
    
    void setup(){
      // initialize serial communication:
      Serial.begin(115200);
      
      // initialize EMS
      uh.initEMS(); 
    
      // SET EMS PARAMETERS
      voltage = 8;               // min: 0  max: 12
      uh.stimuTimeCount = 650;   // min: 0  max: 650
    
      // PICK ELECTRODE TO DELIVER EMS
      channel = 0; 
        // channel 0: Contracts Hand
        // channel 1: Pulls in Fingers (Index/Middle/Ring)
        // channel 2: Pulls in Fingers (Middle/Ring/Pinky)
        // channel 3: Pulls in Fingers (Ring/Pinky)
        // channel 4: Releases Hand
        // channel 5: extends Index Finger
        // channel 6: Tingle on forearm
        // channel 7: Pulls in Fingers (Index/Middle)
    
    }
    
    void loop(){  
      // update EMS  
      uh.updateEMS();
    }
    
    void serialEvent() {
      if(Serial.available()>0){
        inByte = Serial.read();
        if (inByte == 100 || inByte == 68){ // when 'd' is inputted. . .
    
          // countdown
             Serial.print("3...");
             delay (1000);
             Serial.print("2...");
             delay (1000);
             Serial.print("1...");
             delay (1000);
    
          // deliver stimulation
             uh.setStimulationChannel(channel);
             uh.setStimulationTime();
             uh.setStimulationVoltage(voltage);
             for(int i=0;i<50;i++){uh.keepVoltage(voltage);} 
             Serial.print("\nstimulate!\n\n");
        }
      }
    }
    
    • This reply was modified 3 years, 2 months ago by Profile photo of H2L H2L.
Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.