首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为多个RP2040温度传感器提供bitbang Arduino纳米AM2320连接?比特邦图书馆的使用?

如何为多个RP2040温度传感器提供bitbang Arduino纳米AM2320连接?比特邦图书馆的使用?
EN

Stack Overflow用户
提问于 2022-10-26 12:21:11
回答 1查看 39关注 0票数 0

你能帮我做以下几件事吗?:我是初学者,有一个Arduino Nano RP2040连接和四个AM2320温度传感器,但每个都有相同的地址,是不能更改的(这个项目是为我的毕业考试而设计的)。我得到了一个信息,它可以“以软件的方式”创建更多的I2C总线,通过使用4种功能(一个开始,一个停止,一个可以传输比特,一个可以读取一点)。这样,任何数字引脚都可以编程为SDA/SCL。有人告诉我,有一个名为“SoftwareWire”的库,但我不能真正理解它的命令,它是继其他命令之后出现的。有什么关于这个的事吗?

在搜索“软件方式”时,发现有这样的程序库,但无法处理命令。

EN

回答 1

Stack Overflow用户

发布于 2022-11-02 01:45:06

嗨,我会把一个功能传递给你,这个函数适用于我,有3个i2c感应器,sh21有相同的入口。

代码语言:javascript
复制
#include <Wire.h>
#include "SHT2x.h"

uint32_t start;
uint32_t stop;

SHT2x sht;

float tempN1;
float humN1;
float dwn1;

float tempN2;
float humN2;
float dwn2;

float tempN3;
float humN3;
float dwn3;

int flip = 0;

void sht21read(){
    if (flip == 0)
  {

    Wire.begin(21, 22); // 2
    delay(100);
    // myHTU21D.begin();
    sht.begin(21, 22);
    start = micros();
    sht.read();
    stop = micros();
    delay(250);
    tempN1 = sht.getTemperature();
    humN1 = sht.getHumidity();
    // dwn1 = SHT2x.GetDewPoint();
    delay(250);
    Wire.end();
    flip = 1;
  }
  else if (flip == 1)
  {

    Wire.begin(32, 22); // 4
    delay(100);
    // myHTU21D.be sht.begin();gin();
    sht.begin(32, 22);
    start = micros();
    sht.read();
    stop = micros();
    delay(250);
    tempN2 = sht.getTemperature();
    humN2 = sht.getHumidity();
    // dwn2 = SHT2x.GetDewPoint();
    delay(250);
    Wire.end();
    flip = 2;
  }
  else if (flip == 2)
  {

    Wire.begin(27, 22); // 13
    delay(100);
    // myHTU21D.begin();
    sht.begin(27, 22);
    start = micros();
    sht.read();
    stop = micros();
    delay(250);
    tempN3 = sht.getTemperature();
    humN3 = sht.getHumidity();
    // dwn3 = SHT2x.GetDewPoint();
    delay(250);
    Wire.end();
    flip = 3;
  }
  else if (flip == 3)
  {
    flip = 0;
    Serial.print("TEMPERATURA N1= ");
    Serial.print(tempN1);
    Serial.print("");
    Serial.print("HUMEDAD N1= ");
    Serial.print(humN1);
    Serial.print("");
    Serial.print("||||");

    Serial.print("TEMPERATURA N2= ");
    Serial.print(tempN2);
    Serial.print("");
    Serial.print("HUMEDAD N2= ");
    Serial.print(humN2);
    Serial.print("");
    Serial.print("||||");

    Serial.print("TEMPERATURA N3= ");
    Serial.print(tempN3);
    Serial.print("");
    Serial.print("HUMEDAD N3= ");
    Serial.print(humN3);
    Serial.println("");

    delay(5000);
  }
}

然后在void循环和uala上运行函数sht21read();(或使用自己的名称)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74207696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档