-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNerudaBot.py
More file actions
104 lines (96 loc) · 3.88 KB
/
NerudaBot.py
File metadata and controls
104 lines (96 loc) · 3.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import Dependencies.DobotDllType as dType
import time
import coordenadas as coord
# Cargar la API del Dobot
api = dType.load()
CON_STR = {
dType.DobotConnect.DobotConnect_NoError: "Conectado con éxito",
dType.DobotConnect.DobotConnect_NotFound: "Dobot no encontrado",
dType.DobotConnect.DobotConnect_Occupied: "Puerto ocupado"
}
# Solicitar puerto de conexión
try:
puerto = input("Ingrese el numero de puerto COM al que está conectado el Dobot: ")
if not puerto.isdigit():
raise ValueError("El puerto debe ser un número.")
com_port = f"COM{puerto}"
baud_rate = 115200 # Configurable baud rate
except ValueError as e:
print(f"Error en la entrada: {e}")
exit(1)
# Conectar al Dobot
state = dType.ConnectDobot(api, com_port, baud_rate)[0]
print(CON_STR.get(state, "Error desconocido"))
# Verificar si la conexión fue exitosa
if state == dType.DobotConnect.DobotConnect_NoError:
# Resetear Dobot
dType.SetQueuedCmdClear(api)
dType.SetQueuedCmdStartExec(api)
# Inicializar parámetros del Dobot
dType.SetPTPJointParams(api, 200, 200, 200, 200, 200, 200, 200, 200, 1)
dType.SetPTPCoordinateParams(api, 200, 200, 200, 200, 1)
dType.SetPTPJumpParams(api, 10, 50, 1)
dType.SetPTPCommonParams(api, 50, 100, 1)
# Posición inicial
initial_sleep_time = 3
movement_sleep_time = 0.5
circle_sleep_time = 3
initialX = 200
initialY = -100
initialZ = 31
rHead = 0
letras = 0
cirPoint = (initialX, initialY + 10, initialZ, 0) # Punto medio
toPoint = (initialX - 10, initialY, initialZ, 0) # Punto final
# Setear la posición inicial
dType.SetHOMEParams(api, initialX, initialY, initialZ, 0, 1)
#dType.SetHOMECmd(api, 0, 1)
dType.SetPTPCmd(api, 0, initialX, initialY, initialZ, rHead, 1)
time.sleep(initial_sleep_time)
# Ciclo principal para recibir las letras y controlar el Dobot
try:
while True:
letra = input("Ingrese una letra para trazar o 'exit' para salir: ").lower()
if 'exit' in letra:
print("Saliendo del programa...")
dType.SetPTPCmd(api, 0, initialX, -100, initialZ + 20, rHead, 1)
break
if letra == ' ':
print("Trazando un espacio...")
initialY += 15
dType.SetPTPCmd(api, 0, initialX, initialY, initialZ, rHead, 1)
continue
if 'ent' in letra:
print("Ejecutando salto de línea...")
initialX += 40
initialY = -100
dType.SetPTPCmd(api, 0, initialX, initialY, initialZ, rHead, 1)
continue
if letra in coord.Abecedario:
print("Trazando la letra " + letra.upper() + "...")
for movimiento in coord.Abecedario[letra]:
if movimiento[0] == 0:
dType.SetPTPCmd(api, 0, initialX + movimiento[1][0], initialY + movimiento[1][1], initialZ, rHead, 1)
time.sleep(movement_sleep_time)
elif movimiento[0] == 1:
dType.SetPTPCmd(api, 2, initialX + movimiento[1][0], initialY + movimiento[1][1], initialZ, rHead, 1)
time.sleep(movement_sleep_time)
initialY += 15
if initialY >= 110:
initialX += 40
initialY = -100
print("Trazado completado.")
else:
print("Letra no reconocida. Intente nuevamente.")
except Exception as e:
print(f"Error: {e}")
finally:
# Detener el Dobot y desconectar
dType.SetPTPCmd(api, 0, initialX, 0, 30, rHead, 1)
dType.SetQueuedCmdForceStopExec(api)
dType.DisconnectDobot(api)
print("Dobot desconectado.")
else:
print("Error al conectar con el Dobot.")
dType.DisconnectDobot(api)
exit(1)