Tonytiger_CSQ 发表于 2015-1-25 16:55:35

在原先传感器电路上接一个LED用输出,扫样频率为何会变慢

急向各路大神求助!!


【目的】手上有一块Arduino UNO板,一个BH1750型光照度传感器,准备使用它进行基本的光照度判断等操作。
【问题】
    如题,原先传感器电路(下图中不含虚线矩形框的部分)能够正常工作,扫样频率为135ms/次,并按照这个频率在串口监视器上显示出数据。
    当我附加了一个LED作输出信号时(if光亮度大于某值就会发光),在程序中并没有新添delay等其他有关时间的语句,
    电路能正常工作,但是无论是串口监视器上的数据,还是Arduino板子上的TX小灯,出现/闪光频率都有很明显的降低。
   
    ( ⊙ o ⊙ )啊!因为是在做一个关于 预警引发光敏性癫痫的光 有关的课题,如果扫样频率太低的话等预警结果判定出来患者早就发作了……真心挺困扰的。


    希望各路大神们能看一下到底出了什么问题,不胜感谢!!
    预祝各位羊年快乐!!

【以下为接线图例与程序】


#include <Wire.h>
#include <math.h>
int BH1750address = 0x23;//BH1750 I2C地址
byte buff;
int led = 5;


void setup()
{
Wire.begin();
Serial.begin(9600);
pinMode(led,OUTPUT);
}
void loop()
{

   if( BH1750() > 80)
   {
   digitalWrite(led,HIGH);
   }
   else
   {
   digitalWrite(led, LOW);
   }

   Serial.print( BH1750() );
   Serial.println("");

}
double BH1750() //BH1750设备操作
{
int i=0;
double val=0;
//开始I2C读写操作
Wire.beginTransmission(BH1750address);
Wire.write(0x10);//1lx reolution 120ms//发送命令
Wire.endTransmission();
delay(135);
//读取数据
Wire.beginTransmission(BH1750address);
Wire.requestFrom(BH1750address, 2);
while(Wire.available()) //
{
buff = Wire.read(); // receive one byte
i++;
}
Wire.endTransmission();
if(2==i)
{
val=((buff<<8)|buff)/1.2;
}
return val;
}

Ricky 发表于 2015-1-25 21:44:22

需要搭的样例测试一下,代码上目测没有找出什么问题。

cj2q 发表于 2015-1-26 00:13:11

话说光敏性癫痫是什么东西啊

Tonytiger_CSQ 发表于 2015-1-26 13:48:55

cj2q 发表于 2015-1-26 00:13
话说光敏性癫痫是什么东西啊

嘛这个啊……一时半会也说不清楚,但是你可以去看一下97年的神奇宝贝3D龙事件应该可以了解个大概
【咱是不是跑偏了;P】

Cain 发表于 2015-1-26 15:48:59

只是多加了个if判断?应该不会这样啊

Tonytiger_CSQ 发表于 2015-1-26 18:22:33

Cain 发表于 2015-1-26 15:48
只是多加了个if判断?应该不会这样啊

所以说很困扰嘛:dizzy:

Cain 发表于 2015-1-26 22:31:21

Tonytiger_CSQ 发表于 2015-1-26 18:22
所以说很困扰嘛

有没有试着用别的引脚控制灯?我不知道是不是和PWM引脚有关

Cain 发表于 2015-1-26 22:34:01

cj2q 发表于 2015-1-26 00:13
话说光敏性癫痫是什么东西啊

就是很鲜艳的几种颜色快速变换,闪瞎眼的那种。然后感到头晕,严重点就昏迷了

Tonytiger_CSQ 发表于 2015-1-27 09:19:28

Cain 发表于 2015-1-26 22:31
有没有试着用别的引脚控制灯?我不知道是不是和PWM引脚有关

如果说是Digital对的那一排引脚的话好像换了别的序号的引脚输出灯好像也没有什么作用……我先试试看
页: [1]
查看完整版本: 在原先传感器电路上接一个LED用输出,扫样频率为何会变慢