Wishful Coding

Didn't you ever wish your
computer understood you?

Pneumatic Bug

So there you are. This is the result of a day or two of LEGO building, followed by weeks of thinking, sawing and soldering. Lucky for you, you don’t have to go through all that, and can just buy the needed parts.

This cute little bug can walk forwards, backwards and turn around, using 4 pumps on 3 switches. The outer 4 legs can move back and forth, with left and right having an individual pump. The middle legs are connected, and can move up and down.

By tilting the middle leg right, the outer right legs come of the ground, while the middle leg on the left is off the ground, then the outer legs can be repositioned for the next cycle.

There are touch sensors on the middle legs, to detect when they are of the ground.

To build this adorable model, you need your NXT, 4 pneumatic pumps, 1 compressor pump, 3 servo valves and a servo controller.

This is the walking routine in NBC for my custom controller. The concept is the same for the Mindsensors one.

#define tilt 0 #define left 1 #define right 2 #define servoport IN_2

thread main SetSensorLowspeed(servoport) OnFwd(OUT_A, 100)

loop: servo(servoport, left, 150, result) servo(servoport, right, 150, result) servo(servoport, tilt, 100, result) wait 7000

servo(servoport, tilt, 150, result) servo(servoport, left, 100, result) servo(servoport, right, 200, result)

wait 5000

servo(servoport, left, 150, result) servo(servoport, right, 150, result) servo(servoport, tilt, 200, result) wait 7000

servo(servoport, tilt, 150, result) servo(servoport, left, 200, result) servo(servoport, right, 100, result) wait 5000

jmp loop

endt

Download building instructions

DIY Servo Controller

This is another advanced home-made device, It took me weeks to do it. I was looking at the Mindsensors servo controller, when Matt Allen casually mentioned you could make them yourself. Once I set out to make one, I wanted it to do a little bit more.

I thought it would be nice if it could read input from an RC receiver as well. The final design has 2 readable inputs and 3 switchable ones, so you can directly control the servos.

Starting in the top-left corner, going clockwise, there is the PICAXE programmer header, 3 servo outputs, the servo battery connector, the NXT connector, 2 readable inputs and finally 3 switchable inputs. The PICAXE can directly control the outputs, or route them straight to the 3 non-readable inputs, for remote control.

If you know what you’re doing, this is the stripboard layout I designed. Use wisely, and at your own risk.

The code, more or less compatible with the Mindsensors quick mode.

#picaxe20x2
#no_data
'#define switching
setfreq m32

init:
table 0x00, ("V0.1")
table 0x08, ("pepijn")
table 0x10, ("servo")

for b20 = 0 to 0x17
	readtable b20, @ptrinc
next b20

symbol servin1 = w0
symbol servin2 = w1
symbol servpos = b4
symbol servpin = b5
symbol incontrol = b6

servo B.2,150
servo B.3,150
servo B.4,150
pullup %10100000
hi2csetup i2cslave, 0x02
setintflags %01000000,%01000000

main:
pulsin b.1, 1, servin1
pulsin b.0, 1, servin2
put 0x42, word servin1
put 0x44, word servin2

#ifdef switching
if servin1 < 1200 then
	incontrol = 1
	high C.4
	high C.3
	high C.2
else
	incontrol = 0
	low C.4
	low C.3
	low C.2
endif
#else
incontrol = 1
high C.4
high C.3
high C.2
#endif

goto main

interrupt:
setintflags %01000000,%01000000
hi2cflag = 0
if incontrol = 1 then
	get hi2clast, servpos
	let b20 = hi2clast - 0x5A
	lookup b20,(B.2,B.3,B.4),servpin
	servopos servpin,servpos
endif
return
Published on

Compressor Module

If you want to do anything with pneumatics, you need something to generate air pressure. This is the most simple, compact and efficient solution I could think of, using just one pump.

If you think I’m working on something that involves pneumatic parts, you’d be right.

If you want to use more pumps, maybe Sariel has something for you.

Download Building Instructions