极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12283|回复: 5

菜鸟求助,为啥接了IIC显示数据就全乱了

[复制链接]
发表于 2015-7-20 01:06:34 | 显示全部楼层 |阅读模式
一个PM2.5检测仪,如果不接IIC接口的TM1650四位LED数码管,从串口观察数据一切正常,但是一接入数据就乱了忽大忽小还经常出负值,关键是程序完全没变动。求大家指点一下,是程序哪错了?

  1. #include <Wire.h>
  2. #include <TM1650.h>

  3. TM1650 d;
  4. char *line=new char[3];
  5. int dustPin=A0;
  6. int dustVal=0;

  7. int ledPower=2;
  8. int delayTime=280;
  9. int delayTime2=40;
  10. float offTime=9680;
  11. void setup(){
  12. Wire.begin();
  13. Serial.begin(9600);
  14. pinMode(ledPower,OUTPUT);
  15. //pinMode(4, OUTPUT);
  16. }

  17. void loop(){
  18. // ledPower is any digital pin on the arduino connected to Pin 3 on the sensor
  19. digitalWrite(ledPower,LOW); // power on the LED
  20. delayMicroseconds(delayTime);
  21. dustVal=analogRead(dustPin); // read the dust value via pin 5 on the sensor
  22. delayMicroseconds(delayTime2);
  23. digitalWrite(ledPower,HIGH); // turn the LED off
  24. delayMicroseconds(offTime);

  25. delay(3000);
  26. Serial.println(dustVal);


  27. float dV3=dustVal;
  28. dV3=((dV3*5/1024)*0.172-0.0999)*1000;
  29. Serial.println("PM2.5:");

  30. d.displayOn();
  31. int data=dV3;
  32. sprintf(line, "%d", data );
  33. d.displayString(line);//实际的颗粒数
  34. Serial.println(dV3);
  35. Serial.println("data");
  36. Serial.println(data);
  37. Serial.println("line");
  38. Serial.println(line);
  39. }

复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-7-20 10:00:15 | 显示全部楼层
考虑下显示模块的电磁干扰
回复 支持 反对

使用道具 举报

发表于 2015-7-20 10:15:26 | 显示全部楼层
嗯嗯,电磁干扰或供电部稳定
回复 支持 反对

使用道具 举报

发表于 2015-7-20 11:51:02 | 显示全部楼层
初学者学习
回复 支持 反对

使用道具 举报

发表于 2015-7-20 14:04:24 | 显示全部楼层
除了電的干擾, 顯示屏的光線對 PM2.5 也會有影響的, PM2.5 最好可以適當地遮光.
回复 支持 反对

使用道具 举报

发表于 2015-7-21 19:07:07 | 显示全部楼层
电源纹波或者是时序
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 19:50 , Processed in 0.056268 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表