Remote control Gripper bot (15 / 16 steg)

Steg 15: Kodlista för Python

#! / usr/bin/env python
#
# För Linux, BSD eller Mac OSX kan du chmod + x för detta skript för att göra körbar
#
###########
# Rover kontroll app
#
# Skriven av Scott Beasley - 2015
# Gratis att använda eller ändra. Njuta av.
#
###########

importera sys
importera följetong
Importera tid
från Tkinter import *
importera tkFont
importera tkMessageBox

# Skapa fönstret för tillämpningen
klass App (ram):
# Gör fönstret
def createWidgets (själv):
Self.Connected = False
Self.Message = StringVar)

# Göra små teckensnitt för gripdon som knappar.
helv6 = tkFont.Font (familj = "Helvetica",
storlek = 6, vikt = "normalt")

Self.Frame = ram (self.master)
Self.Frame.Pack)

Self.F1 = ram (self.frame)
Self.L1 = Label (self.f1, text = "Comm Port:")
Self.L1.Pack (sida = vänster)
Self.comm_entry = posten (self.f1, bd = 5, namn = "comm_entry")
Self.comm_entry.Pack (sida = vänster)
self.connectButton = knappen (self.f1, text = "Anslut",
kommandot = själv. SerialConnect,
namn = "b_connect")
self.connectButton.pack (sida = vänster)
self.disconnectButton = knappen (self.f1, text = "Koppla från",
kommandot = själv. SerialDisconnect,
namn = "b_disconnect")
self.disconnectButton.pack (sida = höger)
Self.F1.Grid (rad = 0, kolumn = 0)

Self.F2 = LabelFrame (self.frame, bd = 3, lättnad = "räffla",
text = "Ground Control")

Self.g_vert_fm = ram (self.f2)
Self.grip_vert = skala (self.g_vert_fm, from_ = 0 och = 180)
Self.grip_vert.Grid (rad = 0, kolumn = 0, rowspan = 4, klibbiga = W)
Self.grip_vert_set = knappen (self.g_vert_fm, text = "Satt",
kommandot = själv. GripperY,
namn = "b_grip_vert_set",
bredd = 1, höjd = 2,
Font = helv6)
Self.grip_vert_set.Grid (rad = 5, kolumn = 0, klibbiga = W)
Self.master.BIND ("", själv. GripperY)
Self.g_vert_fm.Grid (rad = 0, kolumn = 0, rowspan = 4, klibbiga = W)

self.leftforwardButton = knappen (self.f2, text = "\\",
kommandot = själv. TurnLeft45,
namn = "b_left_forward")
self.leftforwardButton.grid (rad = 0, kolumn = 1)
Self.master.BIND ("< en rel =" nofollow">", själv. TurnLeft45)

self.leftButton = knappen (self.f2, text = "<",
kommandot = själv. Svängvänster, name = "b_left")
self.leftButton.grid (rad = 1, kolumn = 1)
Self.master.BIND ("< /a >< en rel =" nofollow">", själv. Svängvänster)

self.rightforwardButton = knappen (self.f2, text = "/",
kommandot = själv. TurnRight45,
namn = "b_right_forward")
self.rightforwardButton.grid (rad = 0, kolumn = 3)
Self.master.BIND ("< /a >< en rel =" nofollow">", själv. TurnRight45)

self.haltButton = knappen (self.f2, text = "Halt!",
kommandot = själv. Stopp, name = "b_halt")
self.haltButton.grid (rad = 1, kolumn = 2).
Self.master.BIND ("< /a >< en rel =" nofollow">", själv. Halt)

self.rightButton = knappen (self.f2, text = ">",
kommandot = själv. Svänghöger, name = "b_right")
self.rightButton.grid (rad = 1, kolumn = 3)
Self.master.BIND ("< /a >< en rel =" nofollow">", själv. Svänghöger)

self.upButton = knappen (self.f2, text = "^",
kommandot = själv. Framåt, name = "b_forward")
self.upButton.grid (rad = 0, kolumn = 2)
Self.master.BIND ("< /a >< en rel =" nofollow">", själv. Framåt)

self.leftdownButton = knappen (self.f2, text = "/",
kommandot = själv. TurnRight45,
namn = "b_left_down")
self.leftdownButton.grid (rad = 2, kolumn = 1)

self.downButton = knappen (self.f2, text = "V",
kommandot = själv. Omvänd, name = "b_reverse")
self.downButton.grid (rad = 2, kolumn = 2)
Self.master.BIND ("< /a >< en rel =" nofollow">", själv. Vända på)
Self.F2.Grid (rad = 1, kolumn = 0, pady = 25)

self.rightdownButton = knappen (self.f2, text = "\\",
kommandot = själv. TurnLeft45,
namn = "b_right_down")
self.rightdownButton.grid (rad = 2, kolumn = 3)

Self.g_horz_fm = ram (self.f2)
Self.grip_horz = skala (self.g_horz_fm, from_ = 0 och = 180,
Orient = horisontell)
Self.grip_horz.Grid (rad = 0, kolumn = 0, columnspan = 7, klibbiga = E)

Self.grip_horz_set = knappen (self.g_horz_fm, text = "Satt",
kommandot = själv. GripperX,
namn = "b_grip_horz_set",
bredd = 1, höjd = 2,
Font = helv6)
Self.grip_horz_set.Grid (rad = 0, kolumn = 8)
Self.master.BIND (< u >, själv. GripperX)
Self.g_horz_fm.Grid (rad = 4, kolumn = 0, columnspan = 7, klibbiga = E)
Self.master.BIND ("< /u >< /a >< en rel =" nofollow">< u >", själv. GripperHome)

Self.F3 = ram (self.frame)
Self.L2 = Label (self.f3, text = "Last action:")
Self.L2.Pack (sida = vänster)
Self.L3 = Label (self.f3, text = "", textvariable = self.message)
Self.L3.Pack (sida = höger)
Self.F3.Grid (rad = 3, kolumn = 0, pady = 8)

# Ställ in tillståndet för bot kontrollknappar. Aktivera när ansluten,
# Inaktiveras annars.
def CtrlButtonsState (self, bstate):
self.leftforwardButton.config (state = bstate)
self.leftButton.config (state = bstate)
self.rightforwardButton.config (state = bstate)
self.rightButton.config (state = bstate)
self.upButton.config (state = bstate)
self.leftdownButton.config (state = bstate)
self.downButton.config (state = bstate)
self.rightdownButton.config (state = bstate)
self.haltButton.config (state = bstate)
self.disconnectButton.config (state = bstate)
Self.grip_horz.config (state = bstate)
Self.grip_vert.config (state = bstate)
Self.grip_horz_set.config (state = bstate)
Self.grip_vert_set.config (state = bstate)

# Set state comm inskeppningshamnen. Aktivera när du inte är ansluten,
# Inaktiverad när bot är ansluten.
def ConnCtrlsState (self, bstate):
self.connectButton.config (state = bstate)
Self.comm_entry.config (state = bstate)

# Anslut till comm port skrivit i fältet comm.
def SerialConnect (själv):
försök:
# Ändra baudfrekvens här om olika sedan 57600
Self.ser = följetong. Följetong (self.comm_entry.get (), 57600)
utom IOError:
tkMessageBox.showerror ("Ogiltig comm port", "Comm hamnen finns inte." ")
returnera

själv. ConnCtrlsState (inaktiverad)
själv. CtrlButtonsState (NORMAL)
Self.Message.set ("SerialConnect")
Self.Connected = sant
Time.Sleep (3) # Dwell lite för anslutningen ska ske

# Koppla från bot (nära comm hamnen).
def SerialDisconnect (själv):
försök:
# Skicka ett stopp kommando bara i fall bot är fortfarande rörliga.
Self.send_cmd ("h", "Stopp!")
Time.Sleep (1)
Self.ser.Close)
utom IOError:
skriva ut "kunde inte stänger port..."

Self.Message.set ("SerialDisconnect")
själv. ConnCtrlsState (NORMAL)
själv. CtrlButtonsState (inaktiverad)
Self.Connected = False
Time.Sleep (2) # Dwell lite för urkopplingen hända

# Skicka kommandot till den öppna comm porten
def send_cmd (själv, handla, msg):
om self.connected == True:
val i aktion:
Self.ser.write (val)
Self.ser.flush)
Self.Message.set (msg)

# Skicka bot ett sväng vänster kommando.
def svängvänster (själv, event = ingen):
Self.send_cmd ("a", "vänster")

# Skicka bot ett turn-vänster-upp kommando.
def TurnLeft45 (self, event = ingen):
Self.send_cmd ("q", "Left45")

# Skicka bot ett turn-rätt kommando.
def svänghöger (själv, event = ingen):
Self.send_cmd ('s ","Rätt")

# Skicka bot ett turn-höger-upp kommando.
def TurnRight45 (self, event = ingen):
Self.send_cmd ("e", "Right45")

# Skicka bot ett framåt kommando.
def framåt (själv, event = ingen):
Self.send_cmd ("w", "Up")

# Skicka bot en omvänd kommando.
def omvänd (själv, event = ingen):
Self.send_cmd ("z", "Ned")

# Skicka bot ett stopp kommando.
def stopp (själv, event = ingen):
Self.send_cmd ("h", "Stopp!")

# Set griparen (X).
def GripperX (self, event = ingen):
# Läs skjutreglaget och skicka värdet till bot controller
# Observera: 0 är ända sluten och 180 är hela vägen öppen
grp_change = (">", chr (self.grip_horz.get ()), chr (255))
Self.send_cmd (grp_change, "Gripper X")

# Set griparen Y.
def GripperY (self, event = ingen):
# Läs skjutreglaget och skicka värdet till bot controller
# Observera: 0 är hela vägen upp och 180 är ända ner
grp_change = ('^ ', chr (self.grip_vert.get ()), chr (255))
Self.send_cmd (grp_change, "Gripper Y")

# Set griparen "hem" position.
def GripperHome (self, event = ingen):
Self.send_cmd ('c', chr (255), "Gripper Home")

def __init__ (själv, master = ingen):
Frame.__init__ (själv, master)
Self.Pack)
self.createWidgets)
själv. CtrlButtonsState (inaktiverad)

# Kick off den GUI (Tk) och sedan storlek och titel fönstret app
def (huvudsakliga):
rot = Tk)
root.Geometry ("450 x 350")
root.wm_title ("Rover Control Center (RCC)")
app = App (master = root)
app.mainloop)

om __name__ == "__main__":
(huvudsakliga)
< br >

Se Steg
Relaterade Ämnen

Remote Control Robot Arm

detta är talet High School Science Olympiad Robot Arm som tävlade på Minnesota 2012 staten Science Olympiad turneringen med 32 andra lag. Jag byggde och körde denna fjärrkontroll robotarm för turneringen, utsläppande 8 (på grund av oförutsedda proble...

Remote Control sällskapsdjur dörren

Dilemma:6 på morgonen den 1 januari. Du festade till 03: 00. Nu ska du sova det off när du väcks av ett påträngande avlysningen kommer från bakdörren. Din hund behöver gå ut och ta hand om sin verksamhet, men du är varm, skön, och golvet är kallt och...

Remote Control pipig leksak

detta är en enkel leksak för sällskapsdjur. Jag kom upp med detta att underhålla min hund. Du kan använda olika storlek fjärrkontroll bilar för olika stora hundar och olika typer av terräng.Steg 1: material Vad som behövs:Remote Control bilPipig leks...

Laddning Remote Control Robot

laddning Remote Control RobotFÖRST AV ALLT VILL JAG KLARA DIN ALLA TVIVEL INNAN DU BÖRJAR. JAG ÄR INTE NÅGON TEKNISK OCH MEKANISK EXPERT I MASKIN SÅ DU INTE BEHÖVER SPENDERA 100 DOLLAR I DETTA PROJEKT DET ÄR SÅ BILLIGT OCH ENKELT PROJEKT. Du kan bygg...

Spela in IR-koder för någon fjärrkontroll för användning med Linux Infrared Remote Control (LIRC) på Raspberry Pi GPIO-baserade infraröd mottagare

IntroduktionDe fjärrkontroller som är föräldralösa när enheten kontrollerar de kan slutat fungera återanvändas på din Raspberry Pi. Efter att ha avslutat detta instructable, du kan bli intresserad i försökande ute den följande instructables:Återanvän...

Installera Linux Infrared Remote Control (LIRC) paket

IntroduktionLinux Infrared Remote Control (LIRC) är en svit av program som styr den IR hårdvaran av Pi-hallon. Lirc debian-paketet innehåller ett antal program:ircat - Skriv ut strängar när du trycker på knapparnairrecord - ansökan om inspelning IR-k...

Hur man gör en Remote Controlled Stunt bil hemma

I detta Instructable lär vi att göra en fantastisk gadget som varje kille önskat och hade också iallafall försökte en gång göra det under hans barndom. Det är inget annat än en Remote Controlled bil och gissa vad, i detta instructable, vi kommer inte...

Remote Controlled Arduino Car

Jag har alltid gillat att gå till lägren, etc där det finns många av mina vänner, jag har alltid gillat att ha en massa vänner och en dag när jag letade upp youtube för fjärrkontroll bilar, och hur de gjordes, jag listat ut att jag kunde göra en till...

Öka känsligheten för IR Remote Control

detta instructables är att guida dig på hur du kan förbättra känsligheten av IR-fjärrkontrollen. Modell av fjärrkontrollen är AXD7461 för din information.Steg 1: Höljet blockerar IR-signalen Gemensamma anledningen till att IR-fjärrkontrollen inte är...

RS-232 IR-mottagare i en seriell anslutning (LIRC) dator Remote Control

detta instructable avser att visa dig hur du skapar en liten och enkel infraröda (IR) mottagare för din dator. Konfigurationen av programvaran är utanför omfånget för detta instructable, men jag använder denna mottagare med LIRC (Linux Infrared Remot...

Remote Control mörkar för $20

Så jag var trött på den mödosamma uppgiften att manuellt öppna och stänga mörkarna varje dag... och jag hade gjort motoriserade persienner innan med en kontinuerlig revolution servo vända staven när jag var liten men som inte ser trevligt med en serv...

LinkSprite Ethernet Shield + yeelink WEB remote control IO

Ethernet-Shield kan omedelbart Internetkonnektivitet för Arduino projekt. En ombord Wiz5100 ethernet styrenhet hanterar upp till fyra TCP och UDP-anslutningar, stack bara det till en Arduino att skapa dina egna enheter på nätverket. Enkelt kontroller...

Grunderna i förvandlar ditt Remote Controll fordon till ett autonomt System (Drone) genom att använda en Arduino

jag började detta projekt med målet att billigt vrida min RC helikopter till något av en UAV eller åtminstone att passa vissa sensorer att minska kollisioner och andra "mis haps."Nu är tyvärr i början av projektet missbedömde jag min lilla helik...

Trådlös Phone Remote-Controlled LED Strips: RasPi w / Fadecandy driver w / WS2811/WS2812 adresserbara LED Strips med TouchOSC Smartphone App med Iphone eller Droid

Här går en allt mer omfattande design översikt över mitt senaste projekt. Nedan är en video som jag har lagt upp visar vissa funktioner:Den ursprungliga idén progressionen gick ungefär så här:Adresserbara lysdiodsrand (s vi vill alltid ha mer skinand...

Teddy Bear Remote Control

nallebjörn fjärrkontrollen sitter bra på din soffa eller säng och kan användas för att styra din iPod eller dator. Det är en söt ändring till en RF-fjärrkontroll och är förvånansvärt mjuk! Projektet är svårt att göra och kräver en hel del udda materi...

Remote control via GPRS/GSM SMS(Arduino)

fjärrkontroll, särskilt när detta nr ethernet och Wifi i den utomhus, har varit en mycket djupgående saker tidigare. När jag var barn, bilden jag alltid som jag har en utrustning som kan styra alla vitvaror. Nu, detta blir verklighet, med Arduino och...

Touch skärmen Soundbar IR Remote Control

Min son har Cambridge Audio Sound bar med en hund tuggade fjärrkontroll! Jag sa jag skulle prova och göra en ny fjärrkontroll!Jag har testat detta instructable (på / av- & ljud av) på min Samsung TV och det fungerar bra, jag har ännu att testa den på...

Kindle Web Remote Control

BeskrivningDetta är en systemlösning till remote Sidändring på en kindle. Kort sagt, kör jag en webbserver från min kindle. Detta tjänar ett cgi-skript som imiterar en knapptryckning på min kindle. Jag åt skript från en webbläsare på min telefon.Dett...

TV Remote Controlled bil

ingenting är värre än att förlora den registeransvarige som följde med din fjärrkontroll bil. Ersätta att sucker med en arduino och en fjärrkontroll som alltid verkar vara runt, TV-fjärrkontroll!Steg 1: material Material för detta projekt är ganska r...