def gripperLogic(flag):
flag = (flag + 1 ) % 4 /*here flag should increase*/
if flag == 1 and clenchAngle<minAngle:
while flag==1:
for i in range(clenchAngle,maxAngle+1):
servo.position(index=0,degrees=i)
flagcalc()
if(flag!=1):
break
if(flag!=1):
break
print("\nServo is gripping the object") #servowrite to be written here
elif flag == 2 and clenchAngle <= minAngle:
print("\nServo has gripped the object") #servowrite to be written here
elif flag == 3 and clenchAngle >= minAngle and clenchAngle < maxAngle:
while flag==3:
for i in range(clenchAngle,minAngle - 1 ,-1):
servo.position(index=0,degrees=i)
flagcalc()
if(flag!=3):
break
if(flag!=3):
break
print("\nServo is releasing the object") #servowrite to be written here
elif flag == 0 and clenchAngle <= maxAngle and clenchAngle > minAngle:
print("\nServo has now released the object") #servowrite to be written here
return flag
def flagcalc():
flag=0
grptmp = grip.value()
reltmp = release.value()
print("\n Gripper state " +str(grptmp) + "releaser state " + str(reltmp))
utime.sleep(0.1)
grpcmp = grip.value()
relcmp = release.value()
if grptmp != grpcmp or relcmp != reltmp:
flag = gripperLogic(flag)
def main():
while True:
flag=0
grptmp = grip.value()
reltmp = release.value()
print("\n Gripper state " +str(grptmp) + " releaser state " + str(reltmp) + " flag " + str(flag))
utime.sleep(0.1)
grpcmp = grip.value()
relcmp = release.value()
if grptmp != grpcmp or relcmp != reltmp:
flag = gripperLogic(flag)
if __name__ == "__main__":
main()
I tried comparing the values of button state in 0.1 sec gap. And when there is difference in value,flag should have increased but it's not happening. I also tried declaring flag as global but it still didn't work.Couldn't find any solutions anywhere