arduino传感器设计实验

1.实验目的和任务

实验目的:

本实验为设计性实验,其目的是掌握使用Arduino对各种主流传感器的数据采集方法,掌握DHT11温湿度传感器、光敏电阻的原理和使用方法。

设计性任务:

使用1个光敏电阻和1个LED,设计一个光控夜灯,使用1个DHT11温湿度传感器、1个1602液晶LCD,设计一个温湿度计具体要求如下:

  • 当亮度较高时(例如用手机强光照射时),LED自动灭掉;当亮度很暗时,LED自动亮起来。
  • 对于亮度大小的判断,可以根据实际情况自己决定(提示:先利用串口回显观察不同亮度下传感器的数值);
  • LCD的显示内容清晰,对比度可调;
  • LCD的第一行显示温度和湿度(温度数据仅保留小数位一位,湿度数值是整数)。显示格式的示例:  T:23.4C   H:52%  
  • 当温度和湿度发生变化时,显示的数据能实时变化                                                                                                                                2.主要仪器设备(实验用的软硬件环境)
  • 实验的硬件环境是:
  • PC机一台
  • Arduino开发套件一套(含Arduino主板、USB数据线、面包板、面包板线若干、电阻若干)
  • DHT11温湿度传感器1个、光敏电阻1个、LED灯1个、电位器等
  • Arduino IDE软件(免安装的绿色软件)

 3.代码如下:

#include <DHT.h>  
#include <LiquidCrystal.h>  
 
const int ldrPin = A0;   
const int ledPin = 13;    
const int threshold =300; 

#define DHTPIN 2  

#define LCD_RS 12  
#define LCD_EN 11  
#define LCD_D4 5  
#define LCD_D5 4  
#define LCD_D6 3  
#define LCD_D7 10  

DHT dht(DHTPIN, DHT11);  

LiquidCrystal lcd(LCD_RS, LCD_EN, LCD_D4, LCD_D5, LCD_D6, LCD_D7);  
  
  byte temperturechar[8] = {
  0b10000,
  0b00110,
  0b01001,
  0b01000,
  0b01000,
  0b01001,
  0b00110,
  0b00000,
};
  
void setup() {  
  pinMode(ledPin, OUTPUT);    



  Serial.begin(9600);  
  dht.begin();  

  lcd.begin(16, 2);   
  lcd.setCursor(0, 0);  
  delay(1000);  
  lcd.clear();  
  
     lcd.createChar(6, temperturechar);
 
}  
  
void loop() {  
  int ldrValue = analogRead(ldrPin);    
  Serial.println(ldrValue);  
  
  if (ldrValue < threshold) {    
    digitalWrite(ledPin, HIGH);    
  } else {    
    digitalWrite(ledPin, LOW);    
  }  
  
  delay(100);    



//温度
  float h = dht.readHumidity();  
  float t = dht.readTemperature();  

  if (isnan(h) || isnan(t)) {  
    lcd.clear();  
    lcd.setCursor(0, 0);  
    lcd.print("Error");  
    delay(1000);  
    return;  
  }  
  
  char tempStr[6];  
  dtostrf(t, 4, 1, tempStr); 
  char humiStr[4];  
  dtostrf(h, 0, 0, humiStr);   
  
  
  lcd.clear();   
  lcd.setCursor(0, 0);   
  lcd.print("T:");  
  lcd.setCursor(2, 0);   
  lcd.print(tempStr);  
  lcd.write(byte(6)); 
  lcd.setCursor(8, 0);   
  lcd.print("H:");  
  lcd.setCursor(10, 0);  
  lcd.print(humiStr);  
  lcd.print("%"); 
 
  delay(1000);  
}

4.实物图

86ddb526b3d24f8f8d960d88ebf51044.png

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值