Random header image... Refresh for more!

Needs a bit of adjustment.

The button pressing motor just hit the button so hard that it knocked the paddle out of the cage AND knocked the entire motor assembly off the base.

I think I need to tune the power levels a bit…

February 28, 2010   No Comments

Serialization FTW!

NXC has a basic serializer.

Flatten(obj) gives you a “string” representation of the item you pass it.

UnflattenVar(str, obj) will take the “string” and turn it into an object.

I put “string” in quotes, because it’s really just bytes, so you’re not getting a text representation of the object, it’s just moving a byte array around.  Still, it’s very useful.  It’s letting me pass a small packet to the NXT with one Bluetooth message, instead of three.

February 28, 2010   No Comments

Victory At Last!

So, I finally got a new paddle cage put together.  While the old one was all stylish and minimalist, this one looks like it’s built out of Legos.  Real Legos, too, not those lame Technic beams.

Features include gearing to hopefully reduce the impact of the motor overrun, a button pressing motor (Not yet active), and flexible support arm for the angled knob.

I wrote a test program that will repeatedly rotate it like crazy and hopefully shake out the bugs.  Here’s video of it in action.

Of course, what kind of test would it be if it didn’t end in catastrophic structural failure?  Unfortunately, the camera was not rolling for the chaos, but I assure you it was about as spectacular as it could be given what it is.  Anyway, I did record the aftermath.

The flaw is fairly obvious in the first video, there’s some tall connector blocks on the spinner that kept knocking against the gear bar.  Eventually one of them caught and didn’t knock loose, but the motor spun the 360 anyway.  It kinda popped loose for a bit, then shuddered, before eventually collapsing.  I’ve since fixed the problem1 and had it run for upwards of ten minutes without issue.

It feels good to have some forward progress.

For those curious, the paddle in the cage is one of the Indy 500 Driving Paddles with a free 360 degree range of motion.  That’s how it was able to spin all it wanted without running into the range limitation that’s in a normal paddle.

  1. I was going to fix it before even running it the first time, but I wanted to see if it would cause a catastrophic structural failure… []

February 27, 2010   No Comments

Still building…

I’ve managed to get a centered spinner arm built and a new cage that can handle a button presser motor.  I still have to figure out how to get the spinner arm positioned so that it can fit on the knob correctly.  Atari Paddle knobs are at a slight angle, and Legos are not at a slight angle, so that’s going to be a problem.

February 26, 2010   No Comments

Huh. How’d I miss that?

My paddle gripper isn’t centered on the paddle knob.  I hadn’t noticed that before.  That would be why the paddle worked better when it wasn’t constrained in the cage:  It could move where it needed to be to counteract the off-balance.

I’m going to have to try to fix that…

February 26, 2010   No Comments

Stopping Power

I’ve been able to write an NXC application that will turn the motor a certain number of degrees, then stop instantly.  No waggle.  Trouble is that the number of degrees it goes doesn’t seem to be directly connected to the number of degrees I tell it to go.  It’s always a little bit more.  For instance, I tell it to go 10 degrees and it goes 23.  I tell it to go 360 degrees and it goes 420.

But, it seems to be consistent.  It seems to overrun by the same amount each time you tell it to go a certain distance.  That means that I should be able to compensate for it.  However, if a ten degree turn causes a 13 degree overrun, that really sucks.  I don’t know that there’s going to be a way to compensate for that, given that most of my movements will need to be less than 10 degrees.

Maybe it’s time to learn a little something about gears, too…

February 26, 2010   No Comments

That’s What I’m Talking About.

task main()
{
  TextOut(0, LCD_LINE1, "Starting in 2s");
  Wait(2000);
 
  TextOut(0, LCD_LINE1, "Rotate 45 +");
  RotateMotor(OUT_A, 75, 45);
 
  TextOut(0, LCD_LINE1, "Rotate 45 -");
  RotateMotor(OUT_A, -75, 45);

  TextOut(0, LCD_LINE1, "Rotate 360 + x2");
  RotateMotor(OUT_A, 75, 360);
  RotateMotor(OUT_A, 75, 360);

  TextOut(0, LCD_LINE1, "Rotate 180 -");
  RotateMotor(OUT_A, -75, 180);
}

February 26, 2010   No Comments

What is NXC?

What is NXC?

That’s a really good question…  I’m not exactly sure.

It’s “Not eXactly C”, a programming language developed for programming Mindstorm NXT bricks.  It’s supposed to be similar to C.  There’s also the related language NBC, which is an assembly-like language for the NXT.  I’m hoping that either one of them will be easier to deal with than the default NXT-G programming language, which reminds me of a bad symbol puzzle from a Myst game.

BricxCC is an IDE for NXC/NBC and whatever the RCX bricks used.  It’s available from here:  http://bricxcc.sourceforge.net/

NXC and NBC information is here: http://bricxcc.sourceforge.net/nbc/

February 26, 2010   No Comments

That does it.

The motor still works.

Bluetooth communication still works.

I can still drive the motor from an application on my computer

I just can’t drive the motor through the NXT-G application that’s supposed to be controlling the motor.

So, it’s time for a change.  Let’s go learn NXC, shall we?

February 26, 2010   No Comments

Well… That didn’t work.

So, I thought, “Hey, there’s a firmware upgrade for the NXT, maybe that will help.”

So, I installed the firmware update.

So, now the motor doesn’t move at all.

WONDERFUL.

February 26, 2010   No Comments