欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > 2025年2月4日(i2c和spi树莓派oled sdd1306)

2025年2月4日(i2c和spi树莓派oled sdd1306)

2025/2/25 17:24:48 来源:https://blog.csdn.net/weixin_50198505/article/details/145443639  浏览:    关键词:2025年2月4日(i2c和spi树莓派oled sdd1306)

树莓派使用 I2C 和 SPI 通信协议来与 OLED 屏幕(如 SSD1306)进行连接。你可以根据自己的需求选择适合的通信协议来与 OLED 屏幕进行通信。

1. I2C 连接 SSD1306 OLED 屏幕

硬件连接:
  • SDA (数据线) 连接到树莓派的 GPIO 2 (即 SDA 引脚)
  • SCL (时钟线) 连接到树莓派的 GPIO 3 (即 SCL 引脚)
  • OLED 屏幕的电源引脚 VCC 连接到树莓派的 3.3V5V (取决于你的OLED屏幕电压要求)
  • GND 连接到树莓派的 GND
软件设置:
  1. 启用 I2C 接口:通过树莓派的终端,运行以下命令来启用 I2C:

    sudo raspi-config
    

    选择 Interfacing Options -> I2C,然后启用它。

  2. 安装所需的库:

    sudo apt-get update
    sudo apt-get install python3-pip
    sudo apt-get install python3-smbus
    sudo apt-get install i2c-tools
    sudo pip3 install adafruit-circuitpython-ssd1306
    
  3. 测试 I2C 设备:
    使用 i2cdetect 命令查看 OLED 屏幕是否正确连接:

    i2cdetect -y 1
    

    如果连接正常,你应该能够看到一个地址,比如 0x3C

  4. 编写代码来显示内容:
    以下是一个简单的 Python 代码示例,使用 Adafruit_SSD1306 库来显示文本:

    import time
    import board
    import digitalio
    from adafruit_ssd1306 import SSD1306_I2C# 初始化 I2C
    i2c = board.I2C()
    oled = SSD1306_I2C(128, 64, i2c)  # 128x64 OLED 屏幕# 清除屏幕
    oled.fill(0)
    oled.show()# 显示文本
    oled.text("Hello, World!", 0, 0)
    oled.show()
    time.sleep(2)# 清除屏幕
    oled.fill(0)
    oled.show()
    

2. SPI 连接 SSD1306 OLED 屏幕

硬件连接:
  • CS (Chip Select) 连接到树莓派的 GPIO 8 (CE0)
  • DC (Data/Command) 连接到树莓派的 GPIO 24
  • RST (Reset) 连接到树莓派的 GPIO 25
  • SDI (MOSI) 连接到树莓派的 GPIO 10
  • SCK (Clock) 连接到树莓派的 GPIO 11
  • OLED 屏幕的电源引脚 VCC 连接到树莓派的 3.3V5V
  • GND 连接到树莓派的 GND
软件设置:
  1. 启用 SPI 接口:
    通过树莓派的终端,运行以下命令来启用 SPI:

    sudo raspi-config
    

    选择 Interfacing Options -> SPI,然后启用它。

  2. 安装所需的库:

    sudo apt-get update
    sudo apt-get install python3-pip
    sudo apt-get install python3-spidev
    sudo pip3 install adafruit-circuitpython-ssd1306
    
  3. 编写代码来显示内容:
    以下是一个 Python 代码示例,使用 SPI 接口来控制 OLED 屏幕:

    import time
    import board
    import digitalio
    import busio
    from adafruit_ssd1306 import SSD1306_SPI# 初始化 SPI
    spi = busio.SPI(clock=board.SCLK, MOSI=board.MOSI)
    cs = digitalio.DigitalInOut(board.D5)
    dc = digitalio.DigitalInOut(board.D6)
    reset = digitalio.DigitalInOut(board.D13)oled = SSD1306_SPI(128, 64, spi, cs, dc, reset)# 清除屏幕
    oled.fill(0)
    oled.show()# 显示文本
    oled.text("Hello, SPI!", 0, 0)
    oled.show()
    time.sleep(2)# 清除屏幕
    oled.fill(0)
    oled.show()
    

总结:

  • 如果你选择 I2C,可以节省引脚数,但可能会在某些情况下稍微慢一些。
  • 如果选择 SPI,则传输速度较快,但需要更多的引脚。

你可以根据自己的需求选择最适合的通信协议。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词