I am currently building a prosthetic hand using an Arduino MEGA, an Advancer Tech Myoware sensor, and 3 TB6612FNG Dual H-bridge breakouts. I have the EMG sensor sending an analog value to the Arduino and want to use that value to open or close the hand.
The problem I have is that the motors cannot turn more than 1 second without tightening too much and breaking the hand, so I want to place a limit on the while loop telling them to move that will restrict their movement under the specified conditions to one second. Also, when the analog voltage is no longer present, I need the motors to reverse their movement so the hand releases.
Here is the code I have where move(motor #, speed, direction)
is the function to move the hand (1 = forward, 2 = backward).
void loop(){
int EMGv = analogRead(EMG);
while(EMGv >= 900){
move(0, 255, 1); //motor 1, full speed, left
move(1, 255, 1); //motor 2, full speed, left
move(2, 255, 1); //motor 3, full speed, left
move(3, 255, 1); //motor 4, full speed, left
move(4, 255, 1); //motor 5, full speed, left
}
To reiterate. I need the motors to move while the EMG value is over 900, BUT not move more than 1 second, even if the value is 900 for 5 seconds. I then need the motors to move one second backwards when the value dips below 900.
Thanks!