找回密码
 立即注册

QQ登录

只需一步,快速开始

点击进入授权页面

只需一步,快速开始

  • QQ空间
  • 回复
  • 收藏

参加活动: 0

组织活动: 0

该用户从未签到

本帖最后由 疯子。 于 2013-6-7 18:31 编辑

YP20130605034944 - 副本.jpeg

从上到下分别是 温度、湿度、光照度、颗粒物

首先先感谢一下乐联网友情提供的颗粒物传感器。
然后感谢@stanleyhuangyc 的MultiLCD显示库。

上接线图:(画的不好大家不要嘲笑)

温度湿度.jpg

上代码。

代码中所需库文件已打包至附件。

要注意至少1.0.4下编译

[C] 纯文本查看 复制代码
/*
BH1750光照强度传感器接法:
VCC-5v
GND-GND
SCL-SCL(A5)
SDA-SDA(A4)

DHT11接法:
VCC-->5V
GND-->GND
DATA-->D9

PPD42NS接法:
针脚冲下,从右至左为1-5接口
Pin 1  => GND
Pin 3  => 5VDC
Pin 4  => D8

LCD5110接法:
clk  = D7     //clock
din  = D6,   // data-in 
dc    = D5,   // data select
reset = D2,   //reset
sce   = D3);  // enable
*/

#include <SPI.h>
#include <Wire.h>
#include <Arduino.h>
#include <MultiLCD.h>//LCD5110库
#include <dht11.h>//dht11库

//定义DHT11引脚为9
dht11 DHT11;
#define DHT11PIN 9

//bh1750相关
int BH1750address = 0x23;
byte buff[2];

//lcd5110相关
LCD_PCD8544 lcd;

//PPD42NS颗粒物传感器相关
int pin = 8;
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 30000;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
double concentration = 0;

void setup() {
  Serial.begin(9600);
//初始化LCD
  lcd.begin();
  lcd.clear();
  lcd.setCursor(0, 0);//在第一行打印出  Environment 字符串
  lcd.print("  Environment ");
  lcd.setCursor(0, 1);//光标移至第2行(从0开始数算起) 第1个像素(下同)
  lcd.print("Temp :");//显示出温度提示(下同)
  lcd.setCursor(73, 1);//光标移至第2行(从0开始数算起) 第72个像素
  lcd.print("oC");//显示出温度单位(下同)
  lcd.setCursor(0, 2);
  lcd.print("Humi :");
  lcd.setCursor(79, 2);
  lcd.print("%");
  lcd.setCursor(0, 3);
  lcd.print("Light:");
  lcd.setCursor(73,3);
  lcd.print("lx");
  lcd.setCursor(0, 4);
  lcd.print("PM   :");
  lcd.setCursor(0, 5);//光标移至第6行(从0开始数算起) 第37个像素
  lcd.print(" Best wishes");//显示出 Best wishes

  pinMode(pin,INPUT);
  starttime = millis();
}

void loop() {
   //计算颗粒物
    duration = pulseIn(pin, LOW);
    lowpulseoccupancy = lowpulseoccupancy+duration;
    

    if ((millis()-starttime) > sampletime_ms)
    {
      ratio = lowpulseoccupancy/(sampletime_ms*10.0);
      concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62;
    //串口打印出颗粒物数据
      Serial.print(lowpulseoccupancy);
      Serial.print(",");
      Serial.print(ratio);
      Serial.print(",");
      Serial.println(concentration);
      lowpulseoccupancy = 0;

//串口打印出DHT11测出的温湿度数据
    DHT11.read(DHT11PIN);
    int dht11temp = DHT11.temperature;
    Serial.print("temperature:");
    Serial.println(dht11temp);
    int dht11hum = DHT11.humidity;
    Serial.print("humidity:");
    Serial.println(dht11hum);

//串口打印出BH750光照度数据
    double light = BH1750();
    Serial.print("light:");
    Serial.println(light);

//lcd上显示数据
    lcd.setCursor(37, 1);//光标移至第2行(从0开始数,1就是第二个) 第37个像素(下同)
    lcd.print(dht11temp);//显示出温度(下同)
    lcd.setCursor(37, 2);
    lcd.print(dht11hum);
    lcd.setCursor(37, 3);
    lcd.print(light);
    lcd.setCursor(37, 4);
    lcd.print(concentration);

    starttime=millis();
    }
}

//BH1750相关函数
double BH1750()
{
  int i=0;
  double  val=0;
  Wire.beginTransmission(BH1750address);
  Wire.write(0x10);//1lx reolution 120ms
  Wire.endTransmission();  
  delay(200);
  Wire.beginTransmission(BH1750address);
  Wire.requestFrom(BH1750address, 2);
  while(Wire.available()) //
  {
    buff[i] = Wire.read();  // receive one byte
    i++;
  }
  Wire.endTransmission();
  if(2==i)
  {
    val=((buff[0]<<8)|buff[1])/1.2;
  }
  return val;
}

libraries.rar

25.09 KB, 下载次数: 1152

5100和5110都是spi的器件,要切换选择使用
如果以上内容对你有帮助,你可以通过打赏支持作者
奈何col 发表于 2013-6-5 17:34
5100和5110都是spi的器件,要切换选择使用

原来如此。。。哎。

点评

仔细看了下,你图上用的不是硬件SPI,所以应该不是这个问题,具体怎么回事,不清楚了  详情 回复 发表于 2013-6-5 17:51
疯子。 发表于 2013-6-5 17:35
原来如此。。。哎。

仔细看了下,你图上用的不是硬件SPI,所以应该不是这个问题,具体怎么回事,不清楚了

点评

都不加个精么?想发帖骗点贡献好难哦{{{(>_<)}}}  发表于 2013-6-5 19:40
如果以上内容对你有帮助,你可以通过打赏支持作者
奈何col 发表于 2013-6-5 17:51
仔细看了下,你图上用的不是硬件SPI,所以应该不是这个问题,具体怎么回事,不清楚了 ...

好吧,那就更不知道了。。。

貌似是神马指针怎么着了。。

对C语言不怎么会
写得有点简单啦~加精找海神和奔跑额
如果以上内容对你有帮助,你可以通过打赏支持作者
奈何col 发表于 2013-6-5 20:16
写得有点简单啦~加精找海神和奔跑额

哦,那我再补充点。

上次海神说只有两个管理员才能。。可能是说的后台什么的。
哪天我也试试,还从没把这么多个东西连一起做过
啷哩个铛 发表于 2013-6-6 00:53
哪天我也试试,还从没把这么多个东西连一起做过

            
东西挺好的~加精~~
有个视频最好了~~
123下一页
发新帖
发表评论
高级模式  
您需要登录后才可以回帖 登录 | 立即注册  
关闭

推荐主题 上一条 /2 下一条