Código Utilizado » History » Version 5
Version 4 (Melisa Laura, 12/21/2023 04:13 PM) → Version 5/10 (Melisa Laura, 12/21/2023 04:16 PM)
h2. *Índice*:
* [[Introducción]]
* [[Organización y Planificación]]
* [[Progreso del Robot]]
* [[Análisis - Diseño]]
* [[Código Utilizado]]
* [[Resultados]]
h1. Código Utilizado
*+Servidor+*
<pre>
import socket
from robot import robot
server = socket.socket()
PORT = 8800
server.bind(('', PORT))
server.listen(1)
connection, adress = server.accept()
robot = Robot()[[]]
actions = {
"w" : robot.move_front,
"a" : robot.move_left,
"d" : robot.move_right,
"s" : robot.move_back,
"e" : robot.move_punch,
}
while True:
data = connection.recv(1)
keyword = data.decode("utf-8")
if keyword in actions:
actions[keyword]()
elif keyword == "q":
break
</pre>
*+Funciones del Robot+*
<pre>
from ev3dev2.motor import (LargeMotor, MoveTank, MediumMotor, OUTPUT_A, OUTPUT_B, OUTPUT_C, OUTPUT_D)
from time import sleep
class Robot:
eje = 0
base = -0.58
MAX_VALUE_EJE = 140
MIN_VALUE_EJE = -140
MAX_VALUE_BASE = 0
MIN_VALUE_BASE = -0.58
SPEED = 100
contaux1 = 0
contaux2 = 0
cont = 1
def __init__(self):
self.out_a = LargeMotor(OUTPUT_A) # movimiento pelota
self.out_b = LargeMotor(OUTPUT_B) # ruedas de atras, movimiento
self.out_c = MediumMotor(OUTPUT_C) # ruedas de rotacion, giro izquierda/derecha
self.out_d = MediumMotor(OUTPUT_D) # lanzamiento de pelota
# Función para desactivar completamente el robot
def off_robot(self):
self.out_a.stop()
self.out_b.stop()
self.out_c.stop()
self.out_d.stop()
# Función para mover el robot hacia adelante
def move_front(self):
self.out_b.on_for_rotations(speed = 100, rotations= -2, brake = True, block = True)
self.out_b.stop()
# Función para mover el robot hacia atras
def move_back(self):
self.out_b.on_for_rotations(speed = 100, rotations= 2, brake = True, block = True)
self.out_b.stop()
# Función para mover las ruedas del robot hacia la derecha
def move_right(self):
if(self.MIN_VALUE_EJE < self.eje): # Se comprueba el eje de las ruedas para no provocar una falla en el robot / para que no se queden pegadas
self.out_c.on_for_degrees(speed = 100, degrees = -1.4, brake = True, block = True)
self.eje-=1.4
self.contaux1-=1
print(self.eje)
self.out_c.stop()
# Función para mover las ruedas del robot hacia la izquierda
def move_left(self):
if(self.MAX_VALUE_EJE > self.eje): # Se comprueba el eje de las ruedas para no provocar una falla en el robot / para que no se queden pegadas
self.out_c.on_for_degrees(speed = 100, degrees = 1.4, brake = True, block = True)
self.eje+=1.4
self.contaux2+=1
print(self.eje)
self.out_c.stop()
# Función para ingresar los grados para hacer el golpe
def move_punch(self, vel, grad):
self.vel = vel
self.grad = grad
self.out_d.on_for_degrees(speed = 100, degrees=grad)
self.out_d.stop()
# Función para mover la base de la pelota, hacia adelante
def mov_adel(self):
if(self.MAX_VALUE_BASE>self.base): # Se comprueba la base de la pelota para que no falle el robot / en este caso para que no se golpee hacia atras
self.out_a.on_for_rotations(speed = 100, rotations=-0.0116, brake = True, block = True)
self.base += 0.0116
self.out_a.stop()
# Función para mover la base de la pelota, hacia atras
def mov_atras(self):
if(self.MIN_VALUE_BASE<self.base): # Se comprueba la base de la pelota para que no falle el robot / en este caso es para que no se pase hacia adelante
self.out_a.on_for_rotations(speed = 100, rotations=0.0116, brake = True, block = True)
self.base -= 0.0116
self.out_a.stop()
def off(self):
if(self.base>-0.58): # Se comprueba si esta en la posicion original la base de la pelota
while(True):
if(50 == self.cont):
return False # Se rompe el ciclo solo si la base tiene 4, donde estara en posicion original
else:
self.out_a.on_for_rotations(speed = 100, rotations = 0.0116, brake = True, block = True)
self.base+=0.0116
self.cont = self.cont + 1
print(self.cont)
self.out_a.stop()
</pre>
h1. *Interfaz Gráfica*
<pre>
</pre>
* [[Introducción]]
* [[Organización y Planificación]]
* [[Progreso del Robot]]
* [[Análisis - Diseño]]
* [[Código Utilizado]]
* [[Resultados]]
h1. Código Utilizado
*+Servidor+*
<pre>
import socket
from robot import robot
server = socket.socket()
PORT = 8800
server.bind(('', PORT))
server.listen(1)
connection, adress = server.accept()
robot = Robot()[[]]
actions = {
"w" : robot.move_front,
"a" : robot.move_left,
"d" : robot.move_right,
"s" : robot.move_back,
"e" : robot.move_punch,
}
while True:
data = connection.recv(1)
keyword = data.decode("utf-8")
if keyword in actions:
actions[keyword]()
elif keyword == "q":
break
</pre>
*+Funciones del Robot+*
<pre>
from ev3dev2.motor import (LargeMotor, MoveTank, MediumMotor, OUTPUT_A, OUTPUT_B, OUTPUT_C, OUTPUT_D)
from time import sleep
class Robot:
eje = 0
base = -0.58
MAX_VALUE_EJE = 140
MIN_VALUE_EJE = -140
MAX_VALUE_BASE = 0
MIN_VALUE_BASE = -0.58
SPEED = 100
contaux1 = 0
contaux2 = 0
cont = 1
def __init__(self):
self.out_a = LargeMotor(OUTPUT_A) # movimiento pelota
self.out_b = LargeMotor(OUTPUT_B) # ruedas de atras, movimiento
self.out_c = MediumMotor(OUTPUT_C) # ruedas de rotacion, giro izquierda/derecha
self.out_d = MediumMotor(OUTPUT_D) # lanzamiento de pelota
# Función para desactivar completamente el robot
def off_robot(self):
self.out_a.stop()
self.out_b.stop()
self.out_c.stop()
self.out_d.stop()
# Función para mover el robot hacia adelante
def move_front(self):
self.out_b.on_for_rotations(speed = 100, rotations= -2, brake = True, block = True)
self.out_b.stop()
# Función para mover el robot hacia atras
def move_back(self):
self.out_b.on_for_rotations(speed = 100, rotations= 2, brake = True, block = True)
self.out_b.stop()
# Función para mover las ruedas del robot hacia la derecha
def move_right(self):
if(self.MIN_VALUE_EJE < self.eje): # Se comprueba el eje de las ruedas para no provocar una falla en el robot / para que no se queden pegadas
self.out_c.on_for_degrees(speed = 100, degrees = -1.4, brake = True, block = True)
self.eje-=1.4
self.contaux1-=1
print(self.eje)
self.out_c.stop()
# Función para mover las ruedas del robot hacia la izquierda
def move_left(self):
if(self.MAX_VALUE_EJE > self.eje): # Se comprueba el eje de las ruedas para no provocar una falla en el robot / para que no se queden pegadas
self.out_c.on_for_degrees(speed = 100, degrees = 1.4, brake = True, block = True)
self.eje+=1.4
self.contaux2+=1
print(self.eje)
self.out_c.stop()
# Función para ingresar los grados para hacer el golpe
def move_punch(self, vel, grad):
self.vel = vel
self.grad = grad
self.out_d.on_for_degrees(speed = 100, degrees=grad)
self.out_d.stop()
# Función para mover la base de la pelota, hacia adelante
def mov_adel(self):
if(self.MAX_VALUE_BASE>self.base): # Se comprueba la base de la pelota para que no falle el robot / en este caso para que no se golpee hacia atras
self.out_a.on_for_rotations(speed = 100, rotations=-0.0116, brake = True, block = True)
self.base += 0.0116
self.out_a.stop()
# Función para mover la base de la pelota, hacia atras
def mov_atras(self):
if(self.MIN_VALUE_BASE<self.base): # Se comprueba la base de la pelota para que no falle el robot / en este caso es para que no se pase hacia adelante
self.out_a.on_for_rotations(speed = 100, rotations=0.0116, brake = True, block = True)
self.base -= 0.0116
self.out_a.stop()
def off(self):
if(self.base>-0.58): # Se comprueba si esta en la posicion original la base de la pelota
while(True):
if(50 == self.cont):
return False # Se rompe el ciclo solo si la base tiene 4, donde estara en posicion original
else:
self.out_a.on_for_rotations(speed = 100, rotations = 0.0116, brake = True, block = True)
self.base+=0.0116
self.cont = self.cont + 1
print(self.cont)
self.out_a.stop()
</pre>
h1. *Interfaz Gráfica*
<pre>
</pre>