Skip to main content

A useful i2c package for Pi

Project description

pyi2c logo

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 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.2 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.3 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.4 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 write(data)

As the same as write(addr, data) in I2C, but does not need address.

2.2.2 read(byte_size=1)

As the same as read(addr, byte_size) in I2C, but does not need address.

2.2.3 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 with bin_n)
  • bin_n or bin_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyi2c-0.2.5.tar.gz (4.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyi2c-0.2.5-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file pyi2c-0.2.5.tar.gz.

File metadata

  • Download URL: pyi2c-0.2.5.tar.gz
  • Upload date:
  • Size: 4.6 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

Hashes for pyi2c-0.2.5.tar.gz
Algorithm Hash digest
SHA256 2477f6f4a60245d16af3cb7ecb913b9b5de002dd9ee144c35fe079eb23c2bf23
MD5 e6046400f376a2db703925e6d4522d21
BLAKE2b-256 0094f814bf3fb3fbb22075569253b80f9c8cbc286dbea40df21ea08698a6aea5

See more details on using hashes here.

File details

Details for the file pyi2c-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: pyi2c-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 4.8 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

Hashes for pyi2c-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0c5b5aceff18d9cb7278ca6be0bd1cd1ad12177e6c91c3200c41bb166c9e2ee4
MD5 06cbe0e1195ff342657a7ca1197697dd
BLAKE2b-256 4a47ee9bef3353b08186e77f285bfee69c242952493eaede710487ac75b4485a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page