changanniu 发表于 2016-6-5 17:22:45

为什么这源码用在我的Arduino软件上出现编辑错误呢?

/**
* PM2.5&温湿度显示
* 激光PM2.5传感器:攀藤 G5 PMS5005
* 温湿度传感器:DHT22
* Arduino Nano
* SSD1306
*
* @Author: Coeus <r.anerg at gmail.com>
*/
#include <DHT.h>
#include <U8glib.h>
#include <SoftwareSerial.h>

#define DHTPIN 3      //DHT SIG口接PIN3
#define DHTTYPE DHT22   //定义DHT型号

SoftwareSerial mySerial(9, 10);
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
DHT dht(DHTPIN, DHTTYPE);

struct PARAMS {
float T;//显示温度
float H;//显示湿度
long P;//显示PM2.5
long _P;//读取PM2.5
} _params;

//G5 相关变量
static unsigned char ucRxBuffer;
static unsigned char ucRxCnt = 0;

//循环计数器
unsigned char loopCnt = 0;

void setup() {
Serial.begin(9600);
//软串口读取G5
mySerial.begin(9600);
delay(500);
//设置屏幕字体和背景颜色
u8g.setColorIndex(255);
u8g.setHiColorByRGB(255, 255, 255);
delay(800);
}

void showTemperature(void) {
int x = 30, y = 10;//温度显示位置
//画LOGO
u8g.drawRFrame(x, y, 16, 16, 1);
u8g.drawFrame(x + 5, y + 3, 3, 6);
u8g.drawDisc(x + 6, y + 10, 2);
u8g.setFont(u8g_font_04b_03b);
u8g.setPrintPos(x + 10, y + 8);
u8g.print("C");

//设置双倍大小字体显示
u8g.setScale2x2();
u8g.setPrintPos(x / 2 + 11, y / 2 + 7);
u8g.setFont(u8g_font_orgv01);
u8g.print(_params.T);
u8g.undoScale();
}

void showPM25(void) {
int x = 30, y = 28;//PM2.5显示位置
//画LOGO
u8g.drawRFrame(x, y, 16, 16, 1);
u8g.setFont(u8g_font_orgv01);
u8g.setPrintPos(x + 3, y + 10);
u8g.print("pm");

//设置双倍大小字体显示
u8g.setScale2x2();
u8g.setPrintPos(x / 2 + 11, y / 2 + 7);
u8g.setFont(u8g_font_orgv01);
u8g.print(_params.P);
u8g.undoScale();
}

void showRH() {
int x = 30, y = 46;//湿度显示位置
//画LOGO
u8g.drawRFrame(x, y, 16, 16, 1);
u8g.drawFrame(x + 5, y + 3, 3, 6);
u8g.drawDisc(x + 6, y + 10, 2);
u8g.setFont(u8g_font_04b_03b);
u8g.setPrintPos(x + 10, y + 8);
u8g.print("H");

//设置双倍大小字体显示
u8g.setScale2x2();
u8g.setPrintPos(x / 2 + 11, y / 2 + 7);
u8g.setFont(u8g_font_orgv01);
u8g.print(_params.H);
u8g.undoScale();
}


//画界面
void draw(void) {
showTemperature();
showPM25();
showRH();
}

//获取温湿度
void getDHT22() {
_params.H = dht.readHumidity();
_params.T = dht.readTemperature();
}

//获取PM2.5的值
void getPM25(unsigned char ucData) {

ucRxBuffer = ucData;

if (ucRxBuffer != 0x42 && ucRxBuffer != 0x4D){
    ucRxCnt = 0;
}
if (ucRxCnt > 31) {
    _params._P = (float)ucRxBuffer * 256 + (float)ucRxBuffer; //美国标准
    //    _params._P = (float)ucRxBuffer * 256 + (float)ucRxBuffer; //中国标准
    ucRxCnt = 0;
}
}

//中位值平均滤波,处理PM2.5的值
#define FILTER_N 5
int Filter() {
int i;
int filter_sum = 0;
int filter_max, filter_min;
int filter_buf;
for (i = 0; i < FILTER_N; i++) {
    filter_buf = _params._P;
    delay(1);
}
filter_max = filter_buf;
filter_min = filter_buf;
filter_sum = filter_buf;
for (i = FILTER_N - 1; i > 0; i--) {
    if (filter_buf > filter_max)
      filter_max = filter_buf;
    else if (filter_buf < filter_min)
      filter_min = filter_buf;
    filter_sum = filter_sum + filter_buf;
    filter_buf = filter_buf;
}
i = FILTER_N - 2;
filter_sum = filter_sum - filter_max - filter_min + i / 2; // +i/2 的目的是为了四舍五入
filter_sum = filter_sum / i;
return filter_sum;
}

void loop() {

while (mySerial.available())   {
    getPM25(mySerial.read());
}
_params.P = Filter();

//DHT22更新数据速度很慢,所以不要读的那么快
if (loopCnt % 40 == 0) {
    getDHT22();
}

if (++loopCnt > 99) {
    loopCnt = 0;
}

u8g.firstPage();
do {
    draw();
} while ( u8g.nextPage());
}





试了多个版本都是一样的问题,出错.....

zjz5717 发表于 2016-6-6 18:19:10

你好,你把进度条往上翻一下,会有详细信息

changanniu 发表于 2016-6-7 16:48:40

楼上的朋友,没有任何提示,普通编辑错误的话会那条变色,提示你是这里出错了,但是有意思的是,整个都无任何提示,只是下面出来一个编辑错误

zjz5717 发表于 2016-6-7 19:51:31

changanniu 发表于 2016-6-7 16:48 static/image/common/back.gif
楼上的朋友,没有任何提示,普通编辑错误的话会那条变色,提示你是这里出错了,但是有意思的是,整个都无任何提示 ...

不啊,如果是头文件的问题在文件中是不会高亮的,而且只有一个编译错误说明他没有把进度条往上拉

changanniu 发表于 2016-6-9 13:09:10

Arduino:1.6.5 (Windows 7), 板:"Arduino Nano, ATmega328"

SoftwareSerialExample.ino:10:17: fatal error: DHT.h: No such file or directory
compilation terminated.
编译有误。

报告将会包含更多的信息
"在编译时,输出详细信息"
在 文件>首选项 中启用


由于是新手,1小时才能回一次贴,。。。。。。。所以这次把信息都发上来

changanniu 发表于 2016-6-9 17:38:04

zjz5717 发表于 2016-6-7 19:51 static/image/common/back.gif
不啊,如果是头文件的问题在文件中是不会高亮的,而且只有一个编译错误说明他没有把进度条往上拉

老师您好,由于是新手,1小时才能回一次贴,。。。。。。。所以这次把信息都发上来,麻烦您帮忙看看

zjz5717 发表于 2016-6-9 20:44:46

changanniu 发表于 2016-6-9 17:38 static/image/common/back.gif
老师您好,由于是新手,1小时才能回一次贴,。。。。。。。所以这次把信息都发上来,麻烦您帮忙看看

你好,错误信息提示是:加载头文件DHT.h失败,没有找到这个文件,如果你是要使用这个库的话需要先把这个库放在arduino安装目录下的libraries文件夹(用名叫dht的文件夹储存,不要压缩文件)

zjz5717 发表于 2016-6-9 20:47:12

changanniu 发表于 2016-6-9 17:38 static/image/common/back.gif
老师您好,由于是新手,1小时才能回一次贴,。。。。。。。所以这次把信息都发上来,麻烦您帮忙看看

我的这个库是在github上找到的,可能没有你需要的功能,建议你先到卖你模块的商家那里索要库文件

changanniu 发表于 2016-6-10 20:46:32

zjz5717 发表于 2016-6-9 20:47 static/image/common/back.gif
我的这个库是在github上找到的,可能没有你需要的功能,建议你先到卖你模块的商家那里索要库文件

http://www.geek-workshop.com/thread-25589-1-1.html
您好老师,我是做的上面这个网址里面的东西,麻烦您看看,太感谢了

zjz5717 发表于 2016-6-10 21:43:57

changanniu 发表于 2016-6-10 20:46 static/image/common/back.gif
http://www.geek-workshop.com/thread-25589-1-1.html
您好老师,我是做的上面这个网址里面的东西,麻烦 ...

这是这个链接上面的库文件,你下载之后放到arduino安装目录的libraries文件夹,需要解压缩

changanniu 发表于 2016-6-12 19:46:18

zjz5717 发表于 2016-6-10 21:43 static/image/common/back.gif
这是这个链接上面的库文件,你下载之后放到arduino安装目录的libraries文件夹,需要解压缩

Arduino:1.6.9 (Windows 7), 开发板:"Arduino Mini, ATmega328"

C:\Program Files\Arduino\libraries\IIO\IIO.ino:11:20: fatal error: U8glib.h: No such file or directory

#include <U8glib.h>

                  ^

compilation terminated.

exit status 1
为开发板 Arduino Mini 编译时出错。

在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。



U8glib.h
现在是缺这个字库。。。。,不知道是用哪个字库,老师,麻烦您上传一下这个字库就解决了,新学者,哎。。。。通过这件事长知识了。。。。。。

zjz5717 发表于 2016-6-13 17:17:28

changanniu 发表于 2016-6-12 19:46 static/image/common/back.gif
Arduino:1.6.9 (Windows 7), 开发板:"Arduino Mini, ATmega328"

C:\Program Files\Arduino\libraries ...

好的,附件已经上传,请查收
页: [1]
查看完整版本: 为什么这源码用在我的Arduino软件上出现编辑错误呢?