212 |
:width: 7.5cm |
:width: 7.5cm |
213 |
:label: figrequired |
:label: figrequired |
214 |
|
|
215 |
The non-LEGO parts and tools required for a controller. |
The non-LEGO parts and tools required for a controller. |
216 |
A USB mouse would be preferred to the PS/2 mouse |
A USB mouse would be preferred to the PS/2 mouse |
217 |
shown in the picture, since several can be connected |
shown in the picture, since several can be connected |
218 |
to a computer simultaneously as separate input sources. |
to a computer simultaneously as separate input sources. |
219 |
|
|
220 |
.. figure:: mouseopen.jpg |
.. figure:: mouseopen.jpg |
221 |
:width: 7.5cm |
:width: 7.5cm |
222 |
:label: figmouseopen |
:label: figmouseopen |
223 |
|
|
224 |
The mouse, opened with the screwdriver. The screwdriver |
The mouse, opened with the screwdriver. The screwdriver |
225 |
will not be needed after this step. |
will not be needed after this step. |
226 |
|
|
227 |
.. figure:: mousemechanism.jpg |
.. figure:: mousemechanism.jpg |
228 |
:width: 7.5cm |
:width: 7.5cm |
229 |
:label: figmousemechanism |
:label: figmousemechanism |
230 |
|
|
231 |
The mechanism of the mouse: the mouse ball, which rotates |
The mechanism of the mouse: the mouse ball, which rotates |
232 |
from contact with the underlying surface, rotates |
from contact with the underlying surface, rotates |
233 |
the two axles whose motion is then detected. |
the two axles whose motion is then detected. |
234 |
|
|
235 |
|
|
236 |
.. figure:: optomechanism.jpg |
.. figure:: optomechanism.jpg |
237 |
:width: 7.5cm |
:width: 7.5cm |
238 |
:label: figoptomechanism |
:label: figoptomechanism |
239 |
|
|
240 |
In optomechanical mice, the motion of the axles is detected |
In optomechanical mice, the motion of the axles is detected |
241 |
by the IR light gate whose beam is cut by the slitted disk. |
by the IR light gate whose beam is cut by the slitted disk. |
242 |
|
|
243 |
Figures [ref-figrequired]_ - [ref-figoptomechanism]_ explain |
Figures [ref-figrequired]_ - [ref-figoptomechanism]_ explain |
244 |
the internal mechanism of optomechanical mice, |
the internal mechanism of optomechanical mice, |
258 |
:width: 7.5cm |
:width: 7.5cm |
259 |
:label: figwheelmechanism1 |
:label: figwheelmechanism1 |
260 |
|
|
261 |
The principle behind the current version of |
The principle behind the current version of |
262 |
our interface between the optomechanical mouse and |
our interface between the optomechanical mouse and |
263 |
LEGO pieces: driving the mouse axles by a rubber LEGO tyre. |
LEGO pieces: driving the mouse axles by a rubber LEGO tyre. |
264 |
A smooth tyre (Bricklink part no 132-old) |
A smooth tyre (Bricklink part no 132-old) |
265 |
works even better, but they are currently |
works even better, but they are currently |
266 |
in short supply. |
in short supply. |
267 |
|
|
268 |
The third and so far final solution is to use the mouse's own |
The third and so far final solution is to use the mouse's own |
269 |
mechanism, simply driving it using a LEGO rubber tyre |
mechanism, simply driving it using a LEGO rubber tyre |
279 |
:width: 7.5cm |
:width: 7.5cm |
280 |
:label: figpressmechparts |
:label: figpressmechparts |
281 |
|
|
282 |
The LEGO parts for the driving mechanism |
The LEGO parts for the driving mechanism |
283 |
|
|
284 |
.. figure:: pressmechanism1.jpg |
.. figure:: pressmechanism1.jpg |
285 |
:width: 7.5cm |
:width: 7.5cm |
286 |
:label: figpressmechanism1 |
:label: figpressmechanism1 |
287 |
|
|
288 |
The driving mechanism assembled. The mechanism is attached |
The driving mechanism assembled. The mechanism is attached |
289 |
to the LEGO framework by the long axle; the driving tyre |
to the LEGO framework by the long axle; the driving tyre |
290 |
is on one end of the 1x5 liftarms and |
is on one end of the 1x5 liftarms and |
291 |
a towball for attaching a rubber band |
a towball for attaching a rubber band |
292 |
at the other. |
at the other. |
293 |
The rubber band is used to pull the towball upwards, |
The rubber band is used to pull the towball upwards, |
294 |
which in turn presses the tyre downwards. |
which in turn presses the tyre downwards. |
295 |
The force is easily adjustable by adjusting the other |
The force is easily adjustable by adjusting the other |
296 |
end of the rubber band. |
end of the rubber band. |
297 |
|
|
298 |
With the pressure mechanism, it is simple to build a housing |
With the pressure mechanism, it is simple to build a housing |
299 |
for the lower part of the mouse case and place the tyre holders |
for the lower part of the mouse case and place the tyre holders |
306 |
:width: 7.5cm |
:width: 7.5cm |
307 |
:label: figframestart |
:label: figframestart |
308 |
|
|
309 |
The beginnings of the housing for the mouse case. |
The beginnings of the housing for the mouse case. |
310 |
|
|
311 |
|
|
312 |
.. figure:: framedrivers.jpg |
.. figure:: framedrivers.jpg |
313 |
:width: 7.5cm |
:width: 7.5cm |
314 |
:label: figframedrivers |
:label: figframedrivers |
315 |
|
|
316 |
The driving mechanisms (using a slightly different version |
The driving mechanisms (using a slightly different version |
317 |
than the one depicted in the previous figures) |
than the one depicted in the previous figures) |
318 |
attached. After the towballs are attached |
attached. After the towballs are attached |
319 |
to rubber bands for pressing the tyres downwards slightly, |
to rubber bands for pressing the tyres downwards slightly, |
320 |
motions from the LEGO axles are accurately translated to mouse |
motions from the LEGO axles are accurately translated to mouse |
321 |
X and Y motions. |
X and Y motions. |
322 |
|
|
323 |
On the software side, the Linux kernel is able to |
On the software side, the Linux kernel is able to |
324 |
pass events from each USB mouse to a different virtual device |
pass events from each USB mouse to a different virtual device |
346 |
:width: 7.5cm |
:width: 7.5cm |
347 |
:label: figloomcontrol |
:label: figloomcontrol |
348 |
|
|
349 |
A fully functional controller prototype, with two |
A fully functional controller prototype, with two |
350 |
absolute arm controls and a wheel control. All three |
absolute arm controls and a wheel control. All three |
351 |
controls have enough friction |
controls have enough friction |
352 |
to retain their position. |
to retain their position. |
353 |
|
|
354 |
We must stress that |
We must stress that |
355 |
this controller is still very much work in progress; |
this controller is still very much work in progress; |
375 |
:width: 7.5cm |
:width: 7.5cm |
376 |
:label: figjoystick |
:label: figjoystick |
377 |
|
|
378 |
A 2D joystick-like controller built from LEGO bricks as |
A 2D joystick-like controller built from LEGO bricks as |
379 |
a proof-of-principle. |
a proof-of-principle. |
380 |
There is no force returning the joystick to its |
There is no force returning the joystick to its |
381 |
center position in this design, but if desired, |
center position in this design, but if desired, |
382 |
that could easily be added (although in that case simply |
that could easily be added (although in that case simply |
383 |
purchasing a commodity |
purchasing a commodity |
384 |
game controller would be easier). |
game controller would be easier). |
385 |
|
|
386 |
Practical tips |
Practical tips |
387 |
============== |
============== |
462 |
:width: 7.5cm |
:width: 7.5cm |
463 |
:label: figoctagonal |
:label: figoctagonal |
464 |
|
|
465 |
A rugged and relatively comfortable octagonal |
A rugged and relatively comfortable octagonal |
466 |
handle built from slopes and inverted slopes. |
handle built from slopes and inverted slopes. |
467 |
|
|
468 |
|
|
469 |
With some more effort, ergonomic handles of any imaginable shape |
With some more effort, ergonomic handles of any imaginable shape |