Last modified by Eric Nantel on 2026/04/06 10:24

Show last authors
1 {{html wiki="false" clean="false"}}
2 <style>
3 .asm { font-family: Verdana, Helvetica, sans-serif; font-size: 14px; max-width: 960px; }
4 .asm-step { background: #fff; border: 1px solid #ddd; border-radius: 8px; margin-bottom: 1.5rem; overflow: hidden; }
5 .asm-step-header { background: #F5A800; display: flex; align-items: stretch; justify-content: space-between; }
6 .asm-step-name { padding: 0.6rem 1rem; font-weight: bold; font-size: 15px; color: #2C1A00; }
7 .asm-step-num { background: #1a1a1a; color: white; padding: 0.6rem 1.1rem; font-weight: bold; font-size: 15px; display: flex; align-items: center; white-space: nowrap; }
8 .asm-step-body { display: flex; flex-wrap: wrap; gap: 1.25rem; padding: 1rem; align-items: flex-start; }
9 .asm-step-text { flex: 1 1 250px; font-size: 13px; line-height: 1.6; }
10 .asm-step-figure { flex: 0 1 280px; text-align: center; }
11 .asm-step-figure img { max-width: 100%; height: auto; border: 1px solid #ccc; border-radius: 4px; }
12 .asm-step-figure span { display: block; font-size: 12px; color: #666; margin-top: 0.3rem; }
13 .asm-fullwidth { padding: 1rem; border-top: 1px solid #eee; font-size: 13px; overflow-x: auto; }
14 .asm-info { background: #f9f9f9; border: 1px solid #ddd; border-radius: 8px; padding: 1rem; margin-bottom: 1.5rem; font-size: 13px; line-height: 1.6; }
15 .asm-info h2 { font-size: 15px; margin: 0 0 0.5rem 0; color: #2C1A00; }
16 .section-header { background: #1a1a1a; color: white; font-weight: bold; font-size: 14px; padding: 0.5rem 1rem; border-radius: 6px; margin: 1.5rem 0 1rem 0; }
17 .ref-table { border-collapse: collapse; width: 100%; font-size: 12px; }
18 .ref-table th { background: #ccc; border: 1px solid #aaa; padding: 0.3rem 0.6rem; text-align: center; }
19 .ref-table td { border: 1px solid #ddd; padding: 0.3rem 0.6rem; text-align: center; }
20 .ref-table tr:nth-child(odd) td { background: #f9f9f9; }
21 .ref-table tr:nth-child(even) td { background: #fff; }
22 .code-block { background: #f4f4f4; border: 1px solid #ddd; border-radius: 4px; padding: 0.6rem 0.8rem; font-family: 'Courier New', monospace; font-size: 12px; line-height: 1.6; white-space: pre; overflow-x: auto; }
23 .warning { color: #c00; font-weight: bold; }
24 h1 { font-size: 18px; margin-bottom: 0.25rem; }
25 </style>
26
27 <div class="asm">
28
29 <!-- Header -->
30 <div style="padding: 0.5rem 0 1rem 0;">
31 <h1>AL5 Programming Tutorial — PS2 RC Rev. 1</h1>
32 <p><b>Updated January 11, 2012</b></p>
33 <p><span class="warning">Safety first!</span> Wear eye protection and never touch a powered robot!</p>
34 <p>The purpose of this guide is to set up the robot arm to be controlled via a PlayStation 2 game controller. This can be done using a Bot Board II with Basic Atom Pro 28 with or without an SSC-32 — both methods are demonstrated below.</p>
35 <p>Note: PS2 control programs have been verified to work with Lynxmotion wireless controllers. Non-Lynxmotion controllers cannot be guaranteed.</p>
36 </div>
37
38 <!-- Requirements -->
39 <div class="asm-info">
40 <h2>What You'll Need</h2>
41 <p>Any AL5 arm · Bot Board II with Basic Atom Pro 28 · SSC-32 (optional) · PS2 Controller and cable · 6" Servo Extender Cable</p>
42 </div>
43
44 <!-- ── SECTION A ── -->
45 <div class="section-header">Method A — SSC-32 + Bot Board II / Basic Atom Pro 28</div>
46
47 <!-- A Step 1 -->
48 <div class="asm-step">
49 <div class="asm-step-header">
50 <div class="asm-step-name">AL5 PS2 RC — Modify Servo Cable</div>
51 <div class="asm-step-num">Step 1 / 5</div>
52 </div>
53 <div class="asm-step-body">
54 <div class="asm-step-text">
55 <p>To connect the Bot Board II to the SSC-32, modify a 6" servo extender cable: remove the header pins so you have two female ends. Use an exacto knife to gently pry the tab up and pull the red wire free on one end. Cover the exposed connector with heat shrink to avoid accidental shorts.</p>
56 <p>Remove the TX and RX jumpers from the lower-right corner of the SSC-32, and plug the unmodified end of the cable in: yellow on TX, red on RX, black on ground.</p>
57 </div>
58 <div class="asm-step-figure">
59 <img src="https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/servo-erector-set-robots-kits/ses-v1-robots/ses-v1-arms/al5-programming-tutorial-ps2-botboard/WebHome/scmod01.jpg">
60 <span>Figure 1.</span>
61 </div>
62 </div>
63 </div>
64
65 <!-- A Step 2 -->
66 <div class="asm-step">
67 <div class="asm-step-header">
68 <div class="asm-step-name">AL5 PS2 RC — Install Boards</div>
69 <div class="asm-step-num">Step 2 / 5</div>
70 </div>
71 <div class="asm-step-body">
72 <div class="asm-step-text">
73 <p>Wire the Bot Board II and SSC-32 as shown in the schematic and tables in Step 3. Verify all jumpers are correct. Install the boards as shown in Figure 2 after all connections are complete and checked.</p>
74 </div>
75 <div class="asm-step-figure">
76 <img src="https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/servo-erector-set-robots-kits/ses-v1-robots/ses-v1-arms/al5-programming-tutorial-ps2-botboard/WebHome/al5ps22.jpg">
77 <span>Figure 2.</span>
78 </div>
79 </div>
80 </div>
81
82 <!-- A Step 3 — tables + schematic -->
83 <div class="asm-step">
84 <div class="asm-step-header">
85 <div class="asm-step-name">AL5 PS2 RC — Configure Jumpers &amp; Connections</div>
86 <div class="asm-step-num">Step 3 / 5</div>
87 </div>
88 <div class="asm-step-body">
89 <div class="asm-step-text">
90 <p>Configure the Bot Board II as shown in Table 3-1. Configure the SSC-32 as shown in Table 3-2.</p>
91 </div>
92 </div>
93 <div class="asm-fullwidth">
94 <div style="display:flex; flex-wrap:wrap; gap:1.5rem; margin-bottom:1rem;">
95 <!-- Bot Board II -->
96 <div style="flex:1 1 280px;">
97 <p style="font-weight:bold; margin-bottom:0.4rem;">Bot Board II Jumpers (Table 3-1)</p>
98 <table class="ref-table" style="margin-bottom:0.75rem;">
99 <tr><th>Action</th><th>Setting</th></tr>
100 <tr><td>Connect</td><td>6.0VDC battery to VS</td></tr>
101 <tr><td>Enable</td><td>Speaker</td></tr>
102 <tr><td>Connect</td><td>I/O 4-7 Power Bus to 5VDC</td></tr>
103 <tr><td>Connect</td><td>VL to SSC-32's VL</td></tr>
104 </table>
105 <p style="font-weight:bold; margin-bottom:0.4rem;">Bot Board II Connections</p>
106 <table class="ref-table">
107 <tr><th>Pin</th><th>Function</th><th>Pin</th><th>Function</th></tr>
108 <tr><td>P0</td><td>N/A</td><td>P8</td><td>N/A</td></tr>
109 <tr><td>P1</td><td>N/A</td><td>P9</td><td>Speaker</td></tr>
110 <tr><td>P2</td><td>N/A</td><td>P10</td><td>SSC-32 RX</td></tr>
111 <tr><td>P3</td><td>N/A</td><td>P11</td><td>SSC-32 TX</td></tr>
112 <tr><td>P4</td><td>N/A</td><td>P12</td><td>PS2 Data</td></tr>
113 <tr><td>P5</td><td>N/A</td><td>P13</td><td>PS2 Command</td></tr>
114 <tr><td>P6</td><td>N/A</td><td>P14</td><td>PS2 Select</td></tr>
115 <tr><td>P7</td><td>N/A</td><td>P15</td><td>PS2 Clock</td></tr>
116 </table>
117 </div>
118 <!-- SSC-32 -->
119 <div style="flex:1 1 280px;">
120 <p style="font-weight:bold; margin-bottom:0.4rem;">SSC-32 Jumpers (Table 3-2)</p>
121 <table class="ref-table" style="margin-bottom:0.75rem;">
122 <tr><th>Action</th><th>Setting</th></tr>
123 <tr><td>Connect</td><td>6.0VDC battery to VS</td></tr>
124 <tr><td>Connect</td><td>9.0VDC battery to VL</td></tr>
125 <tr><td>Disconnect</td><td>VL = VS1</td></tr>
126 <tr><td>Enable</td><td>115.2k baud</td></tr>
127 <tr><td>Connect</td><td>VL to Bot Board's VL</td></tr>
128 </table>
129 <p style="font-weight:bold; margin-bottom:0.4rem;">SSC-32 Servo Connections</p>
130 <table class="ref-table">
131 <tr><th>Pin</th><th>Function</th><th>Pin</th><th>Function</th></tr>
132 <tr><td>P0</td><td>Base Rotate</td><td>P3</td><td>Wrist</td></tr>
133 <tr><td>P1</td><td>Shoulder</td><td>P4</td><td>Gripper</td></tr>
134 <tr><td>P2</td><td>Elbow</td><td>P5</td><td>Wrist Rotate</td></tr>
135 </table>
136 </div>
137 </div>
138 <p><b>Schematic.</b> Double check your connections against the schematic below. Note: if your cable colors don't match the diagram, find a complete listing <a href="https://wiki.lynxmotion.com/info/wiki/lynxmotion/view/servo-erector-set-system/ses-electronics/ses-modules/bot-board-ii/" target="_blank">here</a>.</p>
139 <div style="text-align:center;">
140 <img src="https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/servo-erector-set-robots-kits/ses-v1-robots/ses-v1-arms/al5-programming-tutorial-ps2-botboard/WebHome/rcarm02.png" style="max-width:100%; border:1px solid #ccc; border-radius:4px;">
141 <p style="font-size:12px; color:#666; margin-top:0.3rem;">Schematic.</p>
142 </div>
143 </div>
144 </div>
145
146 <!-- A Step 4 -->
147 <div class="asm-step">
148 <div class="asm-step-header">
149 <div class="asm-step-name">AL5 PS2 RC — Download &amp; Program</div>
150 <div class="asm-step-num">Step 4 / 5</div>
151 </div>
152 <div class="asm-step-body">
153 <div class="asm-step-text">
154 <p>Download and install Basic Micro Studio. Download the arm code <a href="https://github.com/Lynxmotion/Arms/zipball/master" target="_blank">here</a>. Open the .bas file and locate the arm length constants section. Remove the semicolons from in front of the arm you are using. The code defaults to AL5D — if using another arm, add a semicolon before the AL5D line. Make sure the <code>USE_SSC32</code> line is <b>not</b> commented out (as shown in Table 4).</p>
155 <p>When finished, save your program and click "Program." Consult the <a href="https://community.robotshop.com/forum/t/serial-usb-to-serial-port-troubleshooting/17938" target="_blank">serial troubleshooting guide</a> if you have difficulties.</p>
156 </div>
157 <div class="asm-step-figure" style="flex: 0 1 340px;">
158 <p style="font-weight:bold; font-size:12px; margin-bottom:0.4rem;">Table 4 — Arm Selection (SSC-32 mode)</p>
159 <div class="code-block">;[SETUP]
160 ;disable(0)/enable(1) the FSR Gripper
161 EnableFSR con 0
162
163 USE_SSC32 con 1 ;Comment this line to use only the Bot Board
164
165 ;Select Arm type
166 ;NOTE: Enable only one arm!
167 ;AL5A con 1
168 ;AL5B con 1
169 ;AL5C con 1
170 AL5D con 1</div>
171 </div>
172 </div>
173 </div>
174
175 <!-- A Step 5 -->
176 <div class="asm-step">
177 <div class="asm-step-header">
178 <div class="asm-step-name">AL5 PS2 RC — Controller Reference</div>
179 <div class="asm-step-num">Step 5 / 5</div>
180 </div>
181 <div class="asm-fullwidth">
182 <p style="font-weight:bold; margin-bottom:0.5rem;">PS2 Controls — Table 5</p>
183 <table class="ref-table">
184 <tr><th>Button</th><th>Function</th><th>Button</th><th>Function</th></tr>
185 <tr><td>L Joy Up</td><td>Gripper Up</td><td>R Joy Up</td><td>Gripper Angle Up</td></tr>
186 <tr><td>L Joy Down</td><td>Gripper Down</td><td>R Joy Down</td><td>Gripper Angle Down</td></tr>
187 <tr><td>L Joy Left</td><td>Gripper Back</td><td>R Joy Left</td><td>Base Rotate Left</td></tr>
188 <tr><td>L Joy Right</td><td>Gripper Away</td><td>R Joy Right</td><td>Base Rotate Right</td></tr>
189 <tr><td>L1</td><td>Gripper Close</td><td>R1</td><td>Wrist Rotate CW</td></tr>
190 <tr><td>L2</td><td>Gripper Open</td><td>R2</td><td>Wrist Rotate CCW</td></tr>
191 <tr><td>L3</td><td>N/A</td><td>R3</td><td>N/A</td></tr>
192 <tr><td>D-Pad Up</td><td>N/A</td><td>△ Triangle</td><td>Center Wrist Rotate</td></tr>
193 <tr><td>D-Pad Down</td><td>N/A</td><td>X Cross</td><td>Fully Open Gripper</td></tr>
194 <tr><td>D-Pad Left</td><td>N/A</td><td>□ Square</td><td>N/A</td></tr>
195 <tr><td>D-Pad Right</td><td>N/A</td><td>O Circle</td><td>N/A</td></tr>
196 <tr><td>Start</td><td>Enable / Disable Arm</td><td>Select</td><td>N/A</td></tr>
197 </table>
198 </div>
199 </div>
200
201 <!-- ── SECTION B ── -->
202 <div class="section-header">Method B — Bot Board II / Basic Atom Pro 28 Only (No SSC-32)</div>
203
204 <!-- B Step 1 -->
205 <div class="asm-step">
206 <div class="asm-step-header">
207 <div class="asm-step-name">AL5 PS2 RC — Install Bot Board II</div>
208 <div class="asm-step-num">Step 1 / 4</div>
209 </div>
210 <div class="asm-step-body">
211 <div class="asm-step-text">
212 <p>Install the Bot Board as shown in Figure 1. Wire the Bot Board II as shown in the schematic and table in Step 2. Verify all jumpers are correct.</p>
213 </div>
214 <div class="asm-step-figure">
215 <img src="https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/servo-erector-set-robots-kits/ses-v1-robots/ses-v1-arms/al5-programming-tutorial-ps2-botboard/WebHome/bbiiarm.jpg">
216 <span>Figure 1.</span>
217 </div>
218 </div>
219 </div>
220
221 <!-- B Step 2 — tables + schematic -->
222 <div class="asm-step">
223 <div class="asm-step-header">
224 <div class="asm-step-name">AL5 PS2 RC — Configure Jumpers &amp; Connections</div>
225 <div class="asm-step-num">Step 2 / 4</div>
226 </div>
227 <div class="asm-step-body">
228 <div class="asm-step-text">
229 <p>Configure the Bot Board II as illustrated in Table 2.</p>
230 </div>
231 </div>
232 <div class="asm-fullwidth">
233 <div style="display:flex; flex-wrap:wrap; gap:1.5rem; margin-bottom:1rem;">
234 <div style="flex:1 1 280px;">
235 <p style="font-weight:bold; margin-bottom:0.4rem;">Bot Board II Jumpers</p>
236 <table class="ref-table" style="margin-bottom:0.75rem;">
237 <tr><th>Action</th><th>Setting</th></tr>
238 <tr><td>Connect</td><td>6.0VDC battery to VS</td></tr>
239 <tr><td>Connect</td><td>9.0VDC battery to VL</td></tr>
240 <tr><td>Enable</td><td>Speaker</td></tr>
241 <tr><td>Connect</td><td>I/O 0-3 Power Bus to VS</td></tr>
242 <tr><td>Connect</td><td>I/O 4-7 Power Bus to VS</td></tr>
243 <tr><td>Connect</td><td>I/O 12-15 Power Bus to 5V</td></tr>
244 </table>
245 </div>
246 <div style="flex:1 1 280px;">
247 <p style="font-weight:bold; margin-bottom:0.4rem;">Bot Board II Connections (Table 2)</p>
248 <table class="ref-table">
249 <tr><th>Pin</th><th>Function</th><th>Pin</th><th>Function</th></tr>
250 <tr><td>P0</td><td>Base Rotate</td><td>P8</td><td>N/A</td></tr>
251 <tr><td>P1</td><td>Shoulder</td><td>P9</td><td>Speaker</td></tr>
252 <tr><td>P2</td><td>Elbow</td><td>P10</td><td>N/A</td></tr>
253 <tr><td>P3</td><td>Wrist</td><td>P11</td><td>N/A</td></tr>
254 <tr><td>P4</td><td>Gripper</td><td>P12</td><td>PS2 Data</td></tr>
255 <tr><td>P5</td><td>Wrist Rotate</td><td>P13</td><td>PS2 Command</td></tr>
256 <tr><td>P6</td><td>N/A</td><td>P14</td><td>PS2 Select</td></tr>
257 <tr><td>P7</td><td>N/A</td><td>P15</td><td>PS2 Clock</td></tr>
258 </table>
259 </div>
260 </div>
261 <p><b>Schematic.</b> Double check your connections against the schematic below. Note: if your cable colors don't match the diagram, find a complete listing <a href="https://wiki.lynxmotion.com/info/wiki/lynxmotion/view/servo-erector-set-system/ses-electronics/ses-modules/bot-board-ii/" target="_blank">here</a>.</p>
262 <div style="text-align:center;">
263 <img src="https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/servo-erector-set-robots-kits/ses-v1-robots/ses-v1-arms/al5-programming-tutorial-ps2-botboard/WebHome/rcarm03.png" style="max-width:100%; border:1px solid #ccc; border-radius:4px;">
264 <p style="font-size:12px; color:#666; margin-top:0.3rem;">Schematic.</p>
265 </div>
266 </div>
267 </div>
268
269 <!-- B Step 3 -->
270 <div class="asm-step">
271 <div class="asm-step-header">
272 <div class="asm-step-name">AL5 PS2 RC — Download &amp; Program</div>
273 <div class="asm-step-num">Step 3 / 4</div>
274 </div>
275 <div class="asm-step-body">
276 <div class="asm-step-text">
277 <p>Download and install Basic Micro Studio. Download the arm code <a href="https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/servo-erector-set-robots-kits/ses-v1-robots/ses-v1-arms/WebHome/ps2arm2.zip" target="_blank">here</a>. Open the .bas file and locate the arm length constants section. Remove the semicolons from in front of the arm you are using. The code defaults to AL5D — if using another arm, add a semicolon before the AL5D line. Make sure the <code>USE_SSC32</code> line is <b>commented out</b> (as shown in Table 3).</p>
278 <p>When finished, save your program and click "Program." Consult the <a href="https://community.robotshop.com/forum/t/serial-usb-to-serial-port-troubleshooting/17938" target="_blank">serial troubleshooting guide</a> if you have difficulties.</p>
279 </div>
280 <div class="asm-step-figure" style="flex: 0 1 340px;">
281 <p style="font-weight:bold; font-size:12px; margin-bottom:0.4rem;">Table 3 — Arm Selection (Bot Board only)</p>
282 <div class="code-block">;[SETUP]
283 ;disable(0)/enable(1) the FSR Gripper
284 EnableFSR con 0
285
286 ;USE_SSC32 con 1 ;Comment this line to use only the Bot Board
287
288 ;Select Arm type
289 ;NOTE: Enable only one arm!
290 ;AL5A con 1
291 ;AL5B con 1
292 ;AL5C con 1
293 AL5D con 1</div>
294 </div>
295 </div>
296 </div>
297
298 <!-- B Step 4 -->
299 <div class="asm-step">
300 <div class="asm-step-header">
301 <div class="asm-step-name">AL5 PS2 RC — Controller Reference</div>
302 <div class="asm-step-num">Step 4 / 4</div>
303 </div>
304 <div class="asm-fullwidth">
305 <p style="font-weight:bold; margin-bottom:0.5rem;">PS2 Controls — Table 4</p>
306 <table class="ref-table">
307 <tr><th>Button</th><th>Function</th><th>Button</th><th>Function</th></tr>
308 <tr><td>L Joy Up</td><td>Gripper Up</td><td>R Joy Up</td><td>Gripper Angle Up</td></tr>
309 <tr><td>L Joy Down</td><td>Gripper Down</td><td>R Joy Down</td><td>Gripper Angle Down</td></tr>
310 <tr><td>L Joy Left</td><td>Gripper Back</td><td>R Joy Left</td><td>Base Rotate Left</td></tr>
311 <tr><td>L Joy Right</td><td>Gripper Away</td><td>R Joy Right</td><td>Base Rotate Right</td></tr>
312 <tr><td>L1</td><td>Gripper Close</td><td>R1</td><td>Wrist Rotate CW</td></tr>
313 <tr><td>L2</td><td>Gripper Open</td><td>R2</td><td>Wrist Rotate CCW</td></tr>
314 <tr><td>L3</td><td>N/A</td><td>R3</td><td>N/A</td></tr>
315 <tr><td>D-Pad Up</td><td>N/A</td><td>△ Triangle</td><td>Center Wrist Rotate</td></tr>
316 <tr><td>D-Pad Down</td><td>N/A</td><td>X Cross</td><td>Fully Open Gripper</td></tr>
317 <tr><td>D-Pad Left</td><td>N/A</td><td>□ Square</td><td>N/A</td></tr>
318 <tr><td>D-Pad Right</td><td>N/A</td><td>O Circle</td><td>N/A</td></tr>
319 <tr><td>Start</td><td>Enable / Disable Arm</td><td>Select</td><td>N/A</td></tr>
320 </table>
321 </div>
322 </div>
323
324 </div>
325 {{/html}}
Copyright RobotShop 2018