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
datacan 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_sizecan 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
datacan be a byte or list of bytes.byte_sizecan 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_nshould be>= 0bin_mcan be empty (default is -1 but will overwrote withbin_n)bin_norbin_mcan 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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|