Little Wire is a little multiheaded animal who pokes in a USB port, and uploads programs to AVR and PIC chips. But Little Wire does so much more - and that's what this library is about. The littlewire.cc gadget exposes four digital wires and a five volt power supply. Those four wires can each be individually controlled, with three capable of varying brightness of lights, two capable of controlling motors and servos, two 10-bit analog inputs, a temperature sensor, a Serial Peripheral Interface, an i2c interface, an WS2811 (also WS2812) interface, and a 1-wire interface.
Eventually littlewire.rb hopes to share fun, simple, principal of least surprise ruby interfaces to all of these.
require 'littlewire' wire = LittleWire.connect # connects to the first Little Wire on your computer wire.pin_mode :pin3, :out loop do wire.digital_write :pin3, :vcc # connect pin3 to 5v sleep 0.5 wire.digital_write :pin3, :gnd # connect pin3 to ground sleep 0.5 end
And so it is that the ruby on the computer did remotely control the Little Wire's
digital port. Don't forget a resistor for that LED of yours! If you don't have a
resistor handy, add
wire.pin_mode :pin3 => :input before
loop do to use
Little Wire's internal 20kohm resistor and keep that light shining.
Little Wire is such a small creature it's possible perhaps to implement every way
you might want to use it! Every method name and every symbol. I've tried to do this
a bit. My hope is that you'll play with littlewire in irb (or better yet
pry) and everything you try just works. To that end, littlewire
wiringStyleMethods, and has methods like
digitalWrite(:pin1, true) - familliar to arduinoers but also syntaxes like
mywire[:d1] = true. Initialization sequences automatically run the moment you try
to use features, and they always try to make sure littlewire is correctly configured
for the task at hand, while not making any unnecessary requests. The only thing
littlewire.rb doesn't do (yet) is program other chips - use avrdude for that.
what's it good for?
You could use the three pulse width modulated analog outputs to control an RGB light adjusting the mood of your batcave at the click of a button. Hook it up to displays, memory, sensors, iButtons, RFID readers, digital radios, motors, switches, fairy lights... whatever floats your boat really. The possabilities are not especially limited. Most projects you might use an Arduino for can be done with a Little Wire if you don't mind leaving a computer turned on connected to it, and with the advent of Raspberry Pi, that's not all that bad of an idea. I use my Little Wire to quickly test ideas before changing them to C and uploading them to cheaper avr tiny chips (also using the Little Wire to program them)
littlewire.rb is experimental (till it is released as 1.0 via rubygems) and there's a pretty good chance the API will change a bit until then. Not to worry - rubygems have a mechanism for you to require a specific version of littlewire.rb, ensuring your programs always work, so you can start building stuff on it today!