Sunday, 16 February 2014

Controlling a Berry Clip from Node.js

I am looking to try and run a workshop session at my local developers group, the group contains developers form a range of background and hence a number of languages, this makes workshops interesting. To be able to do any interesting projects with a Raspberry Pi I would prefer people are spend their thinking about problems and not battling which ever language is currently running on my RPi devices. A recent pole suggested that javascript was the most widely used language among the group so I decided to see could be achieved in Node.js.

I found a few libraries/modules that allowed gpio access and decided to try onoff since it the example code included using an event to trap button pushes.

I am not quite sure currently what my final project will be but starting off with a simple project I decided to try and control my Berry Clip 6 LED addon board.

The below code selects a random LED to turn on and turns off the previously lit one. Full Information and a run script can be found in the README.ME
var Gpio = require('onoff').Gpio,
    ledA = new Gpio(04, 'out'),
    ledB = new Gpio(17, 'out'),
    ledC = new Gpio(22, 'out'),
    ledD = new Gpio(10, 'out'),
    ledE = new Gpio(09, 'out'),
    ledF = new Gpio(11, 'out'),
    button = new Gpio(07, 'in', 'both');
var leds=new Array(ledA,ledB,ledC,ledD,ledE,ledF);
var lastLed=ledA;

button.watch(function(err, value) {
  var activeLed=Math.floor(Math.random() * 6);
  lastLed.writeSync(0);
  lastLed=leds[activeLed];
  leds[activeLed].writeSync(value);
});

Code:
https://github.com/qubecad/berry_clip_node

References:

https://github.com/fivdi/onoff
http://www.raspberrypi-spy.co.uk/

No comments: