// Drive the Grive RGB LCD (a JHD1313m1)
// We can do this in either of two ways
//
// The bext way is to use the upm library. which
// contains support for this device
//
// The alternative way is to drive the LCD directly from
// Javascript code using the i2c interface directly
// This approach is useful for learning about using
// the i2c bus. The lcd file is an implementation
// in Javascript for some of the common LCD functions
// configure jshint
/*jslint node:true, vars:true, bitwise:true, unparam:true */
/*jshint unused:true */
// change this to false to use the hand rolled version
var useUpmVersion = true;
// we want mraa to be at least version 0.6.1
var mraa = require('mraa');
var version = mraa.getVersion();
if (version >= 'v0.6.1') {
console.log('mraa version (' + version + ') ok');
}
else {
console.log('mraa version(' + version + ') is old - this code may not work');
}
useUpm();
/**
* Rotate through a color pallette and display the
* color of the background as text
*/
function rotateColors(display) {
var red = 0;
var green = 0;
var blue = 0;
display.setColor(red, green, blue);
setInterval(function() {
blue += 64;
if (blue > 255) {
blue = 0;
green += 64;
if (green > 255) {
green = 0;
red += 64;
if (red > 255) {
red = 0;
}
}
}
display.setColor(red, green, blue);
display.setCursor(0,0);
display.write('red=' + red + ' grn=' + green + ' ');
display.setCursor(1,0);
display.write('blue=' + blue + ' '); // extra padding clears out previous text
}, 1000);
}
/**
* Use the upm library to drive the two line display
*/
function useUpm() {
var lcd = require('jsupm_i2clcd');
var display = new lcd.Jhd1313m1(0, 0x3E, 0x62);
display.setCursor(1, 1);
display.write('hi there');
display.setCursor(0,0);
display.write('more text');
rotateColors(display);
}
49 projects • 320 followers
Working as a cloud architect for an IoT hardware company
Comments