Project

General

Profile

Código e Implementación » History » Version 19

« Previous - Version 19/41 (diff) - Next » - Current version
Cesar Jimenez, 10/13/2023 10:10 AM


ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤWikipedia


Grupo A:

Integrantes: Cristian Sánchez, Jean Pier Duran, Sergio Rabanal, Valentina Álvarez, César Jiménez
Nombre del Producto: Machine EV3 G
Modulo: Proyecto I
Docente: Humberto Urrutia
Fecha de Inicio: 2023-08-14
Fecha de Termino: 2023-11-30


ㅤㅤㅤㅤㅤㅤㅤÍndice:

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤIntefaz Gráfica


import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkinter import messagebox
import socket
# from ev3dev2.motor import MediumMotor, LargeMotor, OUTPUT_A, OUTPUT_B, OUTPUT_D, MoveTank

def Shot():
    shot = 'SHOT'
    server.send(shot.encode('utf-8'))

def Movement():
    movement = 'MOVEMENT'
    server.send(movement.encode('utf-8'))

def Up():
    up = 'UP'
    server.send(up.encode('utf-8'))

def Down():
    down = 'DOWN'
    server.send(down.encode('utf-8'))

def Left():
    left = 'LEFT'
    server.send(left.encode('utf-8'))

def Right():
    right = 'RIGHT'
    server.send(right.encode('utf-8'))

def Power():
    #INSERTAR CAMBIOS / AJUSTES PROGRAMA PRINCIPAL
    print()

def Angle():
    #INSERTAR CAMBIOS / AJUSTE DE ANGULO ?
    print()

def conectar():
    global server
    server = socket.socket()
    puerto = 4999
    direccion = "192.168.47.61" 
    try: 
        server.connect((direccion,puerto))
        messagebox.showinfo("Conectado","Se ha establecido la conexion exitosamente")
    except socket.error:
        messagebox.showwarning("Desconectado","Ingrese la dirección correcta")
    server.close()

ventana = tk.Tk()
ventana.geometry("500x400") 
ventana.title("Machine EV3")
ventana.configure(bg="cadetblue")  
ventana.resizable(0,0)
#Variables

# Boton Arriba
boton_arriba = Button(text="UP", command=Up, background="lightblue").place(x=200, y=70, width=120, height=90)  

# Boton Abajo
boton_abajo = Button(text="DOWN", command=Down, background="lightblue").place(x=200, y=270, width=120, height=90)

# Boton Izquierda
boton_izq = Button(text="LEFT", command=Left, background="lightblue").place(x=50, y=170, width=120, height=90)

# Boton Derecha
boton_derech = Button(text="RIGHT", command=Right, background="lightblue").place(x=340, y=170, width=120, height=90)

# Boton Disparar
boton_disparar = Button(text="Shot", command=Shot, background="lightblue").place(x=385, y=345, width=100, height=50)

# Boton Power de 15%
boton_p15 = Button(text="Power 10%", command=Power, background="lightblue").place(x=10, y=20, width=110, height=30)

# Boton Power de 25%
boton_p25 = Button(text="Power 30%", command=Power, background="lightblue").place(x=135, y=20, width=110, height=30)

# Boton potenca de 40%(max)
boton_p40 = Button(text="Power 50%", command=Power, background="lightblue").place(x=260, y=20, width=110, height=30)

# Boton Power por tiempo
boton_pseg= Button(text="Power for second.",command=Power, background="lightblue").place(x=385, y=20, width=110, height=30)

# Boton ingreso ip

boton_conectar = Button(text="Conection at Robot",command= conectar,background="lightblue").place(x=10, y=365, width=130, height=30)

ventana.mainloop()

Servidor


import socket
from Funciones import *

# Crear un socket del servidor
server = socket.socket()
#192.168.107.147 ip robot
# Vincular el socket a una dirección IP y un puerto
# ES LA IP DEL ROBOT
server_address = ("192.168.47.61", 4999)
server.bind(server_address)

# Poner el socket en modo de escucha
server.listen(1)  # Permite hasta 5 conexiones pendientes
print("Esperando conexiones entrantes...")
socket_client, address_client = server.accept()

# Aceptar una conexión entrante
print(f"Conexión entrante desde {address_client}")

# Recibir datos del cliente
identifier = socket_client.recv(1024).decode('utf-8')

while True:
    identifier = socket_client.recv(1024).decode('utf-8')
    if (identifier == 'UP'):
        #AGREGAR FUNCION
        print()
    if (identifier == 'DOWN'):
        #AGREGAR FUNCION
        print()
    if (identifier == 'LEFT'):
        #AGREGAR FUNCION
        print()
    if (identifier == 'RIGHT'):
        #AGREGAR FUNCION
        print()
    if(identifier == 'CERRAR'):
         #AGREGAR FUNCION
        print()

    socket_client.close()
    server.close()

Funciones Principales del Robot


from ev3dev.ev3 import Sound
from ev3dev2.motor import LargeMotor,OUTPUT_A, OUTPUT_B, OUTPUT_C, MoveTank
from time import sleep

#Agregar Funciones del ROBOT

def Mov_Right():
    mover_Der = MoveTank(OUTPUT_C, OUTPUT_B)
    mover_Der.on_for_seconds(100,-100,1, brake = False, block = True)
    # 100 velocidad de primer motor , -100 velocidad del segundo motor declarado, 1 es el tiempo del proceso

    print()

def Mov_Left():
    mover_Izq = MoveTank(OUTPUT_C, OUTPUT_B)
    mover_Izq.on_for_seconds(-100,100,1,brake = False, block= True)
    print()

def Mov_Down():
    Ruedas_Down = MoveTank(OUTPUT_B,OUTPUT_C)
    Ruedas_Down.on_for_seconds(100,100,1,brake= False, block=True)
    print() 

def Mov_Up():
    #motor A y D 
    RuedasB_C = MoveTank(OUTPUT_B,OUTPUT_C)
    RuedasB_C.on_for_seconds(-100,-100,1, brake=False, block=True)
    #rotacion al 50% de la velocidad maxima

def Mov_Lever():
    motor_A = LargeMotor(OUTPUT_A)
    motor_A.on_for_seconds(speed=50, seconds=2)
    motor_A.off()

def Sonido():
    # Inicializa el altavoz
    sound = Sound()
    # Reproduce un sonido
    sound.beep()

    # Reproduce un mensaje de voz
    sound.speak("Vini o' rey do futebol")

logoPRO.png (91.7 KB) Cesar Jimenez, 09/17/2023 12:15 AM