cityant
发表于 2019-7-7 12:35:01
附件增加了对光敏电阻的支持;
注意:
1、ADC接模拟口AO;、
2、在我代码中,环境光越亮ADC读出的数值越小。
Q88888888Q
发表于 2019-7-7 14:56:58
cityant 发表于 2019-7-7 12:35
附件增加了对光敏电阻的支持;
不知哪里出了问题,接进去没反应,光敏模块用万用表量确实是越亮电压越小。
cityant
发表于 2019-7-7 15:46:39
Q88888888Q 发表于 2019-7-7 14:56
不知哪里出了问题,接进去没反应,光敏模块用万用表量确实是越亮电压越小。 ...
你用万用表量到的光敏电阻电压是多少?esp8266adc引脚接受的电压范围是0-1v,如果超过1v输出值会一直是1024。你在checklight()函数中加个打印,把adc值从串口打印出来看看。
Q88888888Q
发表于 2019-7-7 16:15:32
cityant 发表于 2019-7-7 15:46
你用万用表量到的光敏电阻电压是多少?esp8266adc引脚接受的电压范围是0-1v,如果超过1v输出值会一直是10 ...
室内光线加用手电照着的截图,屏幕亮度没变化
cityant
发表于 2019-7-7 17:22:00
本帖最后由 cityant 于 2019-7-7 17:31 编辑
Q88888888Q 发表于 2019-7-7 16:15
室内光线加用手电照着的截图,屏幕亮度没变化
不好意思,程序修改漏了一处:L,需要增加下面红色的一行
void Display() {
int num = 0;
lc.setIntensity(address, lcdlight); //设定Led亮度
for(int address=3; address>=0; address--){ //逐个扫描四个LED屏
for(int col=0;col<8;col++) { //每块LED屏逐列扫描;
lc.setColumn(address,col,disp); //使用列方式显示;
num ++;
}
}
}
修改后的代码
Q88888888Q
发表于 2019-7-7 18:16:48
cityant 发表于 2019-7-7 17:22
不好意思,程序修改漏了一处,需要增加下面红色的一行
void Display() {
好像还出错:D
cityant
发表于 2019-7-7 19:17:59
Q88888888Q 发表于 2019-7-7 18:16
好像还出错
这样:
void Display() {
int num = 0;
for(int address=3; address>=0; address--){ //逐个扫描四个LED屏
for(int col=0;col<8;col++) { //每块LED屏逐列扫描;
lc.setIntensity(address, lcdlight); //设定Led亮度
lc.setColumn(address,col,disp); //使用列方式显示;
num ++;
}
}
}
我样应该可以了。
我改动电路后就没有在这套代码上继续走了,临时改一下未验证容易出错,不好意思。:L
78678967
发表于 2019-7-7 19:34:40
本帖最后由 78678967 于 2019-7-7 21:41 编辑
抄你的最新的代码里面好像没有这个
cityant
发表于 2019-7-7 20:12:48
78678967 发表于 2019-7-7 19:34
求加一个用传感器控制屏幕亮灭的代码整天亮着也浪费电
加一个人体红外传感器,输出高低电平。找一个数字引脚通过读取电平高低来决定是否关闭LED显示。
1、定义一个开关变量;
boolean lcdstatus = true; //LCD显示状态,true点亮,false关闭
2、在主循环中定时读取红外传感器的状态;
lcdstatus = digitalRead(IRPIN); //IRPIN为连接红外传感器的引脚
3、在display()函数中依据lcdstatus决定是否关闭LED显示;
void Display() {
int num = 0;
for(int address=3; address>=0; address--){ //逐个扫描四个LED屏
if(lcdstatus){
lc.shutdown(address,false); //开启LED屏幕显示
for(int col=0;col<8;col++) { //每块LED屏逐列扫描;
lc.setIntensity(address, lcdlight); //设定Led亮度
lc.setColumn(address,col,disp); //使用列方式显示;
num ++;
}
}
else{
lc.shutdown(address,true); //lcdstatus 为false时关闭屏幕,进入节电模式
}
}
}
你参考试试吧,我没环境,没有做验证。
Q88888888Q
发表于 2019-7-7 21:09:42
cityant 发表于 2019-7-7 19:17
这样:
void Display() {
可以了,正常了!谢谢!麻烦你一遍又一遍的修改了:D
cityant
发表于 2019-7-7 21:36:47
78678967 发表于 2019-7-7 19:34
else{
lcdlight = 0;}
}
lcdlight变量没有声明。程序开头部分放这条了吗?
unsigned int lcdlight = 6; //LED屏亮度
78678967
发表于 2019-7-7 21:54:50
本帖最后由 78678967 于 2019-7-7 22:11 编辑
unsigned int lcdlight = 6; //LED屏亮度
void Display() {
放这里就成了............
加传感器就乱套了:'(
'lcdstatus' does not name a type
cityant
发表于 2019-7-8 12:02:01
78678967 发表于 2019-7-7 21:54
unsigned int lcdlight = 6; //LED屏亮度
void Display() {
放这里就成了............
这个lcdlight在checklight()函数也会用,建议放到最前面变量定义那儿。
这个lcdstatus是加红外传感器示例里用到的变量,你都放代码里了?建议调完一个再加一个。
78678967
发表于 2019-7-8 20:37:16
cityant 发表于 2019-7-8 12:02
这个lcdlight在checklight()函数也会用,建议放到最前面变量定义那儿。
这个lcdstatus是加红外传感器示 ...
这样子对不对
Q88888888Q
发表于 2019-7-9 13:44:59
cityant 发表于 2019-7-8 12:02
这个lcdlight在checklight()函数也会用,建议放到最前面变量定义那儿。
这个lcdstatus是加红外传感器示 ...
8266芯片板上的蓝色指示灯不知能不能关闭
页:
1
2
3
4
5
6
7
[8]
9
10
11
12
13
14
15