• IIC接口是单片机常用的硬件接口,具有连接简单、使用方便、一口多用的优点,被很多器件采用,常见的有OLED显示屏、温度、湿度、压力传感器等等。在IIC接口设备调试中,经常需要检测验证主从设备连接的正确性、可靠性,或需要检测从设备地址等,特别是在一个IIC接入多个设备时比较重要,因此需要一个检测程序。为此把这个任务交给国内人工智能“豆包”,一来省些脑力,二来试试人工智能的能力,以下就是豆包给的程序。
#include <Wire.h>
void setup() {
  Serial.begin(9600);
  Wire.begin();
}
void loop() {
  byte error, address;
  int nDevices;
  Serial.println("Scanning...");
  nDevices = 0;
  for(address = 1; address < 127; address++ ) {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address<16) {
        Serial.print("0");
      }
      Serial.println(address, HEX);
      nDevices++;
    } else if (error==4) {
      Serial.print("Unknown error at address 0x");
      if (address<16) {
        Serial.print("0");
      }
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0) {
    Serial.println("No I2C devices found");
  }
  delay(5000);           // wait 5 seconds for next scan
}

下面我们用上一篇网文《AHT20+BMP280模组的使用》中的硬件做一下测试。
一、实验用品
实验板:ESP32C3
AHT20+BMP280模块
接线方式:
SCL(CK)— IPO 5、SDA(MOSI)–IPO 4
二、测试结果
在这里插入图片描述
三、结论
1、上传这个程序运行后,从串口监视器反馈回来的信息看,它的确检测到了IIC接口连接的两个从设备,地址分别为0x38、0x77,这确是AHT20和BMP280硬件的地址,今后使用IIC接口连接的设备如果出现问题,可以用这个程序测试一下连接是否有问题、操作地址是否有错误,还是有点用途的。
2、人工智能豆包至少在这方面还是有点能力的,程序基本没有错误,至于是它自己思考出来的还是从别处抄来的不得而知,用微软bing搜索发现有类似的程序,程序较为相似。
3、豆包虽然不是程序设计的专业AI,但它的知识覆盖面是足够宽的,AI是非常适合做程序设计的,在程序设计中可以让它提供思路或者基础程序,在此基础上通过人工全修改、完善,取得事半功倍的效果,对于初学者或非专业人士可能有较大帮助。在单片机开发中如有其他更好用的AI系统,更简单、更方便,请网友们给以介绍,帮助更多嵌入式设备爱好者更快进入这个领域。
4、技术的发展取决于应用,没有应用场景的技术就是废物。由于专业人员是人群中的少数,少数人接触到的环境毕竟是有限的,更多的应用场景都在非专业人士那里,虽然可以专业人士和非专业人士结合解决某些应用问题,但这种结合会受环境、条件的限制,绝大多数时间不能实现,解决的办法就是让更多的人接触、了解这种技术,让技术有更大的运用空间。要实现这个愿望就必须降低技术门槛,AI不失为一种好的工具。

更多推荐