-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathRobot_Arm_Controller.py
More file actions
135 lines (108 loc) · 4.5 KB
/
Robot_Arm_Controller.py
File metadata and controls
135 lines (108 loc) · 4.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
from tkinter import *
from tkinter import filedialog
import serial
import time
port_opened=False
def set_port():
global port_opened,arduino
com_port= port_input.get()
arduino=serial.Serial(com_port,9600)
port_opened=True
print ("COM port set to: "+com_port)
def send_positions(position):
message = "{0:0=3d}".format(position[0])+"{0:0=3d}".format(position[1])+"{0:0=3d}".format(position[2])+"{0:0=3d}".format(position[3])+"{0:0=3d}".format(position[4])+"\n"
arduino.write(str.encode(message))
print(message, end='')
time.sleep(0.2)
saved_positions = []
def save_positions():
saved_positions.append([servo1_slider.get(), servo2_slider.get(), servo3_slider.get(), servo4_slider.get(), servo5_slider.get()]);
print("saved positions: "+str(saved_positions))
def play_positions():
for position in saved_positions:
print("playing: "+str(position))
send_positions(position);
time.sleep(1)
def clear_all_positions():
global saved_positions
saved_positions = []
print("cleared all positions")
def clear_last_positions():
global saved_positions
removed = saved_positions.pop()
print("removed: "+str(removed))
print("saved positions: "+str(saved_positions))
def open_file():
global saved_positions
filename = filedialog.askopenfilename(initialdir = "/", title = "Select a File", filetypes = (("Text files","*.txt*"),("all files","*.*")))
file = open(filename, "r")
data=file.read()
saved_positions=eval(data)
file.close()
print("opened: "+filename)
def save_file():
save_file = filedialog.asksaveasfile(mode='w', defaultextension=".txt")
save_file.write(str(saved_positions))
save_file.close()
print("saved file")
def instructions():
print("1.) Set the Arduino's COM port and click Enter. This can be found in Device Manager in Windows")
print("2.) Move the arm's servos using the sliders")
print("3.) To record a position, click on Record Position")
print("4.) To replay the recorded positions, click on Replay Positions")
print("\nTo save what you've recorded, got to File > Save File.")
print("To open a previously saved file, got to File > Open File.")
window = Tk()
window.title("Robot Arm Controller 2")
window.minsize(355,300)
port_label=Label(window,text="Set Port:");
port_label.place(x=10,y=10);
port_input=Entry(window)
port_input.place(x=10,y=35)
port_button=Button(window, text="Enter", command=set_port)
port_button.place(x=135,y=32)
servo1_slider = Scale(window, from_=180, to=0)
servo1_slider.place(x=0, y=100)
servo1_label=Label(window,text="Servo 1")
servo1_label.place(x=10, y=80)
servo2_slider = Scale(window, from_=180, to=0)
servo2_slider.place(x=70, y=100)
servo2_label=Label(window,text="Servo 2")
servo2_label.place(x=80, y=80)
servo3_slider = Scale(window, from_=180, to=0)
servo3_slider.place(x=140, y=100)
servo3_label=Label(window,text="Servo 3")
servo3_label.place(x=150, y=80)
servo4_slider = Scale(window, from_=180, to=0)
servo4_slider.place(x=210, y=100)
servo4_label=Label(window,text="Servo 4")
servo4_label.place(x=220, y=80)
servo5_slider = Scale(window, from_=180, to=0)
servo5_slider.place(x=280, y=100)
servo5_label=Label(window,text="Servo 5")
servo5_label.place(x=290, y=80)
save_button=Button(window, text="Record Position", command=save_positions)
save_button.place(x=10,y=220)
clear_button=Button(window, text="Clear Last Position", command=clear_last_positions)
clear_button.place(x=120,y=220)
clear_button=Button(window, text="Clear All Positions", command=clear_all_positions)
clear_button.place(x=120,y=255)
play_button=Button(window, text="Replay Positions", command=play_positions, height=3)
play_button.place(x=250,y=220)
menubar = Menu(window)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Open File", command=open_file)
filemenu.add_command(label="Save File", command=save_file)
menubar.add_cascade(label="File", menu=filemenu)
editmenu = Menu(menubar, tearoff=0)
editmenu.add_command(label="Clear last position", command=clear_last_positions)
editmenu.add_command(label="Clear all positions", command=clear_all_positions)
menubar.add_cascade(label="Edit", menu=editmenu)
helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="How to use (printed in console)", command=instructions)
menubar.add_cascade(label="Help", menu=helpmenu)
window.config(menu=menubar)
while True:
window.update()
if(port_opened):
send_positions([servo1_slider.get(), servo2_slider.get(), servo3_slider.get(), servo4_slider.get(), servo5_slider.get()])