Bot de garra de mando (15 / 16 paso)

Paso 15: Listado de código para la aplicación de Python

#! / usr/bin/env python ## para Linux, BSD o Mac OSX puedes chmod + x en esta secuencia de comandos para hacer ejecutable # ### # Rover control app ## escrito por Scott Beasley - 2015 # gratis para usar o modificar. Disfrutar. # ### import sys import importación serie tiempo de import Tkinter * importación de tkFont importación tkMessageBox # crear la ventana de la clase de aplicación de la aplicación (Frame): # hacer la ventana def createWidgets (self): self.connected = False self.message = CadenaVar () # hacer una pequeña fuente para la garra botones. helv6 = tkFont.Font (familia = 'Helvetica', tamaño = 6, peso = 'normal') self.frame = marco (self.master) self.frame.pack () self.f1 = self.l1 marco (self.frame) = Label (self.f1, texto = "Puerto de comunicación:") self.l1.pack (lado = izquierda) self.comm_entry = entrada (self.f1, bd = 5, nombre = "comm_entry") self.comm_entry.pack (lado = izquierda) self.connectButton = botón (self.f1, texto = "Conectar", comando = uno mismo. SerialConnect, nombre = "b_connect") self.connectButton.pack (lado = izquierda) self.disconnectButton = botón (self.f1, texto = "Desconectado", comando = a uno mismo. SerialDisconnect, nombre = "b_disconnect") self.disconnectButton.pack (lado = a la derecha) self.f1.grid (fila = 0, columna = 0) self.f2 = LabelFrame (self.frame, bd = 3, alivio = "surco", texto = "Ground Control") self.g_vert_fm = marco (self.f2) self.grip_vert = escala (self.g_vert_fm, from_ = 0, a = 180) self.grip_vert.grid (fila = 0, columna = 0, rowspan = 4, pegajosa = W) self.grip_vert_set = botón (self.g_vert_fm, texto = comando "Set" = uno mismo. GripperY, nombre = "b_grip_vert_set", ancho = 1, altura = 2, font = helv6) self.grip_vert_set.grid (fila = 5, columna = 0, pegajosa = W) self.master.bind ("", del uno mismo. GripperY) self.g_vert_fm.grid (fila = 0, columnas = 0, rowspan = 4, pegajosa = W) self.leftforwardButton = botón (self.f2, texto = "\\", comando = uno mismo. TurnLeft45, nombre = "b_left_forward") self.leftforwardButton.grid (fila = 0, columnas = 1) self.master.bind ("< un rel =" nofollow">", del uno mismo. Self.leftButton de TurnLeft45) = botón (self.f2, texto = "<", comando = a uno mismo. Izquierda, nombre = "b_left") self.leftButton.grid (fila = 1, columna = 1) self.master.bind ("< /a >< un rel =" nofollow">", del uno mismo. Self.rightforwardButton de izquierda) = botón (self.f2, texto = "por" comando = a uno mismo. TurnRight45, nombre = "b_right_forward") self.rightforwardButton.grid (fila = 0, columnas = 3) self.master.bind ("< /a >< un rel =" nofollow">", del uno mismo. Self.haltButton de TurnRight45) = botón (self.f2, texto = "detener
! ", comando = a uno mismo. Alto, nombre = "b_halt") self.haltButton.grid (fila = 1, columna = 2) self.master.bind ("< /a >< un rel =" nofollow">", del uno mismo. Self.rightButton de alto) = botón (self.f2, texto = ">", comando = a uno mismo. TurnRight, nombre = "b_right") self.rightButton.grid (fila = 1, columna = 3) self.master.bind ("< /a >< un rel =" nofollow">", del uno mismo. TurnRight) self.upButton = botón (self.f2, texto = "^", comando = a uno mismo. Adelante, nombre = "b_forward") self.upButton.grid (fila = 0, columna = 2) self.master.bind ("< /a >< un rel =" nofollow">", del uno mismo. Self.leftdownButton adelante) = botón (self.f2, texto = "por" comando = a uno mismo. TurnRight45, nombre = "b_left_down") self.leftdownButton.grid (row = 2, columna = 1) self.downButton = botón (self.f2, texto = "V", comando = a uno mismo. Inversa, nombre = "b_reverse") self.downButton.grid (row = 2, columna = 2) self.master.bind ("< /a >< un rel =" nofollow">", del uno mismo. Self.f2.grid de reversa) (fila = 1, columna = 0, pady = 25) self.rightdownButton = botón (self.f2, texto = "\\", comando = a uno mismo. TurnLeft45, nombre = "b_right_down") self.rightdownButton.grid (fila = 2, columna = 3) self.g_horz_fm = marco (self.f2) self.grip_horz = escala (self.g_horz_fm, from_ = 0, a = 180, Oriente = HORIZONTAL) self.grip_horz.grid (fila = 0, columna = 0, columnspan = 7, pegajosa = E) self.grip_horz_set = botón (self.g_horz_fm, texto = comando "Set" = uno mismo. GripperX, nombre = "b_grip_horz_set", ancho = 1, altura = 2, font = helv6) self.grip_horz_set.grid (fila = 0, columna = 8) self.master.bind («< u >», uno mismo. GripperX) self.g_horz_fm.grid (row = 4, columna = 0, columnspan = 7, pegajosa = E) self.master.bind ("< /u >< /a >< un rel =" nofollow">< u >, del uno mismo. GripperHome) self.f3 = self.l2 marco (self.frame) = Label (self.f3, texto = "última acción:") self.l2.pack (lado = izquierda) self.l3 = Label (self.f3, texto = "", textvariable = self.message) self.l3.pack (lado = a la derecha) self.f3.grid (fila = 3, columna = 0, pady = 8) # establecer el estado del bot botones de control. Activar cuando se conecta, # deshabilitado de lo contrario. DEF CtrlButtonsState (self, bstate): self.leftforwardButton.config (estado = bstate) self.leftButton.config (estado = bstate) self.rightforwardButton.config (estado = bstate) self.rightButton.config (estado = bstate) self.upButton.config (estado = bstate) self.leftdownButton.config (estado = bstate) self.downButton.config (estado = bstate) self.rightdownButton.config (estado = bstate) self.haltButton.config (estado = bstate) self.disconnectButton.config (estado = bstate) self.grip_horz.config (estado = bstate) self.grip_vert.config (estado = bstate) self.grip_horz_set.config (estado = bstate) self.grip_vert_set.config (estado = bstate) # establecer el estado de la entrada de Puerto comm. Activar cuando no está conectado, # deshabilitado cuando está conectado el bot. DEF ConnCtrlsState (self, bstate): self.connectButton.config (estado = bstate) self.comm_entry.config (estado = bstate) # Conecte al puerto comm escribió en el campo de entrada de comm. DEF SerialConnect (self): tratar: # cambiar el baud velocidad 57600 aquí si es diferente entonces self.ser = serial. Serie (self.comm_entry.get (), 57600) excepto IOError: tkMessageBox.showerror ("Invalid comm port", "Puerto de comunicación no encontrado.") volver a uno mismo. ConnCtrlsState (desactivado) uno mismo. CtrlButtonsState (NORMAL) self.message.set ("SerialConnect") self.connected = True time.sleep (3) # detención un poco para la conexión a pasar # desconectar desde el bot (cerca del puerto de comunicación). DEF SerialDisconnect (self): tratar: # enviar un comando de interrupción en caso de que el bot está todavía avanzando. Self.send_cmd ('h', "Halt!") time.sleep (1) self.ser.close () excepto IOError: Imprimir "Podría no cerrar puerto.." self.message.set ("SerialDisconnect") uno mismo. ConnCtrlsState ser (NORMAL). CtrlButtonsState (desactivado) self.connected = False time.sleep (2) # un poco para la desconexión de la detención a pasar # enviar el comando al puerto comm abierto def send_cmd (self, acción, msg): si self.connected == True: de val en acción: self.ser.write (val) self.ser.flush () self.message.set (msg) # enviar el bot un comando de la vuelta a la izquierda. DEF izquierda (sí, evento = None): self.send_cmd («a», «izquierda») # enviar el bot un comando turn-izquierda-arriba. DEF TurnLeft45 (self, evento = None): self.send_cmd ('q', "Left45") # enviar el bot un comando de girar a la derecha. DEF TurnRight (sí, evento = None): self.send_cmd ('s', «Derecho») # enviar el bot un comando de la vuelta, derecha y arriba. DEF TurnRight45 (self, evento = None): self.send_cmd ('e', "Right45") # enviar el bot un comando hacia adelante. DEF adelante (sí, evento = None): self.send_cmd ('w', "Up") # enviar el bot un comando inverso. DEF inversa (sí, evento = None): self.send_cmd ('z', "Down") # enviar el bot un comando detener. DEF alto (sí, evento = None): self.send_cmd ('h', "Halt!") # Establecer a la garra (X). DEF GripperX (evento del uno mismo, = None): # leer el control deslizante y envíe el valor al controlador de bot # Nota: 0 es completamente cerrada y 180 son todas la grp_change de manera abierta = ('> ', chr (self.grip_horz.get ()), chr (255)) self.send_cmd (grp_change, "Pinza X") # establece la definición de pinza Y. GripperY (evento del uno mismo, = None): # leer el control deslizante y envíe el valor al controlador de bot # Nota : 0 es hacia arriba y 180 es hacia abajo grp_change = ('^ ', chr (self.grip_vert.get ()), chr (255)) self.send_cmd (grp_change, "Pinza Y") # Coloque la pinza en la posición "home". DEF GripperHome (evento del uno mismo, = ninguna): self.send_cmd ('c', chr (255), "Pinza Inicio") def __init__ (uno mismo, maestro = ninguna): Frame.__init__ (self, maestro) self.pack () self.createWidgets () uno mismo. CtrlButtonsState (desactivado) # Kick off el GUI (Tk) y tamaño y título de la ventana de la aplicación def principal (): raíz = Tk () root.geometry ("450 x 350") root.wm_title ("Rover Control Center (RCC)") app = aplicación (maestro = raíz) (app.mainloop) si __name__ == '__main__': principal () < br >

Artículos Relacionados

Cómo cambiar los colores del botón para el mando de Guitar Hero.

Cómo cambiar los colores del botón para el mando de Guitar Hero.

Bien, att primero queria cambiar los colores de los botones del controlador para confundir a mis amigos y yo no sabía cómo. Esto es cómo este instructable fue hecha. Decidí hacer mi controlador de botones de color de arco iris. Este instructable volu
Spy Video Trakr: Añadir un accesorio de garra de Lego

Spy Video Trakr: Añadir un accesorio de garra de Lego

en honor de la semana nacional de robótica y el reto de Robot de Instructables presento unos diseños de robot. Este diseño (para las edades 13-18) aprovecha Spy Video Trakr de Wild Planet, que es fácilmente programable y diseñado por sus desarrollado
Papel avión-TV mando a distancia con control remoto

Papel avión-TV mando a distancia con control remoto

Crear un avión de papel controlada remota controlado por televisor medio remoto. Super divertido y barato para hacer!Paso 1: Para el paso 1, usted debe obtener todos los materiales: una pequeña li-poli batería (3,7 voltios), un trozo de PCB, motor el
Agregar un botón Flip a un Quadcopter remoto

Agregar un botón Flip a un Quadcopter remoto

Quadcopters pequeño muchos utilice uno de los dos joysticks para controlar tirones (normalmente la palanca de pitch/roll). Presiona hacia abajo la palanca permite a modo de tirón, con la dirección de la tapa controlada por la dirección que el palo se
IPhone Learing mando a distancia Universal con Arduino

IPhone Learing mando a distancia Universal con Arduino

Hola y Bienvenidos a mi primer Instructable.No sé ustedes, pero nunca puedo encontrar el control remoto para mi TV. Siempre parece desaparecer cuando lo necesito y luego sólo aparece días más tarde como cuña dentro del sofá por uno de los niños. Una
BaW-Bot parte 3: Adición de la vista y al tacto al Bot

BaW-Bot parte 3: Adición de la vista y al tacto al Bot

esta es la tercera parte de nuestra fabricación de BaW-Bot (Bot de campanas y silbatos) – 5 Separe instructables que mire de diferentes tecnologías relacionadas con Arduino, combinan para crear un Bot con todas las campanas-y-silbidos.Parte 1: Constr
Construir su papel TV reomte mando con arduino

Construir su papel TV reomte mando con arduino

Hola cada uno,soy vigneshraja. hice este proyecto para la diversión. Pensé que si mi tv remoto convertido en touch remote.so hice este proyecto mediante la combinación de la biblioteca remota IR y la biblioteca de táctil capacitiva de arduino.for toc
Control de tus electrodomésticos con control remoto de TV!!

Control de tus electrodomésticos con control remoto de TV!!

Ver el proyecto salida vídeo aquí.He encontrado que algunas personas son muy perezosos para levantarse ir a la Junta y pulse el interruptor para encender la luz o ventilador o cualquier otro aparato pero Hey!, ahora hay una solución más fácil. Ahora
Barrido remoto controlado el montaje de cámara

Barrido remoto controlado el montaje de cámara

Este montaje de cámara le permite controlar a distancia y girarlo 180 grados. Utilizaré una GoPro en mi proyecto, pero se puede utilizar casi cualquier cámara que puede asegurar al Monte.También en este instructable aprenderemos cómo controlar un ser
Nikon AW120 batería puerta reparación

Nikon AW120 batería puerta reparación

mi Nikon AW120, cámara súper impresionante, impermeable, compartimento era difícil de abrir.Esta cámara tiene una perilla redonda con un botón. Mi mando era muy difícil girar. Apenas podía girar para desbloquear y abrir la puerta.He intentado utiliza
Sistema de juegos de azar/de la Arcade de RetroPie

Sistema de juegos de azar/de la Arcade de RetroPie

Juego o sistema con una Raspberry PI 3 de juegos de construcción de un controlador de sobremesa - pueden ampliarse para utilizar otros controladores, NES, SNES y N64 USB con puertos USB frontal. Esta versión requiere un cortador del laser (yo usé un
Bailando en el fuego

Bailando en el fuego

¡ Hola! Somos Stan Lauren y Obed y somos estudiantes de Howest, Kortrijk. Estamos en nuestro segundo año del estudio diseño de producto Industrial. Para nuestro curso de diseño y prototipado tuvimos un trabajo en grupo, en asociación con Bolwerk. Est
(Actualizado) Instalación de RetroPie 3.0 + en frambuesa Pi 1, 2 y cero

(Actualizado) Instalación de RetroPie 3.0 + en frambuesa Pi 1, 2 y cero

ObjetivoInstale el RetroPie 3.0 + en cualquier modelo de la Raspberry Pi usando Windows o Mac.Esto incluye:Frambuesa Pi 1 modelo A +Frambuesa Pi 1 modelo B +Frambuesa Pi 2 modelo BFrambuesa Pi ceroVideo tutorial también está disponible: https://youtu
Sistema de encendido de los fuegos artificiales de RC DIY

Sistema de encendido de los fuegos artificiales de RC DIY

este Instructable le mostrará cómo hacer un detonador de fuegos artificiales seguros de control remoto que reduce accidentes como quemaduras en la piel y las explosiones accidentales. Cada año hhere en Filipinas todo usted necesita es de $10, 30 minu