-
Notifications
You must be signed in to change notification settings - Fork 1
Class: ExpanderPi
This class contains methods to use with the Expander Pi from https://www.abelectronics.co.uk/p/50/expander-pi
Connect()
Connect to the Expander Pi
Parameters: none
Returns: null
IsConnected()
Check if the device is connected
Parameters: none
Returns: boolean
Dispose()
Dispose of the active device
Parameters: none
Returns: null
The ADC supports single ended or differential mode.
In single ended mode each channel acts as an individual single ended input.
In differential mode the inputs are split into four differential pairs.
Setting channel to 1 will make IN1 = IN+ and IN2 = IN-
Setting channel to 2 will make IN1 = IN- and IN2 = IN+
Setting channel to 3 will make IN3 = IN+ and IN4 = IN-
Setting channel to 4 will make IN3 = IN- and IN4 = IN+
Setting channel to 5 will make IN5 = IN+ and IN6 = IN-
Setting channel to 6 will make IN5 = IN- and IN6 = IN+
Setting channel to 7 will make IN7 = IN+ and IN8 = IN-
Setting channel to 8 will make IN7 = IN- and IN8 = IN+
ADCReadVoltage(byte channel, byte mode)
Read the voltage from the selected channel on the ADC.
Parameters: channel (1 to 8)
Parameters: mode (1 = Single Ended Input, 2 = Differential Input)
Returns: (double) voltage
ADCReadRaw(byte channel, byte mode)
Read the raw value from the selected channel on the ADC.
Parameters: channel (1 to 8)
Parameters: mode (1 = Single Ended Input, 2 = Differential Input)
Returns: voltage
double ADCReferenceVoltage { get; set; }
Gets or sets the reference voltage for the analogue to digital converter.
The Expander Pi contains an onboard 4.096V voltage reference.
If you want to use an external reference between 0V and 5V, disconnect the jumper J1 and connect your reference voltage to the Vref pin.
DACSetVoltage(byte channel, double voltage, byte gain)
Set the voltage for the selected channel on the DAC.
Parameters: channel (1 or 2)
Parameters: voltage (Voltage will be between 0 and 2.047V when gain is 1, 0 and 4.096V when gain is 2)
Parameters: gain (1 or 2)
Returns: null
DACSetRaw(byte channel, short value, byte gain)
Set the voltage for the selected channel on the DAC.
Voltage will be between 0 and 2.047V when gain is 1, 0 and 4.096V when gain is 2
Parameters: channel (1 or 2)
Parameters: value (0 to 4095)
Parameters: gain (1 or 2)
Returns: null
IOSetPinDirection(byte pin, bool direction)
Sets the IO direction for an individual pin
Parameters: pin - 1 to 16, direction - true = input, false = output
Returns: null
IOSetPortDirection(byte port, byte direction)
Sets the IO direction for the specified IO port
Parameters: port - 0 = pins 1 to 8, port 1 = pins 9 to 16, direction - true = input, false = output
Returns: null
IOSetPinPullup(byte pin, bool value)
Set the internal 100K pull-up resistors for the selected IO pin
Parameters: pin - 1 to 16, value: true = Enabled, false = Disabled
Returns: null
IOSetPortPullups(byte port, byte value)
Set the internal 100K pull-up resistors for the selected IO port
Parameters: 0 = pins 1 to 8, 1 = pins 9 to 16, value: true = Enabled, false = Disabled
Returns: null
IOWritePin(byte pin, bool value)
Write to an individual pin 1 - 16
Parameters: pin - 1 to 16, value - true = Enabled, false = Disabled
Returns: null
IOWritePort(byte port, byte 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
IOReadPin(byte pin)
Read the value of an individual pin 1 - 16
Parameters: pin: 1 to 16
Returns: false = logic level low, true = logic level high
IOReadPort(byte 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
IOInvertPort(byte port, byte 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
IOInvertPin(byte pin, bool polarity)
Invert the polarity of the selected pin
Parameters: pin - 1 to 16, polarity - false = same logic state of the input pin, true = inverted logic state of the input pin
Returns: null
IOMirrorInterrupts(byte 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
IOSetInterruptPolarity(byte value)
This sets the polarity of the INT output pins
Parameters: 1 = Active - high. 0 = Active - low.
Returns: null
IOSetInterruptType(byte port, byte 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: number between 0 and 255 or 0x00 and 0xFF. 1 = interrupt is fired when the pin matches the default value, 0 = the interrupt is fired on state change
Returns: null
IOSetInterruptDefaults(byte port, byte 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
IOSetInterruptOnPort(byte port, byte 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
IOSetInterruptOnPin(byte pin, bool value)
Enable interrupts for the selected pin
Parameters: pin - 1 to 16, value - true = interrupt enabled, false = interrupt disabled
Returns: null
IOReadInterruptStatus(byte port)
Enable interrupts for the selected pin
Parameters: port 0 = pins 1 to 8, port 1 = pins 9 to 16
Returns: status
IOReadInterruptCapture(byte 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
IOResetInterrupts()
Set the interrupts A and B to 0
Parameters: null
Returns: null
RTCReadMemory(byte address, byte length)
Write to the SRAM memory on the DS1307. Memory range is 0x08 to 0x3F.
Parameters: address - First memory address where the values with be written.
length - Number of bytes to read from memory.
Returns: byte[] - Byte array containing read memory values.
RTCWriteMemory(byte address, byte[] values)
Write to the SRAM memory on the DS1307. Memory range is 0x08 to 0x3F.
Parameters: address - First memory address where the values with be written.
values - Byte array containing values to be written to memory. Array length can not exceed the memory space available.
Returns: null
DateTime RTCDate { get; set; }
Set or get the date and time from the RTC.
Takes a DateTime variable.
Returns: DateTime
byte RTCFrequency { get; set; }
Get or set the frequency of the output pin square-wave.
Options are: 1 = 1Hz, 2 = 4.096KHz, 3 = 8.192KHz, 4 = 32.768KHz
bool RTCOutput { get; set; }
Enable or disable the square-wave output on the SQW pin.
Set output as true of false. Gets output state as true or false.
To use the Expander Pi library in your code you must first import the library dll:
using ABElectronicsUK;
Next you must initialise the ExpanderPi class:
ABElectronicsUK.ExpanderPi expi = new ABElectronicsUK.ExpanderPi();
Next we need to connect to the device and wait for the connection before setting the digital IO ports to be inputs
expi.Connect();
while (!expi.IsConnected){}
expi.IOSetPortDirection(0, 0xFF);
expi.IOSetPortDirection(1, 0xFF);
You can now read the input status from pin 1 on the digital IO bus with:
bool value = expi.IOReadPin(1);