Dobot magician with photo electric sensor problem


#1

Hello everyone
I have a qestion want to help, now I add two Photo electric sensor with the conveyor belt to control the start and the stop of the belt, but the program only run one time, the second time the first sensor can detect the object, but the bely not run,

please if who knows the problem, please conract me.

Thanks
here is my program
import DobotDllType as dType
from threading import Timer

CON_STR = {
dType.DobotConnect.DobotConnect_NoError: “DobotConnect_NoError”,
dType.DobotConnect.DobotConnect_NotFound: “DobotConnect_NotFound”,
dType.DobotConnect.DobotConnect_Occupied: “DobotConnect_Occupied”}

api = dType.load()
state = dType.ConnectDobot(api, “”, 115200)[0] # connect the Dobot
print(“connect status”, CON_STR[state])
dType.SetInfraredSensor(api, 1, 2, 1) #active the first sensor
dType.SetInfraredSensor(api, 1, 3, 1) #active the second sensor

def start_belt():
STEP_PER_CRICLE = 360.0 / 1.8 10.0 16.0
MM_PER_CRICLE = 3.1415926535898 36.0
vel = float(-50)
STEP_PER_CRICLE / MM_PER_CRICLE
dType.SetEMotor(api, 0, 1, int(vel), 1)

def stop_belt():
STEP_PER_CRICLE = 360.0 / 1.8 10.0 16.0
MM_PER_CRICLE = 3.1415926535898 36.0
vel = float(-50)
STEP_PER_CRICLE / MM_PER_CRICLE
dType.SetEMotor(api, 0, 0, int(vel), 1)

def make_robot_move():
global lastIndex
lastIndex = dType.SetPTPCmd(api, 4, 0, 0, 0, 0, 1)[0]
lastIndex = dType.SetPTPCmd(api, 4, -90, 0, 0, 0, 1)[0]
dType.SetWAITCmd(api, 1000, 1)
lastIndex = dType.SetPTPCmd(api, 4, -90, 0, 39, 0, 1)[0]
lastIndex = dType.SetPTPCmd(api, 4, -90, 49, 39, 0, 1)[0]
dType.SetWAITCmd(api, 1000, 1)
lastIndex = dType.SetEndEffectorSuctionCup(api, 1, 1, 1)[0]
dType.SetWAITCmd(api, 1000, 1)
lastIndex = dType.SetPTPCmd(api, 4, -90, 0, 39, 0, 1)[0]
lastIndex = dType.SetPTPCmd(api, 4, -90, 0, 0, 0, 1)[0]
lastIndex = dType.SetPTPCmd(api, 4, 90, 0, 0, 0, 1)[0]
dType.SetWAITCmd(api, 1000, 1)
lastIndex = dType.SetPTPCmd(api, 4, 90, 0, 53, 0, 1)[0]
dType.SetWAITCmd(api, 1000, 1)
lastIndex = dType.SetPTPCmd(api, 4, 90, 46, 53, 0, 1)[0]
dType.SetWAITCmd(api, 1000, 1)
lastIndex = dType.SetEndEffectorSuctionCup(api, 0, 1, 1)[0]
dType.SetWAITCmd(api, 1000, 1)
lastIndex = dType.SetPTPCmd(api, 4, 90, 0, 53, 0, 1)[0]
lastIndex = dType.SetPTPCmd(api, 4, 90, 0, 0, 0, 1)[0]
lastIndex = dType.SetPTPCmd(api, 4, 0, 0, 0, 0, 1)[0]

dType.SetQueuedCmdStartExec(api)
while lastIndex > dType.GetQueuedCmdCurrentIndex(api)[0]:
dType.dSleep(100)
dType.SetQueuedCmdStopExec(api)
if (state == dType.DobotConnect.DobotConnect_NoError):
dType.SetQueuedCmdClear(api) # clear queued command
dType.SetPTPJointParams(api, 100, 100, 100, 100, 100, 100, 100, 100, 1)
dType.SetPTPCommonParams(api, 100, 100, 1)
dType.SetHOMEParams(api, 200, 0, 0, 0, 1)
# set home parameter
# Async Home
dType.SetHOMECmd(api, temp=1, isQueued=1)

Timing1 = 0
Timing2 = 0
signal1 = 0
signal2 = 0
signalFilter1 = 0
signalFilter2 = 0

def Timing1to1():
global signal1
if(signalFilter1 == 1) :
signal1 = 1
def Timing2to1():
global signal2
if(signalFilter2 == 1) :
signal2 = 1
def Timing1to0():
global signal1
if(signalFilter1 == 0) :
signal1 = 0
def Timing2to0():
global signal2
if(signalFilter2 == 0) :
signal2 = 0

while True:
signalFilter1 = dType.GetInfraredSensor(api, 2)[0]
signalFilter2 = dType.GetInfraredSensor(api, 3)[0]

if(signalFilter1 == 1):
TimingFlag1 = Timer (0.5, Timing1to1)# delay
TimingFlag1.start()

if(signalFilter2 == 1):
TimingFlag2 = Timer (0.01, Timing2to1)
TimingFlag2.start()
if(signalFilter1 == 0):
TimingFlag3 = Timer (0.5, Timing1to0)# delay
TimingFlag3.start()

if(signalFilter2 == 0):
TimingFlag4 = Timer (0.01, Timing2to0)# delay
TimingFlag4.start()

print(signal1)
print(signal2)

if (signal1 == 1): # if the first sensor detect the object
start_belt_Time = Timer (2.0, start_belt)# delay two second start belt
start_belt_Time.start() # start belt
if (signal2 == 1): # if the second sensor detect object
stop_belt()# stop belt
make_robot_move()# make robot grasp the object

else: # first sensor no connect object
if (signal2 == 1): # the second detect
stop_belt()#stop belt
make_robot_move()# make robot grasp object
else:
print(“no object found”)

dType.DisconnectDobot(api)