ro0t
发表于 2013-5-31 10:51:21
我觉得是不是可以改成
digitalWrite(2,HIGH);
delay(30)
digitalWrite(2,LOW);}
这样的形式
板子没在手边 没法试验。。。。
J.Li
发表于 2013-6-9 16:18:46
做成呼吸灯那样子的也还挺好的~
J.Li
发表于 2013-6-9 16:56:15
我晕,看这个有光的情况下的串口输出:
434, 21
429, 18
414, 8
397, 1
376, 15
354, 29
332, 43
312, 56
294, 67
277, 78
280, 76
289, 70
303, 61
324, 48
347, 33
370, 19
395, 3
415, 9
430, 19
436, 22
436, 22
426, 16
410, 6
390, 6
371, 18
349, 32
328, 45
310, 57
292, 68
282, 75
289, 70
305, 60
323, 49
347, 33
373, 17
400, 0
前一组数字是A0读数,后一个是处理之后要输出到 #11 脚的数值。灯光一直没有变化,但差异实在是太大了,怎么回事?
J.Li
发表于 2013-6-9 16:58:55
float top = 400.0;
int mapAnalogValue(int in)
{
return (int) abs(top-in)/top*255;
}
void setup()
{
Serial.begin(9600);
pinMode(11, OUTPUT);
}
void loop()
{
int n = analogRead(A0);
Serial.print(n);
Serial.print(", ");
Serial.println(mapAnalogValue(n));
analogWrite(11, mapAnalogValue(n));
delay(50);
}直接使用上一个实验的光敏三极管;led随灯的强度变强而减弱。但问题就在于最后的光敏三极管在读数时候的抖动~见18楼。
chaoser
发表于 2013-8-10 14:27:38
本帖最后由 chaoser 于 2013-8-10 16:36 编辑
LZ老大,公用电阻的技巧多谢了。
有个小问题,电阻接在LED负极上真的可以吗?似乎看其他书,都强调要接在正极端,因为这是高电位的一侧。当然,我甚至冒险试过不接电阻,LED都没烧~~~不过还是感觉好危险。
下面是得瑟时间,先上电路图:
再上程序,功能一样,也是分级显示当前亮度,不过我用了六个灯,而且只选了亮度高的红蓝灯。
其实按我的接线方法,可以pwm输出的,不过懒得写程序了。。。。
/* 程序功能:Arduino作为光照度显示器,光线越强,LED会亮的越多 */
void setup () {
Serial.begin(9600);
for(int i=3;i<=12;i++) pinMode(i,OUTPUT);
}
void loop () {
int n=analogRead(A0);
Serial.println(n);
digitalWrite(3,(n>=1));
digitalWrite(5,(n>=5));
digitalWrite(6,(n>=20));
digitalWrite(9,(n>=50));
digitalWrite(10,(n>=100));
digitalWrite(11,(n>=800));
delay(200);
}
迷你强
发表于 2013-8-12 11:25:01
chaoser 发表于 2013-8-10 14:27 static/image/common/back.gif
LZ老大,公用电阻的技巧多谢了。
有个小问题,电阻接在LED负极上真的可以吗?似乎看其他书,都强调要接在 ...
没事的。。。只是规范,一般遵守规范不容易弄出问题,乱弄容易出问题
agaonet
发表于 2013-8-19 22:00:33
chaoser 发表于 2013-8-10 14:27 static/image/common/back.gif
LZ老大,公用电阻的技巧多谢了。
有个小问题,电阻接在LED负极上真的可以吗?似乎看其他书,都强调要接在 ...
好程序,很健康。赞一个。
1CSH1
发表于 2013-9-3 20:35:23
就源代码看,好像一个时间不止一个led灯亮,假设n=81,满足n>10、n>20、n>40、n>80,所以4盏灯都会亮,应该在if里面加上“与”语句吧:if(n>10&&n<20)......
AlfredLanning
发表于 2013-10-28 14:44:30
万马奔腾 发表于 2013-3-31 17:51 static/image/common/back.gif
/*
作者:极客工坊-迷你强
时间:2012年7月4日
这个比较亮是因为可以同时显示四个吗?
最后的醉
发表于 2013-12-9 00:39:31
int n =analogRead(A0);
怎么知道n的范围是多少呢?
为什么n就从n>=10开始了呢?
迷你强
发表于 2013-12-13 21:12:44
实际测量下,大概估算取值,差不多。。。就OK了。。。。
sinaydj2
发表于 2014-2-6 23:07:36
本帖最后由 sinaydj2 于 2014-2-6 23:48 编辑
http://v.youku.com/v_show/id_XNjY5OTE1NzI0.html强哥我改了一下。这样会亮一点。有没有更简练的代码呢?望高人指点。
void setup ()
{
Serial.begin(9600);
for(int i=2; i<=5;i++) //使用循环方式创建2-5号数字口为输出模式
{
pinMode(i,OUTPUT);
}
}
void loop ()
{
int n =analogRead(A0);//读取光敏三极管的读数
if (n<650) //各个颜色层级判断,各个层级数值,大家可根据自己的使用环境进行相应调整,最小0,最大1023
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
}
if (n>120)
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
}
if (n>800)
{
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
}
if (n>900)
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
}
if (n>950)
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
}
Serial.println(n);
}
无泪夭邪
发表于 2014-3-8 21:15:17
楼主,为什么LED灯没有设置延迟,灯的亮的时间是怎么控制的?
春日迟迟n
发表于 2014-7-4 19:32:25
为什么给完高定平不延时就给低电平???
Black7
发表于 2014-10-10 20:27:30
绿灯看起来基本上不亮,可以把n的值适当的调高!!