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

0

There are 0 best solutions below