Project

General

Profile

Código Utilizado » History » Version 3

Version 2 (Melisa Laura, 12/15/2023 10:50 PM) → Version 3/10 (Melisa Laura, 12/20/2023 08:37 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

h1. *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>

h1. *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>