UNPKG

johnny-five

Version:

Firmata based Arduino Programming Framework.

154 lines (106 loc) 2.93 kB
# Seven Segment Run with: ```bash node eg/seven-segment.js ``` ```javascript /** * This example uses a single seven-segment display (common anode) and a * 74HC595 shift register. See docs/breadboard/seven-segment.png for wiring. */ var five = require("johnny-five"), board; board = new five.Board(); board.on("ready", function() { var isCommonAnode, digits, segments, sr, led, i; /* This assumes the segments are as follows: A --- F | | B --- <---- G E | | C --- D o DP */ isCommonAnode = true; digits = []; // .GFEDCBA digits[0] = parseInt( "00111111", 2 ); // 0 digits[1] = parseInt( "00000110", 2 ); // 1 digits[2] = parseInt( "01011011", 2 ); // 2 digits[3] = parseInt( "01001111", 2 ); // 3 digits[4] = parseInt( "01100110", 2 ); // 4 digits[5] = parseInt( "01101101", 2 ); // 5 digits[6] = parseInt( "01111101", 2 ); // 6 digits[7] = parseInt( "00000111", 2 ); // 7 digits[8] = parseInt( "01111111", 2 ); // 8 digits[9] = parseInt( "01101111", 2 ); // 9 segments = { // .GFEDCBA a : parseInt( "00000001", 2 ), b : parseInt( "00000010", 2 ), c : parseInt( "00000100", 2 ), d : parseInt( "00001000", 2 ), e : parseInt( "00010000", 2 ), f : parseInt( "00100000", 2 ), g : parseInt( "01000000", 2 ), dp : parseInt( "10000000", 2 ) }; sr = new five.ShiftRegister({ pins: { data: 2, clock: 3, latch: 4 } }); led = new five.Led(5); function invert( num ) { return ((~num << 24) >> 24) & 255; } sr.digit = function( num ) { sr.clear(); sr.send( isCommonAnode ? invert(digits[num]) : digits[num] ); }; sr.segment = function( s ) { sr.clear(); sr.send( isCommonAnode ? invert(segments[s]) : segments[s] ); }; sr.clear = function() { sr.send( isCommonAnode ? 255 : 0 ); }; i = 9; function next() { led.stop(); sr.digit( i-- ); if ( i < 0 ) { i = 9; led.strobe(50); setTimeout( next, 2000 ); } else { setTimeout( next, 1000 ); } } next(); }); ``` ## Breadboard/Illustration <img src="https://raw.github.com/rwldrn/johnny-five/master/docs/breadboard/seven-segment.png"> [docs/breadboard/seven-segment.fzz](https://github.com/rwldrn/johnny-five/blob/master/docs/breadboard/seven-segment.fzz) ## Devices ## Documentation _(Nothing yet)_ ## Contributing All contributions must adhere to the [Idiomatic.js Style Guide](https://github.com/rwldrn/idiomatic.js), by maintaining the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/grunt). ## Release History _(Nothing yet)_ ## License Copyright (c) 2012 Rick Waldron <waldron.rick@gmail.com> Licensed under the MIT license.