A useful i2c package for Pi
Project description
A useful i2c Python3 package for Pi
It is a simple I2C interface based on smbus2.
1. Installation
Via pip
pip3 install pyi2c
2. API and example
2.1 I2C(bus_n)
from pyi2c import I2C
# Create i2c
BUS_N = 0 # 0 or 1 or 2. Change this to yours
i2c = I2C(BUS_N)
ADDR = 0x38 # Change this to yours
2.1.1 status_code
Return
{StatusCode.success: 0}
{StatusCode.ready: 1}
{StatusCode.fail: 9}
print( i2c.status_code )
# => {StatusCode: 1}
To get the value, use .value
print( i2c.status_code.value )
# => 1
if i2c.status_code.value == 1:
print('ready')
2.1.2 scan()
Scan all I2C devices on the same BUS.
Return list of integer (address in byte)
print( i2c.scan() )
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- 38 -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- 5a -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
80: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
[56, 90]
2.1.3 write(ADDR, data)
Return nothing
data
can be a byte or list of bytes.
WRITE0 = 0x00 # Change this to yours
i2c.write(ADDR, WRITE0)
# or write multi bytes, up to 64 bytes
WRITE1 = 0x01 # Change this to yours
i2c.write(ADDR, [WRITE0, WRITE1])
2.1.4 read(ADDR, byte_size=1)
Return integer (a byte), or list of integers (bytes) if byte_size >= 0
byte_size
can be empty (default is 1)
read_data = i2c.read(ADDR)
# or set length of reading bytes
byte_size = 2
read_data = i2c.read(ADDR, byte_size)
print( len(read_data) )
# 2
2.1.5 writeread(ADDR, data, byte_size=1)
Return integer (a byte), or list of integer (bytes) if byte_size >= 0
data
can be a byte or list of bytes.byte_size
can be empty (default is 1)
# First write and read rapidly one byte
read_data = i2c.writeread(ADDR, WRITE0)
# These also work
read_data = i2c.writeread(ADDR, [WRITE0, WRITE1])
read_data = i2c.writeread(ADDR, [WRITE0, WRITE1], byte_size)
2.2 I2CDevice(bus_n, addr)
It is extension of I2C, but contains a I2C device's address. So it is not need to write address any more after declare.
from pyi2c import I2CDevice
BUS_N = 0
ADDR = 0x38
aht10 = I2CDeivce(BUS_N, ADDR)
2.2.1 status_code
As the same as status_code
in I2C.
2.2.2 write(data)
As the same as write(addr, data)
in I2C, but does not need address.
2.2.3 read(byte_size=1)
As the same as read(addr, byte_size)
in I2C, but does not need address.
2.2.4 writeread(data, byte_size=1)
As the same as writeread(addr, data, byte_size=1)
in I2C, but does not need address.
2.3 getBit(byte, bin_n, bin_m=-1)
Return integer (a bit or bits)
bin_n
should be>= 0
bin_m
can be empty (default is -1 but will overwrote withbin_n
)bin_n
orbin_m
can be larger than byte's size
from pyi2c import getBit
byte = 0x5a # Any byte data
print( bin(byte) )
# '0b1011010'
- Get bit #n of byte
print( getBit(byte, 0) )
# 0
print( getBit(byte, 1) )
# 1
- Get multi bits from #n to #m of byte
print( getBit(byte, 4, 3) )
# 3 = 0b10
print( getBit(byte, 3, 4) )
# 3 = 0b10, the same as previous
- Recommend usage
if getBit(byte, 4) == 0b1:
print('hoge')
# 'hoge'
For developers
Build
python3 -m build
Upload
python3 -m twine upload dist/*
Reference
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyi2c-0.3.1.tar.gz
.
File metadata
- Download URL: pyi2c-0.3.1.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | be64800f6fc098783cd1a8bf4e9d51ecba56dc524a7fd792742cea22e8b1a4d2 |
|
MD5 | 7ef0f64181fb6d6d03a3f2dd23eee5da |
|
BLAKE2b-256 | 265a27f7b1248b3a4515d441b26385cb256b00630c8cb64ea9cc9c828401d882 |
File details
Details for the file pyi2c-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: pyi2c-0.3.1-py3-none-any.whl
- Upload date:
- Size: 5.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 064a92ddb0ec6ac6bfe32260717cf83bb9a716c0033e534d03d0e63eac36b2eb |
|
MD5 | f289b808ed2a15e911236f4682ab046e |
|
BLAKE2b-256 | 70c66e74d5f9ce40a36ba62d9ef29bcaf807b79d5ea60aa641e1f33421c99be5 |