返回

Pico I2C 扫描仪:查找总线上的设备

简介

I2C(集成电路间总线)是一种流行的通信协议,它仅需两根线(SDA 数据线和 SCL 时钟线)就能让微控制器与传感器、显示屏及其他外设通信。但在原型开发时,你往往不知道新 I2C 设备的确切地址。这时 I2C 扫描仪就派上用场了——它会探测总线上所有可能的地址,并报告哪些设备有响应。

在本教程中,我们将使用 Velxio 在线仿真器为 Raspberry Pi Pico 构建一个 I2C 扫描仪。你将学习如何连接一个包含两个指示灯的简单电路,用 Arduino C++ 编写扫描代码,并解读结果。无需硬件,只需浏览器!

Velxio 仿真器画布上的 pico-i2c-scanner 电路图

电路详解

我们的电路虽简单但富有启发性。我们将使用两个 LED 在扫描过程中提供视觉反馈:

两个 LED 共享 Pico 的 GND.1 引脚作为公共接地。I2C 总线本身使用默认引脚:SDA = GP4SCL = GP5。无需外部上拉电阻,因为 Wire 库会启用 Pico 的内部上拉。

要在 Velxio 中构建此电路:

  1. 从画布工具栏打开 元件选择器Velxio 元件选择器模态框,按类别浏览零件
  2. 添加一块 Raspberry Pi Pico 开发板。
  3. 从“输出”类别中添加两个 LED(蓝色和绿色)。
  4. 按如下方式接线:GP12 → 蓝色 LED 阳极,GP10 → 绿色 LED 阳极,两个阴极 → GND。
  5. 使用 画布工具栏 缩放并整齐排列元件。 Velxio 仿真视口上方的画布工具栏

代码详解

现在让我们深入代码。在 Velxio 中打开代码编辑器,粘贴以下草图:

// Raspberry Pi Pico — I2C Scanner
// Scans I2C bus (Wire / I2C0: SDA=GP4, SCL=GP5) for devices

#include <Wire.h>

void setup() {
  Serial.begin(115200);
  delay(500);
  Wire.begin(); // SDA=GP4, SCL=GP5 by default on Pico
  Serial.println("=== Pico I2C Scanner ===");
  Serial.println("Default I2C0: SDA=GP4, SCL=GP5");
  Serial.println();
}

void loop() {
  Serial.println("Scanning I2C bus...");
  int found = 0;

  for (byte addr = 1; addr < 127; addr++) {
    Wire.beginTransmission(addr);
    byte error = Wire.endTransmission();

    if (error == 0) {
      found++;
      Serial.print("  Device found at 0x");
      if (addr < 16) Serial.print("0");
      Serial.print(addr, HEX);

      // Identify known addresses
      switch (addr) {
        case 0x48: Serial.print(" (Temperature sensor)"); break;
        case 0x50: Serial.print(" (EEPROM)"); break;
        case 0x68: Serial.print(" (DS1307 RTC)"); break;
        case 0x27: Serial.print(" (LCD backpack)"); break;
        case 0x3C: Serial.print(" (SSD1306 OLED)"); break;
        default: break;
      }
      Serial.println();
    }
  }

  Serial.print("Scan complete. Found ");
  Serial.print(found);
  Serial.println(" device(s).");
  Serial.println();
  delay(5000);
}

工作原理

要编译并运行,请点击编辑器工具栏中的 编译 按钮。 Velxio 编辑器工具栏,包含编译和运行控件

关键概念

常见陷阱与调试技巧

建议扩展

亲自尝试!

准备好扫描 I2C 总线了吗?在 Velxio 中打开实时示例,开始实验:

在 Velxio 上启动 Pico I2C 扫描仪

无需下载,无需焊接——纯仿真。修改代码,添加新元件,立即查看结果。祝扫描愉快!


分享到:
David Montero

作者

David Montero

Creator of Velxio, the open-source circuit and Arduino simulator.

GitHub velxio.dev

相关文章


上一篇
使用树莓派Pico I2C读取虚拟DS1307实时时钟
下一篇
Pico 串口 LED 控制:构建你的第一个命令接口