The AB Electronics UK Knowledge Base provides support solutions, tutorials and troubleshooting guides.
- Home
- Help and Support
- Knowledge Base
- Code & Languages
- C Library and Demos
- I2C Switch C Library
-
Raspberry Pi
- PCB Header Assembly Jig
- Raspberry Pi GPIO Pins
- Samba Setup on Raspberry Pi
- Set a static IP Address on Raspberry Pi OS Bookworm
- I2C Part 1 - Introducing I2C
- I2C Part 2 - Enabling I2C on the Raspberry Pi
- I2C Part 3 - I2C tools in Linux
- I2C Part 4 - Programming I2C with Python
- SPI and Python on Raspberry Pi OS
- Using Pythonpath with our Python Libraries
- Connecting Development Boards to the Raspberry Pi 400
- General
- Code & Languages
- Raspberry Pi Pico Tutorials
- 1 Wire Pi Tutorials
- ADC Pi Tutorials
- ADC DAC Pi Zero Tutorials
- ADC Differential Pi Tutorials
- Expander Pi Tutorials
-
IO Pi Plus Tutorials
- IO Pi Plus FAQ
- IO Pi Plus Tutorial 1 - The Blinking LED
- IO Pi Plus Tutorial 2 - Push the Button
- IO Pi Plus Tutorial 3 - Introducing Interrupts
- IO Pi Plus Tutorial 4 - More Interrupts
- IO Pi Plus Tutorial - MQTT Reading the Ports
- IO Pi Plus with Raspberry Pi Pico
- IO Pi Plus Tutorial - MQTT Control
- Driving Relays or Higher Loads with the IO Pi Plus
- 16 Channel Opto-Isolated Input Board
- Relay Board for the IO Pi Plus 2.1
- IO Zero 32 Tutorials
- RTC Pi Tutorials
- Serial Pi
- Servo PWM Pi Tutorials
-
Home Assistant
- Using 1 Wire with Home Assistant and the Raspberry Pi OS
- Using I2C Devices on the Raspberry Pi with Home Assistant
- Using the ADC Differential Pi with Home Assistant on the Raspberry Pi
- Using the ADC Pi with Home Assistant on the Raspberry Pi
- Using the IO Pi Plus with Home Assistant on the Raspberry Pi
-
Legacy Products
- ADC DAC Pi (Discontinued)
- ADC Pi (Discontinued)
- Buffer Pi - Legacy Product
- Com Pi (Discontinued)
- Delta-Sigma Pi (Discontinued)
- Expander Pi (Discontinued)
- IO Pi (Discontinued)
- IO Pi Plus 1.0 (Discontinued)
- IO Pi Zero (Discontinued)
- Logic Level Converter (Discontinued)
- RTC Alarm Pi (Discontinued)
- RTC Pi (Discontinued)
- Serial Pi (Discontinued)
- 1 Wire Pi (Discontinued)
- 1 Wire Pi Plus 1.0 (Discontinued)
- Other Supported Platforms
I2C Switch C Library
I2C Switch C Library Installation and Usage
C Library to use with I2C Switch Raspberry Pi development board.
The example C programs can be found in /ABElectronics_C_Libraries/I2CSwitch/demos
Downloading and Installing the library
To download to your Raspberry Pi type in the terminal:
git clone https://github.com/abelectronicsuk/ABElectronics_C_Libraries.git
Functions
switch_channel(uint8_t address, uint8_t channel)
Enable the specified I2C channel and disable other channels
Parameter: (uint8_t) address - I2C address for the target device. Default = 0x70
Parameter: (uint8_t) channel - 1 to 4
Returns: (char) 0 = success, -1 = error switching to channel
set_channel_state(uint8_t address, uint8_t channel, uint8_t state)
Sets the state of the specified I2C channel.
All other channels keep their existing state.
Parameter: (uint8_t) address - I2C address for the target device. Default = 0x70
Parameter: (uint8_t) channel - 1 to 4
Parameter: (uint8_t) state - 0 = channel off, 1 = channel on
Returns: (char) 0 = success, -1 = error setting channel state
get_channel_state(uint8_t address, uint8_t channel)
Gets the state of the specified I2C channel
Parameter: (uint8_t) address - I2C address for the target device. Default = 0x70
Parameter: (uint8_t) channel - 1 to 4
Returns: (char) 0 = channel off, 1 = channel on, -1 = error getting channel state
reset()
Reset the I2C switch. All channels are set to off.
Returns: (char) 0 = reset complete, -1 = reset failed