ZYB ARTICLES REPOS

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);
}