-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRadio_teclado.py
168 lines (145 loc) · 6.93 KB
/
Radio_teclado.py
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
import keyboard # using module keyboard
import time
import serial
SpeedE = 2000
SpeedD = 2000
Parar = False
Rodando = False
# No meu computador o rádio sempre aparece no com 4
ser = serial.Serial('COM4', 115200, timeout=0, parity=serial.PARITY_NONE)
print("tentando conectar serial")
if ser.isOpen():
print("isOpen")
ser.close()
print("fechou")
ser.open()
print("abriu a porta serial")
if ser.isOpen():
# Realiza a tentativa de envio de dados
try:
ser.flushInput()
ser.flushOutput()
ser.write(str.encode('F0000F0000'))
Rodando = True
# Em caso de exception, exibe o erro
except Exception as e:
print("ERRO: " + str(e))
try:
while Rodando:
dados = ser.write(str.encode('F0000F0000', encoding="ascii"))
time.sleep(0.033)
if Parar:
break
try: # used try so that if user pressed other than the given key error will not be shown
while keyboard.is_pressed('w'): # Robô anda para frente
Vel_D = str('{0:.0f}'.format(SpeedD))
Vel_E = str('{0:.0f}'.format(SpeedE))
ser.write(str.encode('F' + Vel_D.zfill(4) + 'F' + Vel_E.zfill(4), encoding="ascii"))
time.sleep(0.033)
while keyboard.is_pressed('s'): # Robô anda para trás
Vel_D = str('{0:.0f}'.format(SpeedD))
Vel_E = str('{0:.0f}'.format(SpeedE))
ser.write(str.encode('T' + Vel_D.zfill(4) + 'T' + Vel_E.zfill(4), encoding="ascii"))
time.sleep(0.033)
while keyboard.is_pressed('a'): # Robô gira ao redor do próprio eixo para a esqueda
Vel_D = str('{0:.0f}'.format(SpeedD * 0.8))
Vel_E = str('{0:.0f}'.format(SpeedE * 0.8))
ser.write(str.encode('T' + Vel_D.zfill(4) + 'F' + Vel_E.zfill(4), encoding="ascii"))
time.sleep(0.033)
while keyboard.is_pressed('d'): # Robô gira ao redor do próprio eixo para a direita
Vel_D = str('{0:.0f}'.format(SpeedD * 0.8))
Vel_E = str('{0:.0f}'.format(SpeedE * 0.8))
ser.write(str.encode('F' + Vel_D.zfill(4) + 'T' + Vel_E.zfill(4), encoding="ascii"))
time.sleep(0.033)
while keyboard.is_pressed('q'): # Robô curva para a esqueda
Vel_D = str('{0:.0f}'.format(SpeedD))
Vel_E = str('{0:.0f}'.format(SpeedE * 0.7))
ser.write(str.encode('F' + Vel_D.zfill(4) + 'F' + Vel_E.zfill(4), encoding="ascii"))
time.sleep(0.033)
while keyboard.is_pressed('e'): # Robô curva para a direita
Vel_D = str('{0:.0f}'.format(SpeedD * 0.7))
Vel_E = str('{0:.0f}'.format(SpeedE))
ser.write(str.encode('F' + Vel_D.zfill(4) + 'F' + Vel_E.zfill(4), encoding="ascii"))
time.sleep(0.033)
if keyboard.is_pressed('i'): # Aumenta a velocidade da roda esquerda
SpeedE += 100
SpeedD += 100
if SpeedE > 3200:
SpeedE = 3200
print('Velocidade máxima esquerda')
if SpeedD > 3200:
SpeedD = 3200
print('Velocidade máxima direita')
Vel_D = str('{0:.0f}'.format(SpeedD))
Vel_E = str('{0:.0f}'.format(SpeedE))
print('Velocidade esquerda: ' + Vel_E.zfill(4))
print('Velocidade direita: ' + Vel_D.zfill(4))
time.sleep(0.1)
if keyboard.is_pressed('k'): # Aumenta a velocidade da roda esquerda
SpeedE -= 100
SpeedD -= 100
if SpeedE < 0:
SpeedE = 0
print('Velocidade máxima esquerda')
if SpeedD < 0:
SpeedD = 0
print('Velocidade máxima direita')
Vel_D = str('{0:.0f}'.format(SpeedD))
Vel_E = str('{0:.0f}'.format(SpeedE))
print('Velocidade esquerda: ' + Vel_E.zfill(4))
print('Velocidade direita: ' + Vel_D.zfill(4))
time.sleep(0.1)
if keyboard.is_pressed('l'): # Aumenta a velocidade da roda direita
SpeedD += 100
if SpeedD > 3200:
SpeedD = 3200
print('Velocidade máxima')
Vel_D = str('{0:.0f}'.format(SpeedD))
print('Velocidade direita: ' + Vel_D.zfill(4))
time.sleep(0.1)
if keyboard.is_pressed('.'): # Aumenta a velocidade da roda direita
SpeedD -= 100
if SpeedD < 0:
SpeedD = 0
print('Velocidade mínima')
Vel_D = str('{0:.0f}'.format(SpeedD))
print('Velocidade direita: ' + Vel_D.zfill(4))
time.sleep(0.1)
if keyboard.is_pressed('j'): # Aumenta a velocidade da roda esquerda
SpeedE += 100
if SpeedE > 3200:
SpeedE = 3200
print('Velocidade máxima')
Vel_E = str('{0:.0f}'.format(SpeedE))
print('Velocidade esquerda: ' + Vel_E.zfill(4))
time.sleep(0.1)
if keyboard.is_pressed('n'): # Aumenta a velocidade da roda esquerda
SpeedE -= 100
if SpeedE < 0:
SpeedE = 0
print('Velocidade máxima')
Vel_E = str('{0:.0f}'.format(SpeedE))
print('Velocidade esquerda: ' + Vel_E.zfill(4))
time.sleep(0.1)
if keyboard.is_pressed('h'): # if key 'q' is pressed
print('w -> move o robô para a frente')
print('s -> move o robô para a trás')
print('a -> roda o robô para a esquerda')
print('d -> roda o robô para a direita')
print('q -> curva o robô para a esqueda')
print('e -> curva o robô para a direita')
print('i -> aumenta a velocidade do robô')
print('k -> diminui a velocidade do robô')
print('l -> aumenta a velocidade da roda direita')
print('. -> diminui a velocidade da roda direita')
print('j -> aumenta a velocidade da roda esquerda')
print('n -> aumenta a velocidade da roda esquerda')
print('p -> para o programa')
print('Nada -> o programa envia velocidade 0 para o robô')
time.sleep(0.5)
if keyboard.is_pressed('p'):
Parar = True
except 1:
print("Tecla não alocada. Aperte 'h' para ver a lista das teclas alocadas.")
except 2:
print("Eita")