Skip to main content

Connecting to a HiTechnic prototype board to an Arduino

Connecting to a HiTechnic prototype board to an Arduino.


If you are thinking to yourself, “ Wouldn't it be fun to take a prototype board from Hitechnic and connect it to my Arduino? I wonder if it is possible...” Well I am here to tell you that Yes, indeed it is possible, it is not only possible it works rather nicely, of course - HiTechnic doesn’t really support this and the NXT documentation doesn’t have a section called “Cutting a cable in half to connect it your Arduino” so it took a little research to make it it happen which is why I thought I would share this information with the world.


Step one - the cable 


I took a cable from my mindstorms kit and chopped one end off, I then took some nice stiff jumper wires and soldered them onto the ends so I had something that I could plug into the Arduino.

 Step two - What goes where. 


So the big question was what pins to plug it into on the Arduino. I have an Uno which means that pins A4 and A5 are the i2c SDA and SCL lines, of course power and ground and everything else is nicely labeled and documented on the Arduino,

Not so for the prototype board. Fortunately J1 was labeled on the board itself I then referenced the HDK (hardware developer kit) for the NXT. On page six there is a schematic of an input port pointing out what’s what. It’s a little backward because pin one is J7 in the drawing and the board is labeled J1 so don’t get confused (the wire closest to J1 is 6). However, the figure on page 6 doesn't tell you which is which regarding the SDA and SCL lines - I found that on page 9 the fourth bullet point if you want to see it for yourself.

Armed with this knowledge I took the plunge and plugged it into the Arduino and wrote some code which didn’t work! But nothing melted either so I guess it was a mixed bag.

Step Three - Where oh where is my i2c device? 


As it turns out HiTechnic provides a great page with the device address and the addresses for the various ports on the board etc, the only issue was that my device wasn’t at 0x10 like the site states, it was 0x08. This caused a lot of misery until I found this handy dandy bit of code to scan the i2c bus and tell you the location of anything it finds. Imagine this moment after hours of fighting with this wondering what I had done wrong / failed to understand / etc... etc.. I would go with, clouds parting to reveal the light and sounds of angels in chorus. Now I was in business.

Step Four - A simple sketch to print the version number, manufacturer and sensor type. 

Now that I could talk to the thing I just wanted to verify beyond a shadow of a doubt that is worked The following simple sketch just prints the information about the board over and over. It’s glorious.

Comments

Popular posts from this blog

Making Qunit show passing tests all the time.

So I have recently started testing my JavaScript with Qunit. Yeah! I looked at Jasmine but I just liked QUnit better except for one thing. I wanted to see all the passing tests all the time. I mean you work hard to get all you code properly tested and structured you want some positive feedback right? Qunit doesn’t show your tests unless you fail – bah! If you grab Qunit from GIT you can see that there is a config section at like, line 570 and this look like a great spot to have an option that would let you always show the passing tests in expanded form or whatever but there isn’t an option for this so I you need to add a hack for it. At (or near) line 210 you will find the following. That's it really - just save and you will have a screen full of happy positive feedback all the time. I mean if you have like fatty 500+ scripts it might start to get to be too much but I just wanted people to know who to do this if the wanted the option. Yeah!

Copying items to a output directory using post-build events

Certain times you are going to need to move things to some sort output directory after they are built, for whatever reason - maybe your program is looking for a list of modules that it will load when it fires up (you can do this with prism)? It's easy to do, just go to the "Properties" for your project and select "Build Events". in the box titled "Post-Build event command line" enter your xcopy command. Somthing like this. xcopy "$(TargetDir)PARTSFinderModule.dll" "$(SolutionDir)\MyProject\bin\$(PlatformName)\$(ConfigurationName)\DirectoryModules" /Y That's it.