我已将 ssd1306 OLED 和 BME280 连接到我的 Pico。当连接到引脚 0 (sda) 和 1 (scl) i2c 引脚时,一切都像魅力一样。但是由于我的计划非常糟糕,我不得不切换到任何其他 i2c 引脚。一旦连接,我就无法让它工作。
我已将 i2c = machine.I2C(0, scl=machine.Pin(1), sda=machine.Pin(0),freq=400000)
更改为 i2c = machine.I2C(0, scl=machine.Pin(13), sda=machine.Pin(12),freq=400000)
等,但无济于事。
代码片段:
import machine
import bme280
import time
from machine import Pin, I2C, ADC
from ssd1306 import SSD1306_I2C
i2c = machine.I2C(0, scl=machine.Pin(13), sda=machine.Pin(12),freq=400000)
bme = bme280.BME280(i2c=i2c)
oled = SSD1306_I2C(128, 64, i2c)
我得到的错误是:
Traceback (most recent call last): File "<stdin>", line 9, in <module> File "/lib/bme280.py", line 75, in __init__ OSError: 5
是:
dig_88_a1 = self.i2c.readfrom_mem(self.address, 0x88, 26) from bme280.py (standard driver)
我执行了 i2c 扫描,它确实在新引脚上返回了正确的地址。