1
|
import tkinter as tk
|
2
|
|
3
|
|
4
|
VELOCIDAD_LENTA = 100
|
5
|
VELOCIDAD_NORMAL = 250
|
6
|
VELOCIDAD_RAPIDA = 400
|
7
|
|
8
|
|
9
|
def seleccionar_boton(boton):
|
10
|
boton.config(bg="gray")
|
11
|
|
12
|
|
13
|
def deseleccionar_boton(boton):
|
14
|
boton.config(bg="white")
|
15
|
|
16
|
|
17
|
boton_velocidad_actual = None
|
18
|
velocidad_actual = VELOCIDAD_NORMAL
|
19
|
|
20
|
|
21
|
def cambiar_velocidad(velocidad, boton):
|
22
|
global boton_velocidad_actual, velocidad_actual
|
23
|
|
24
|
if boton_velocidad_actual:
|
25
|
deseleccionar_boton(boton_velocidad_actual)
|
26
|
|
27
|
seleccionar_boton(boton)
|
28
|
boton_velocidad_actual = boton
|
29
|
velocidad_actual = velocidad
|
30
|
print(f"Velocidad seleccionada: {velocidad}")
|
31
|
|
32
|
|
33
|
def mover_adelante(event=None):
|
34
|
print(f"Mover adelante a velocidad {velocidad_actual}")
|
35
|
presionar_boton(boton_adelante)
|
36
|
|
37
|
def mover_atras(event=None):
|
38
|
print(f"Mover atrás a velocidad {velocidad_actual}")
|
39
|
presionar_boton(boton_atras)
|
40
|
|
41
|
def girar_izquierda(event=None):
|
42
|
print(f"Girar izquierda a velocidad {velocidad_actual}")
|
43
|
presionar_boton(boton_izquierda)
|
44
|
|
45
|
def girar_derecha(event=None):
|
46
|
print(f"Girar derecha a velocidad {velocidad_actual}")
|
47
|
presionar_boton(boton_derecha)
|
48
|
|
49
|
|
50
|
def accion_agarre(event=None):
|
51
|
print("Acción de agarre")
|
52
|
presionar_boton(boton_agarre)
|
53
|
|
54
|
def accion_soltar(event=None):
|
55
|
print("Acción de soltar")
|
56
|
presionar_boton(boton_soltar)
|
57
|
|
58
|
|
59
|
def presionar_boton(boton):
|
60
|
boton.config(bg="gray")
|
61
|
|
62
|
def soltar_boton(boton):
|
63
|
boton.config(bg="white")
|
64
|
|
65
|
|
66
|
def detener_adelante(event=None):
|
67
|
soltar_boton(boton_adelante)
|
68
|
|
69
|
def detener_atras(event=None):
|
70
|
soltar_boton(boton_atras)
|
71
|
|
72
|
def detener_izquierda(event=None):
|
73
|
soltar_boton(boton_izquierda)
|
74
|
|
75
|
def detener_derecha(event=None):
|
76
|
soltar_boton(boton_derecha)
|
77
|
|
78
|
def detener_agarre(event=None):
|
79
|
soltar_boton(boton_agarre)
|
80
|
|
81
|
def detener_soltar(event=None):
|
82
|
soltar_boton(boton_soltar)
|
83
|
|
84
|
|
85
|
def cambiar_velocidad_lenta(event=None):
|
86
|
cambiar_velocidad(VELOCIDAD_LENTA, boton_velocidad_lenta)
|
87
|
|
88
|
def cambiar_velocidad_normal(event=None):
|
89
|
cambiar_velocidad(VELOCIDAD_NORMAL, boton_velocidad_normal)
|
90
|
|
91
|
def cambiar_velocidad_rapida(event=None):
|
92
|
cambiar_velocidad(VELOCIDAD_RAPIDA, boton_velocidad_rapida)
|
93
|
|
94
|
|
95
|
"""VENTANA PRINCIPAL"""
|
96
|
|
97
|
ventana = tk.Tk()
|
98
|
ventana.title("Control del Robot EV3")
|
99
|
ventana.config(bg="gray10")
|
100
|
ventana.geometry("1025x750")
|
101
|
|
102
|
|
103
|
boton_conectar = tk.Button(ventana, text="Conectar", width=12, height=2, bg="SpringGreen2", relief="solid", bd=5, font=("Arial", 15, "bold"))
|
104
|
boton_desconectar = tk.Button(ventana, text="Desconectar", width=12, height=2, bg="brown2", relief="solid", bd=5, font=("Arial", 15, "bold"))
|
105
|
boton_manual = tk.Button(ventana, text="Manual", width=12, height=2, bg="lemon chiffon", relief="solid", bd=5, font=("Arial", 15, "bold"))
|
106
|
|
107
|
|
108
|
boton_adelante = tk.Button(ventana, text="△", width=6, height=2, bg="white", bd=5, font=("Arial", 30))
|
109
|
boton_atras = tk.Button(ventana, text="▽", width=6, height=2, bg="white", bd=5, font=("Arial", 30))
|
110
|
boton_izquierda = tk.Button(ventana, text="◁", width=6, height=2, bg="white", bd=5, font=("Helvetica", 30, "bold"))
|
111
|
boton_derecha = tk.Button(ventana, text="▷", width=6, height=2, bg="white", bd=5, font=("Helvetica", 30, "bold"))
|
112
|
boton_agarre = tk.Button(ventana, text="X", width=6, height=2, bg="white", bd=5, font=("Helvetica", 30))
|
113
|
boton_soltar = tk.Button(ventana, text="O", width=6, height=2, bg="white", bd=5, font=("Helvetica", 30))
|
114
|
|
115
|
|
116
|
boton_velocidad_rapida = tk.Button(ventana, text="Rápido(3)", width=7, height=2, bg="white", relief="groove", bd=5, font=("Arial", 25, "bold"))
|
117
|
boton_velocidad_normal = tk.Button(ventana, text="Normal(2)", width=7, height=2, bg="white", relief="groove", bd=5, font=("Arial", 25, "bold"))
|
118
|
boton_velocidad_lenta = tk.Button(ventana, text="Lento(1)", width=7, height=2, bg="white", relief="groove", bd=5, font=("Arial", 25, "bold"))
|
119
|
|
120
|
|
121
|
etiqueta_velocidades = tk.Label(ventana, text="Velocidades", font=("Arial", 18))
|
122
|
etiqueta_ip = tk.Label(ventana, text="ip: ", font=("Arial", 18), bg="snow")
|
123
|
etiqueta_estado = tk.Label(ventana, text="Estado: ", font=("Arial", 18), bg="snow")
|
124
|
separador2 = tk.Label(ventana, text="", font=("", 12), bg="gray10")
|
125
|
|
126
|
"""POSICIONES"""
|
127
|
|
128
|
|
129
|
boton_conectar.grid(row=0, column=0, padx=10, pady=10)
|
130
|
boton_desconectar.grid(row=0, column=1, padx=10, pady=10)
|
131
|
boton_manual.grid(row=0, column=5, padx=10, pady=10)
|
132
|
etiqueta_estado.grid(row=0, column=2, padx=10, pady=10)
|
133
|
|
134
|
|
135
|
etiqueta_ip.grid(row=1, column=0, padx=0, pady=10)
|
136
|
boton_adelante.grid(row=2, column=1, padx=10, pady=10)
|
137
|
boton_atras.grid(row=4, column=1, padx=10, pady=10)
|
138
|
boton_izquierda.grid(row=3, column=0, padx=10, pady=10)
|
139
|
boton_derecha.grid(row=3, column=2, padx=10, pady=10)
|
140
|
boton_agarre.grid(row=2, column=0, padx=10, pady=10)
|
141
|
boton_soltar.grid(row=2, column=2, padx=10, pady=10)
|
142
|
|
143
|
|
144
|
etiqueta_velocidades.grid(row=1, column=5, padx=10, pady=10)
|
145
|
separador2.grid(row=3, column=4, padx=150, pady=10)
|
146
|
boton_velocidad_rapida.grid(row=2, column=5, padx=10, pady=10)
|
147
|
boton_velocidad_normal.grid(row=3, column=5, padx=10, pady=10)
|
148
|
boton_velocidad_lenta.grid(row=4, column=5, padx=10, pady=10)
|
149
|
|
150
|
"""ASIGNACIONES"""
|
151
|
|
152
|
|
153
|
ventana.bind('1', cambiar_velocidad_lenta)
|
154
|
ventana.bind('2', cambiar_velocidad_normal)
|
155
|
ventana.bind('3', cambiar_velocidad_rapida)
|
156
|
|
157
|
|
158
|
ventana.bind('<w>', mover_adelante)
|
159
|
ventana.bind('<KeyRelease-w>', detener_adelante)
|
160
|
ventana.bind('<s>', mover_atras)
|
161
|
ventana.bind('<KeyRelease-s>', detener_atras)
|
162
|
ventana.bind('<a>', girar_izquierda)
|
163
|
ventana.bind('<KeyRelease-a>', detener_izquierda)
|
164
|
ventana.bind('<d>', girar_derecha)
|
165
|
ventana.bind('<KeyRelease-d>', detener_derecha)
|
166
|
|
167
|
|
168
|
ventana.bind('<e>', accion_agarre)
|
169
|
ventana.bind('<KeyRelease-e>', detener_agarre)
|
170
|
ventana.bind('<q>', accion_soltar)
|
171
|
ventana.bind('<KeyRelease-q>', detener_soltar)
|
172
|
|
173
|
|
174
|
ventana.mainloop()
|
175
|
|