-
Notifications
You must be signed in to change notification settings - Fork 11
Expander Pi Library
Node.js Library to use with Expander Pi Raspberry Pi expansion board from https://www.abelectronics.co.uk
To download to your Raspberry Pi type in terminal:
git clone https://github.com/abelectronicsuk/ABElectronics_NodeJS_Libraries.git
The IO Pi library is located in the /lib/expanderpi/ directory
The example files are located in the /examples/expanderpi/ directory
The Expander Pi library requires the rpio library to run.
Install from https://www.npmjs.com/package/rpio with
npm install rpio
The Expander Pi library is split up into four classes, ADC, DAC, IO and RTC.
The ExpanderPiADC class controls the MCP3208 12 bit ADC.
readADCVoltage(channel, mode)
Read the voltage from the selected channel on the ADC
Parameters: channel - 1 or 2; mode - 0 = single ended, 1 = differential
Returns: number as float between 0 and 2.048
readADCRaw(channel, mode)
Read the raw value from the selected channel on the ADC
Parameters: channel - 1 or 2; mode - 0 = single ended, 1 = differential
Returns: int
setADCRefVoltage(voltage)
Set the reference voltage for the analogue to digital converter.
The ADC uses the raspberry pi 3.3V power as a voltage reference so using this method to set the reference to match the exact output voltage from the 3.3V regulator will increase the accuracy of the ADC readings.
Parameters: voltage - float between 0.0 and 7.0
Returns: null
To use the ExpanderPiADC class in your code you must first import the Expander Pi library:
var expanderpi = require('../../lib/expanderpi/expanderpi');
Next you must initialise the ExpanderPiADC object:
var adc = new ExpanderPiADC();
Set the reference voltage.
adc.setADCRefVoltage(4.096);
Read the voltage from channel 1 and display on the screen
console.log('Reading 1 Voltage: ' + adc.readADCVoltage(1, 0));
The ExpanderPiDAC class controls the MCP4822 12 bit DAC.
setDACVoltage(channel, voltage)
Set the voltage for the selected channel on the DAC. The DAC has two gain values, 1 or 2, which can be set when the ADCDAC object is created. A gain of 1 will give a voltage between 0 and 2.047 volts. A gain of 2 will give a voltage between 0 and 4.096 volts.
Parameters: channel - 1 or 2, voltage - sets the voltage for the selected channel.
Returns: null
setDACRaw(channel, value)
Set the raw value from the selected channel on the DAC
Parameters: channel - 1 or 2, value - int between 0 and 4095
Returns: null
setDACGain(gain)
Set the gain for the DAC. This is used to set the output based on the reference voltage of 2.048V.
When the gain is set to 2 the maximum voltage will be approximately 4.096V.
Parameters: gain - 1 or 2
Returns: null
To use the ExpanderPiDAC class in your code you must first import the Expander Pi library:
var expanderpi = require('../../lib/expanderpi/expanderpi');
Next you must initialise the ExpanderPiDAC object:
var dac = new ExpanderPiDAC();
Set the DAC gain to be 1
dac.setDACGain(1);
Set the voltage on channel 1 to be 0.8V and channel 2 to be 1.5V.
dac.setDACVoltage(1, 0.8);
dac.setDACVoltage(2, 1.5);
The ExpanderPiIO class controls the MCP23017 16 pin I/O controller.
setPinDirection(pin, direction):
Sets the IO direction for an individual pin
Parameters: pin - 1 to 16, direction - 1 = input, 0 = output
Returns: null
setPortDirection(port, direction):
Sets the IO direction for the specified IO port
Parameters: port - 0 = pins 1 to 8, port 1 = pins 9 to 16, direction - 1 = input, 0 = output
Returns: null
setPinPullup(pin, value)
Set the internal 100K pull-up resistors for an individual pin
Parameters: pin - 1 to 16, value: 1 = Enabled, 0 = Disabled
Returns: null
setPortPullups(port, value)
Set the internal 100K pull-up resistors for the selected IO port
Parameters: port - 0 or 1, value: 0x00 to 0xFF
Returns: null
writePin(pin, value)
Write to an individual pin 1 - 16
Parameters: pin - 1 to 16, value - 1 = Enabled, 0 = Disabled
Returns: null
writePort(self, port, value)
Write to all pins on the selected port
Parameters: port - 0 = pins 1 to 8, port 1 = pins 9 to 16, value - number between 0 and 255 or 0x00 and 0xFF
Returns: null
readPin(pin)
Read the value of an individual pin 1 - 16
Parameters: pin: 1 to 16
Returns: 0 = logic level low, 1 = logic level high
readPort(port)
Read all pins on the selected port
Parameters: port - 0 = pins 1 to 8, port 1 = pins 9 to 16
Returns: number between 0 and 255 or 0x00 and 0xFF
invertPort(port, polarity)
Invert the polarity of the pins on a selected port
Parameters: port - 0 = pins 1 to 8, port 1 = pins 9 to 16, polarity - 0 = same logic state of the input pin, 1 = inverted logic state of the input pin
Returns: null
invertPin(pin, polarity)
Invert the polarity of the selected pin
Parameters: pin - 1 to 16, polarity - 0 = same logic state of the input pin, 1 = inverted logic state of the input pin
Returns: null
mirrorInterrupts(value)
Mirror Interrupts
Parameters: value - 1 = The INT pins are internally connected, 0 = The INT pins are not connected. INTA is associated with PortA and INTB is associated with PortB
Returns: null
setInterruptType(port, value)
Sets the type of interrupt for each pin on the selected port
Parameters: port 0 = pins 1 to 8, port 1 = pins 9 to 16, value: 1 = interrupt is fired when the pin matches the default value, 0 = the interrupt is fired on state change
Returns: null
setInterruptPolarity(value)
This sets the polarity of the INT output pins Parameters: 1 = Active-high, 0 = Active-low Returns: null
setInterruptDefaults(port, value)
These bits set the compare value for pins configured for interrupt-on-change on the selected port.
If the associated pin level is the opposite from the register bit, an interrupt occurs.
Parameters: port 0 = pins 1 to 8, port 1 = pins 9 to 16, value: compare value
Returns: null
setInterruptOnPort(port, value)
Enable interrupts for the pins on the selected port
Parameters: port 0 = pins 1 to 8, port 1 = pins 9 to 16, value: number between 0 and 255 or 0x00 and 0xFF
Returns: null
setInterruptOnPin(pin, value)
Enable interrupts for the selected pin
Parameters: pin - 1 to 16, value - 0 = interrupt disabled, 1 = interrupt enabled
Returns: null
readInterruptStatus(port)
Read the interrupt status for the pins on the selected port
Parameters: port 0 = pins 1 to 8, port 1 = pins 9 to 16
Returns: status
readInterruptCapture(port)
Read the value from the selected port at the time of the last interrupt trigger
Parameters: port 0 = pins 1 to 8, port 1 = pins 9 to 16
Returns: status
resetInterrupts()
Set the interrupts A and B to 0
Parameters: null
Returns: null
To use the ExpanderPiIO class in your code you must first import the Expander Pi library:
var expanderpi = require('../../lib/expanderpi/expanderpi');
Next you must initialise the ExpanderPiIO object
var bus = new ExpanderPiIO();
We will read the inputs 1 to 8 from bus 1 so set port 0 to be inputs and enable the internal pull-up resistors
bus.setPortDirection(0, 0xFF);
bus.setPortPullups(0, 0xFF);
You can now read the pin 1 with:
console.log('Pin 1: %d', bus.readPin(1));
The ExpanderPiRTC class controls the DS1307 real-time clock.
setDate(date)
Set the date and time on the RTC using a javascript Date object
Parameters: date
Returns: null
readDate()
Returns the date from the RTC as a javascript Date object
Returns: date object
enableOutput()
Enable the square-wave output on the SQW pin.
Returns: null
disableOutput()
Disable the square-wave output on the SQW pin.
Returns: null
setFrequency(frequency)
Set the frequency for the square-wave output on the SQW pin.
Parameters: frequency - options are: 1 = 1Hz, 2 = 4.096KHz, 3 = 8.192KHz, 4 = 32.768KHz
Returns: null
writeMemory(address, valuearray)
Write to the memory on the DS1307. The DS1307 contains 56 - Byte, battery - backed RAM with Unlimited Writes
Parameters: address - 0x08 to 0x3F
Parameters: valuearray - byte array (Uint8Array) containing data to be written to memory
Returns: null
readMemory(address, valuearray)
Read from the memory on the DS1307. The DS1307 contains 56 - Byte, battery - backed RAM with Unlimited Writes
Parameters: address - 0x08 to 0x3F
Parameters: length - Up to 32 bytes. length can not exceed the avaiable address space.
Returns: Returns a Uint8Array type array of the data read from memory
To use the ExpanderPiRTC class in your code you must first import the Expander Pi library:
var expanderpi = require('../../lib/expanderpi/expanderpi');
Next you must create an ExpanderPiRTC object:
var rtc = new ExpanderPiRTC();
Set the current time using a date object:
var d = new Date(2016, 07, 04, 10, 23, 00, 00);
rtc.setDate(d);
Enable the square-wave output at 8.192KHz on the SQW pin:
rtc.set_frequency(3)
rtc.enable_output()
Read the current date and time from the RTC at 1 second intervals:
var myClock = setInterval(clockTimer, 1000);
function clockTimer() {
console.log(rtc.readDate().toISOString());
}