A javascript library for flip dot, flip disc, and flip digit displays.
- flipdots server draw elaborate visualizations on your flipdisc
- flipdot iOS app control your flipdisc from iOS
- depth camera
- flip digit canvas
$ npm install flipdiscimport { createDisplay } from 'flipdisc'
const device = '/dev/cu.usbserial-AB0OJSKG'
const display = createDisplay([[1], [2]], device)
// wait for the display to connect
await display.ready()
display.send(frameData)import { createDisplay, Panels } from 'flipdisc'
// layout as a 2D array of panel addresses
const layout = [[1, 3, 5], [2, 4, 6]]
// supports multiple RS485 devices
const dev = [{
path: '/dev/cu.usbserial-AB0OJSKG',
addresses: [1, 3, 5],
baudRate: 57600
}, {
path: '/dev/cu.usbserial-AB0ODKET',
addresses: [2, 4, 6],
baudRate: 57600
}]
// or network devices
const devices = [{
path: 'tcp://192.168.0.100:3000',
addresses: [1, 2, 3, 4, 5, 6],
}]
const opt = {
isMirrored: true,
rotation: 90,
panel: {
width: 28,
height: 7,
type: Panels.AlfaZetaPanel
}
}
// or flipdigit
const opt = {
panel: Panels.AlfaZetaSegmentPanel
}
const display = createDisplay(layout, dev, opt)// send a 2D array of frame data (0 = not-flipped, 1 = flipped)
display.send(frameData)
// also accepts a flat 1D array (auto-reshaped to display dimensions)
display.send([0, 1, 1, 0, ...])
// also accepts imageData buffer from a gl or canvas instance
display.send(imageData)
// update a region of the display at position (x, y)
display.sendRegion([[1, 1], [1, 1]], 10, 3)
// for segment displays: send data for vertical and horizontal segments
display.sendSegmentData(verticalSegmentData, horizontalSegmentData)
// clear the display (all zeros)
display.clear()
// fill the display (all ones)
display.fill()
// close all device connections
display.close()
// set inverted
display.setInverted(true)display.width // display width (accounts for rotation)
display.height // display height (accounts for rotation)
display.content // current display data
display.isConnected // connection status
display.info // general display info// wait for the display to be ready
await display.ready()
// or use events
display.on('connected', () => { })
display.on('disconnected', () => { })
display.on('error', (err) => { })- RS485 serial device. e.g. USB to RS485 or Ethernet to RS485
- A flipdisc panel. Currently AlfaZeta panels and Hanover panels supported. Reach out if you want me to support your panel.
