Can I control a mindstorm servo with Arduino?

I want to control a Mindstorm servo directly (no NXT brick). I haven't been able to find anything about doing this.

Can anyone tell if this is possible before I order one?

Thanks, ~alrkghlaisgrfas

I assume you mean the motor as there is no Mindstorms servo (at least in my set).

These are controlled by the I2C bus but at 3V3. This is possible on the arduino but the I2C bus is normally 5V, so you have to do things to match it up. Either a level converter (I would favor) or hacking the library to stop the internal pull up resistors being activated.

For clarity, this is the motor I am talking about:

Also, by level converter, are you referring to this sort of thing?

Thanks for your help.

Looks similar to my motor. Anyway all the peripherals are I2C on the Lego system.

are you referring to this sort of thing?

No that is only a single direction level conversion, you need a bidirectional one. Just two transistors back to back will do it.

I have made a NXT Motor Shield. Look in this post for details:,65022.msg475002.html#msg475002

Pretty sure the motors are not i2c, and that the motors don't have any on board smarts, Lauszus' post has the pinout.

Some of the peripherals use i2c, some you just read analog values off of, and some like the **** ultrasonic rangefinder use a buggy bitbanged implementation of i2c that doesn't work with the wire library and I can't get the thing to talk back to me.