Go Down

Topic: Firmata 2.1 - shift register support (Read 1 time) previous topic - next topic


Feb 05, 2010, 10:47 pm Last Edit: Feb 05, 2010, 10:48 pm by Beauty Reason: 1

I want to control an Arduino board by a PC software.
Generally it's very easy with the .NET class System.IO.Ports.

Also I read about the Firmata protocol, which handle the communication between Arduino and an external software.
I'm not afraid to create my own protocol, but I think it's a good thing to use a handy library which still do the work in a handy manner.

Here I found a nice project / library (with tutorial) which handle the protocol in .NET applications:
Arduino <> Firmata <> Visual Basic .NET
(Yes, it's VB, but you can convert the code to C# by tools like this.)

In our project we use 74HC595 shift registers to control about 60 LEDs by a Windows application.

I read that, the Firmata protocol supports shift registers since the version 2.1. Also the Firmata protocol 2.1 is supported by the current Arduino IDE.
Details here:

Unfortunately there is only a note in the first section, but I found no further information in the protocol details. Maybe it uses the same commands like the I2C?

I want to extend the Firmata .NET library to support shift registers.
But I don't know where I get the needed information.
So I ask you.

Which parts of the wiki page V2.1ProtocolDetails have to be implemented? Or are the needed details not on this page?

Is there an other library or source code which still implements the protocol extension for shift registers? (The programming language doesn't matter.)
So I could look how it's done or just port the code.

Is there somewhere else useful code which shows how I can handle shift registers by the firmata protocol?

I searched for it, but found no related pages.

An alternative would be to implement the register control in the PC application (signals for clockpin, latch pin, serial input pin) and send the signals (by Firmata 2.0) to the pins which are connected to the registers.
Generaly this should work, but I suppose it's no fine solution. This would increase the traffic and maybe connection delays disturb the logic (e.g. by jitter of the clock signals). Would this solution working well?

Go Up