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>
!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>