Arduino温湿度、光照、二氧化碳融合

ros安装rosserial_arduino

参考链接: rosserial_arduino/Tutorials/Arduino IDE Setup - ROS Wiki

参考:ROS技巧系列 - ROS与Arduino进行高效稳定的串口通信(两种通信方式对比)_步印的博客-CSDN博客

sudo apt-get install ros-indigo-rosserial-arduino
sudo apt-get install ros-indigo-rosserial

具体操作可参考我的另外三篇博客

温湿度传感器dht11(arduino实现)、以及ros和arduino通信_dujuancao11的博客-CSDN博客

光照传感器bh1750(arduino实现)、以及ros和arduino通信_dujuancao11的博客-CSDN博客

二氧化碳传感器ccs811(arduino实现)、以及ros和arduino通信_dujuancao11的博客-CSDN博客

温度二氧化碳光照所需库

链接:https://pan.baidu.com/s/16imS3fYXySQehOXWWW3SCg 
提取码:bvjg

代码

#include <Wire.h> //IIC
#include <math.h> 
#include "Adafruit_CCS811.h"
Adafruit_CCS811 ccs;
#include <dht11.h>
dht11 DHT11;
#define DHT11PIN 2
int BH1750address = 0x23; 
//定义对象,方便树莓派调取?//
byte buff[2];
void setup()
{

  Wire.begin();
  Serial.begin(9600);
  Serial.println("BH1750, CCS811 and Dht11 test");
  if(!ccs.begin()){
    Serial.println("Failed to start sensor! Please check your wiring.");
    while(1);
  }
  // Wait for the CCSsensor to be ready
  while(!ccs.available());
}



//主函数//
void loop()
{
  
//Dht11主函数//
  Serial.println("-------------------------");
  int chk = DHT11.read(DHT11PIN);
   Serial.print("Read sensor: ");
  switch (chk)
  {
    case DHTLIB_OK: 
                Serial.println("OK"); 
                break;
    case DHTLIB_ERROR_CHECKSUM: 
                Serial.println("Checksum error"); 
                break;
    case DHTLIB_ERROR_TIMEOUT: 
                Serial.println("Time out error"); 
                break;
    default: 
                Serial.println("Unknown error"); 
                break;
  }

  Serial.print("Humidity (%): ");
  Serial.println((float)DHT11.humidity, 2);

  Serial.print("Temperature (oC): ");
  Serial.println((float)DHT11.temperature, 2);
 delay(2000);
  
//CCS811主函数//
   if(ccs.available()){
    if(!ccs.readData()){
      Serial.print("CO2: ");
      Serial.print(ccs.geteCO2());
      Serial.print("ppm, TVOC: ");
      Serial.print(ccs.getTVOC());
      Serial.print("\n");
    }
    else{
      Serial.println("ERROR!");
      while(1);
    }
  }
 delay(500);
 //BH1750主函数//
 int i;
 uint16_t val=0;
 BH1750_Init(BH1750address);

 delay(1000);

 if(2==BH1750_Read(BH1750address))

  {
   val=((buff[0]<<8)|buff[1])/1.2;
   Serial.print("light: ");
   Serial.print(val,DEC);     
   Serial.println("[lx]"); 
  }
}
int BH1750_Read(int address) //
{
  int i=0;
  Wire.beginTransmission(address);
  Wire.requestFrom(address, 2);
  while(Wire.available()) //
  {
    buff[i] = Wire.read();  // receive one byte
    i++;
  }
  Wire.endTransmission();  
  return i;
}

void BH1750_Init(int address) 
{
  Wire.beginTransmission(address);
  Wire.write(0x10);
  //1lx reolution 120ms
  Wire.endTransmission();
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Clark-dj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值