ros安装rosserial_arduino
参考链接: rosserial_arduino/Tutorials/Arduino IDE Setup - ROS Wiki
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();
}