Project

General

Profile

Código Utilizado » History » Version 5

« Previous - Version 5/10 (diff) - Next » - Current version
Melisa Laura, 12/21/2023 04:16 PM


Índice:

Código Utilizado

Servidor
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

Funciones del Robot

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()

Interfaz Gráfica