One of the benefits of the .NET Gadgeteer design is that it
provides ready-to-use hardware modules. Module designers can
build libraries in such a way that they take care of the lower-
level communication protocols and electrical signals that need
to take place between the mainboard and the modules. Users of
those modules can simply connect the hardware together, and use
the high-level programming interfaces provided by the libraries.
At the same time, .NET Gadgeteer is just as much about
extensibility as it is about ease of use. To this end, the
Gadgeteer.Interfaces namespace provides direct access to the
most commonly used communication and electrical input/output
capabilities of the mainboard. Interfaces are not usually
accessed directly from a Gadgeteer application, and are more
regularly used inside module libraries as a way to control or
communicate with the module hardware. For example, a module
library might internally use a DigitalInput interface to monitor
the state of a button, a DigitalOutput to c