Project

General

Profile

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

Version 16 (Cesar Jimenez, 10/13/2023 10:04 AM) → Version 17/41 (Cesar Jimenez, 10/13/2023 10:07 AM)

h1. ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤWikipedia

!logoPRO.png!

----

+*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:*
* [[Introducción]]
* [[Descripción y Objetivos]]
* [[Organización y Planificación]]
* [[Análisis y Diseño]]
* [[Código e Implementación]]
* [[Bibliografía]]

h1. ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤIntefaz Grafica

<pre><code class="ruby">

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





</code></pre>

h1. Servidor

<pre><code class="ruby">

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

</code></pre>

h1. Servidor

<pre><code class="ruby">

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

</code></pre>