[CCC DEV] Ideas for extending "Plumbing"
Martin Ellis
ellism88 at gmail.com
Wed Feb 16 23:00:23 GMT 2011
Does steve have an account on the community svn?
If not i really think he should! :)
On 16 Feb 2011 22:21, "Steve Pretty" <steve.g.pretty at btinternet.com> wrote:
> I have been looking at some ideas for extending the functionality of
> plumbing. Rather than come up with an arbitrary set of new building
> blocks, I thought about using some form of industry standard. I settled
> on the world of Programmable Logic Controllers, described by IEC 61131.
> (I have to stress, I have no practical experience of these devices - I
> got hold of a text book on the subject, and used that to influence the
> building blocks I have developed).
>
> My aim was to stick with the basic idea of plumbing - launching a set of
> "building blocks" under a PAR, and linking these with a set of CHANs. I
> decided to use the LEVEL type as the primary means of communication
> between my blocks (BYTE is used by some blocks)
>
> I have implemented the following:
>
> Logic blocks - a NOT, and two input AND, OR, NAND, NOR, XOR and EQ
> These blocks in themselves probably have good educational value for
> people wanting to learn combinatorial logic design. It is possible to
> design any combinatorial function from 2 input NAND or 2 input NOR - so
> the student could do their design on paper and then simulate it on the
> Arduino using these blocks.
>
> Basic I/O - digital input, inverting digital input and digital output
> (more or less cloned from plumbing)
>
> Internal Relay blocks - 2 and 4 output - these implement the one to many
> message multicast (delta pattern)
>
> Black Hole - for absorbing unwanted output messages
>
> Timing Blocks - Pulse timer (a retriggerable monostable function), Turn
> On timer - when input goes HIGH, output goes high after a delay, Turn
> off timer - When input goes, LOW, output goes LOW after a delay
>
> Clock block - provides a pulse train which can be gated on and off.
>
> Latches and Flip flops - a two input Set / Reset gate and a Flip / Flop
> (toggle), which is able to be toggled on a HIGH or the LOW message
>
> Counter - a simple count up block. It counts to a maximum byte value
> before cycling back to zero. It outputs current count, and a pulse when
> the maximum count is reached.
>
> Sequencer - takes a pattern array, receives an input byte (e.g. from the
> counter) and generates 4 outputs using the input to index the pattern.
>
> I have working code and a set of test cases.
>
> I plan to work on some further functionality, probably moving into some
> of the analogue aspects.
>
> Is this of any interest - I would be happy to send you the code or place
> it in the community area?
>
> Steve
>
> _______________________________________________
> developers mailing list
> developers at concurrency.cc
> http://www.concurrency.cc/mailman/listinfo/developers
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.concurrency.cc/pipermail/developers/attachments/20110216/9e2a9511/attachment.htm>
More information about the developers
mailing list