Skip to content

Node.js library to interact with a SH1106 display controller

License

Notifications You must be signed in to change notification settings

Mrtenz/node-sh1106

Repository files navigation

node-sh1106

Node.js library to interact with a SH1106 display controller, written in TypeScript. This library is designed to be used with a Raspberry Pi, but may be supported by other devices.

This library is largely based on the Python libraries luma.core and luma.oled.

Currently only SPI is supported. This means that you need to run it with sudo for it to work. I²C support may be added in the future.

Installation

yarn add sh1106

Usage

import { SH1106 } from 'sh1106';

const pad = (input: number): string => {
  return ('0' + input).slice(-2);
};

const getDate = () => {
  const date = new Date();

  return `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;
};

const device = new SH1106();

setInterval(() => {
  // Clear the canvas
  device.canvas.clear();
  
  // Draw the current time at [1, 1] with a size of 2
  device.canvas.text(1, 1, getDate(), 2);
  
  // Update the display
  device.refresh();
}, 1000);

See Mrtenz/binary-pixel-map for documentation on the canvas.

API

new SH1106(width: number = 128, height: number = 64);