pcf8591

0.1.0 • Public • Published

pcf8591

Thin I2C wrapper to access the PCF8591 8-bit A/D and D/A converter.

Install

$ npm install pcf8591

Usage

var PCF8591 = require('pcf8591');
 
// Constructor: PCF8591(device, slaveAddress, controlByte),
// defaults to: '/dev/i2c-1', 0x48, 0x00.
var pcf8591 = new PCF8591();
 
// Reconfigure control register following the Datasheet.
pcf8591.configure(0x45);
 
// Discard first reading after POR or read mode change.
pcf8591.read(function(error, sample) {
    console.log('Discarded sample: 0x' + sample.toString(16));
});
pcf8591.readBytes(4, function(error, buffer) {
    console.log('Discarded samples: ' +
                '0x' + buffer[0].toString(16) + ' ' +
                '0x' + buffer[1].toString(16) + ' ' +
                '0x' + buffer[2].toString(16) + ' ' +
                '0x' + buffer[3].toString(16)
               );
});
 
var output = 0x00;
setInterval(function() {
    // Toggle output.
    output ^= 0xff;
    pcf8591.write(output);
    // Read all channels at once.
    pcf8591.readBytes(4, function(error, buffer) {
        console.log('0x' + buffer[0].toString(16) + ' ' +
                    '0x' + buffer[1].toString(16) + ' ' +
                    '0x' + buffer[2].toString(16) + ' ' +
                    '0x' + buffer[3].toString(16)
                   );
    });
}, 500);

Raspberry Pi Setup

$ sudo nano /etc/modules

Add these two lines:

i2c-bcm2708 
i2c-dev
$ sudo nano /etc/modprobe.d/raspi-blacklist.conf

Comment out the I2C module from the blacklist:

#blacklist i2c-bcm2708

To make the I2C device writable create a file:

sudo nano /etc/udev/rules.d/99-i2c.rules

and enter:

KERNEL=="i2c-1", MODE="1666"

Then load kernel module:

$ sudo modprobe i2c-bcm2708

Package Sidebar

Install

npm i pcf8591

Weekly Downloads

3

Version

0.1.0

License

BSD-2-Clause

Last publish

Collaborators

  • j54n1n