Arduino读取传感器示例程序
一、读BMP280
BMP280是读取气压的传感器。如果bmp.begin
一直失败,需要先看一下连线是否正确,如果连线正确还是失败一般是IIC的地址不对,需要查看硬件手机改成对应的地址再试。
#include
const int BMP280_ADDR = 0x76; // 有的是0x77,具体需要查看手册
Adafruit_BMP280 bmp;
void setup() {
Serial.begin(9600);
Serial.println(F("BMP280 Sensor"));
if (!bmp.begin(BMP280_ADDR)) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
while (1);
}
}
void loop() {
Serial.print(F("Temperature="));
Serial.print(bmp.readTemperature());
Serial.print(F("°C "));
Serial.print(F("Pressure="));
Serial.print(bmp.readPressure());
Serial.print(F("Pa "));
Serial.print(F("Altitude="));
Serial.print(bmp.readAltitude(1013.25)); // 1013.25是当地的标准海压
Serial.println("m");
delay(1000);
}
二、读取DHT11
DHT是一款温湿度传感器
温度测量范围: 0°C~+50°C
温度测试误差: 2°C
湿度测量范围: 20%-95%
湿度测量误差: 5%
#include <DHT.h>
#include <DHT_U.h>
#include <Arduino.h>
#define DHTPIN 14 // DHT数据PIN
DHT_Unified dht(DHTPIN, DHT11);
void setup() {
Serial.begin(9600);
// Initialize device.
dht.begin();
Serial.println(F("DHT11 Unified Sensor Example"));
// Print temperature sensor details.
sensor_t sensor;
dht.temperature().getSensor(&sensor);
Serial.println(F("------------------------------------"));
Serial.println(F("Temperature Sensor"));
Serial.print (F("Sensor Type: ")); Serial.println(sensor.name);
Serial.print (F("Driver Ver: ")); Serial.println(sensor.version);
Serial.print (F("Unique ID: ")); Serial.println(sensor.sensor_id);
Serial.print (F("Max Value: ")); Serial.print(sensor.max_value); Serial.println(F("°C"));
Serial.print (F("Min Value: ")); Serial.print(sensor.min_value); Serial.println(F("°C"));
Serial.print (F("Resolution: ")); Serial.print(sensor.resolution); Serial.println(F("°C"));
Serial.println(F("------------------------------------"));
// Print humidity sensor details.
dht.humidity().getSensor(&sensor);
Serial.println(F("Humidity Sensor"));
Serial.print (F("Sensor Type: ")); Serial.println(sensor.name);
Serial.print (F("Driver Ver: ")); Serial.println(sensor.version);
Serial.print (F("Unique ID: ")); Serial.println(sensor.sensor_id);
Serial.print (F("Max Value: ")); Serial.print(sensor.max_value); Serial.println(F("%"));
Serial.print (F("Min Value: ")); Serial.print(sensor.min_value); Serial.println(F("%"));
Serial.print (F("Resolution: ")); Serial.print(sensor.resolution); Serial.println(F("%"));
Serial.println(F("------------------------------------"));
}
void loop() {
delay(1000);
// Get temperature event and print its value.
sensors_event_t event;
dht.temperature().getEvent(&event);
if (isnan(event.temperature)) {
Serial.println(F("Error reading temperature!"));
}
else {
Serial.print(F("Temperature: "));
Serial.print(event.temperature);
Serial.println(F("°C"));
}
// Get humidity event and print its value.
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
Serial.println(F("Error reading humidity!"));
}
else {
Serial.print(F("Humidity: "));
Serial.print(event.relative_humidity);
Serial.println(F("%"));
}
}
三、DS18B20
DS18B20是一款温度传感器。
测量范围: -55°C~+125°C
测量精度:0.5°C(-10°C至+85°C范围内)
分辨率: 0.5°C
#include
#include
#include
#include
#include
#include
#define DS18B20PIN 13 // DS18B20数据PIN
OneWire onewire(DS18B20PIN);
DallasTemperature sensors(&onewire);
void setup() {
Serial.begin(9600);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float ds18b20 = sensors.getTempCByIndex(0);
Serial.print(F("DS18B20: "));
Serial.print(ds18b20);
Serial.println("°C");
delay(1000);
}
四、光线传感器
#include
#define LIGHTPIN A0 // 模拟引脚
void setup() {
Serial.begin(9600);
pinMode(LIGHTPIN, INPUT);
}
void loop() {
int light = analogRead(LIGHTPIN);
Serial.print(F("Light: "));
Serial.println(light);
delay(1000);
}