创客联盟网

标题: Arduino小白自学教程014——analogRead之光敏电阻+视频! [打印本页]

作者: CCFIVE    时间: 2013-7-24 23:17
标题: Arduino小白自学教程014——analogRead之光敏电阻+视频!
程序依然沿用上节的
[mw_shl_code=cpp,true]void setup()
{
    Serial.begin(9600);
}
void loop()
{
    Serial.println(analogRead(A0));
    delay(1000);
}[/mw_shl_code]

下面看一下具体接线:
电阻还用5.1K或者10K
(, 下载次数: 111)
(, 下载次数: 110)
然后我们打开串口窗口可以看到,返回的数值在280左右跳动,你的数值不一定是280,因为我们所处的光照环境是不同的! (, 下载次数: 106)

被遮住的时候 (, 下载次数: 102) (, 下载次数: 109) 可以看到数值明显变小了,我们的光控开关就是利用这个原理,设定一个值,例如我现在设定一个门槛值200,当天黑了,值返回是100,小于门槛值,那么灯就亮。程序是这样写的:

[mw_shl_code=cpp,true]void setup()
{
    Serial.begin(9600);
    pinMode(7,OUTPUT);
}
void loop()
{
    int a=analogRead(A0);
    Serial.println(a);
    if(a<200)
    {
      digitalWrite(7,HIGH);
    }
    else
    {
      digitalWrite(7,LOW);
    }

}[/mw_shl_code]


}具体接线,我们要用上 LED和光敏电阻
(, 下载次数: 109)
https://player.youku.com/player.php/sid/XNTg5ODM0Mzk2/v.swf
作者: 爷灬淡定    时间: 2013-8-13 19:55
void setup()
{
  Serial.begin(9600);
  pinMode(1,OUTPUT);
}
void loop()
{
  int t=analogRead(A5);
  Serial.println(t);
  
  if(t>1023)
  {
digitalWrite(1,HIGH);
}
else
{
  digitalWrite(1,LOW);
}
}

为什么我这么写。t>1023,二极管pinMode(1)还是长亮
而且串口监视器上是9
918
919
918
919
919
919
918
919
按理说。led不会亮的啊,这是为什么

作者: CCFIVE    时间: 2013-8-13 20:27
爷灬淡定 发表于 2013-8-13 19:55
为什么我这么写。t>1023,二极管pinMode(1)还是长亮
而且串口监视器上是9
918

看下你的LED接线,LED接线有两种接法,分别是高定平亮 和 低电平亮,你看你是用了哪种
作者: 爷灬淡定    时间: 2013-8-14 11:42
就是这样的,应该没问题啊
作者: CCFIVE    时间: 2013-8-14 12:39
爷灬淡定 发表于 2013-8-14 11:42
就是这样的,应该没问题啊

LED的正极接哪个引脚?

作者: 爷灬淡定    时间: 2013-8-14 18:06
CCFIVE 发表于 2013-8-14 12:39
LED的正极接哪个引脚?

接在pinMode 1

作者: CCFIVE    时间: 2013-8-15 13:05
爷灬淡定 发表于 2013-8-14 18:06
接在pinMode 1
if(t>1023)
  {
digitalWrite(1,HIGH);
}
else
{
  digitalWrite(1,LOW);
}


你的代码决定你的LED不会亮...你都知道t不可能大于1023,你的代码表达的是,当t>1023,digitalWrite(1,HIGH) ,LED才亮

[mw_shl_code=cpp,true]if(t>1023)
  {
digitalWrite(1,LOW);
}
else
{
  digitalWrite(1,HIGH);
}
[/mw_shl_code]

这样才对

作者: 爷灬淡定    时间: 2013-8-15 18:17
CCFIVE 发表于 2013-8-15 13:05
你的代码决定你的LED不会亮...你都知道t不可能大于1023,你的代码表达的是,当t>1023,digitalWrite(1 ...

可是我的意思是说,我用
if(t>1023)
  {
digitalWrite(1,LOW);
}
else
{
  digitalWrite(1,HIGH);
}


[color=black !important]if(t>1023)
[color=black !important]  {
[color=black !important]digitalWrite(1,HIGH);
[color=black !important]}
[color=black !important]else
[color=black !important]{
[color=black !important]  digitalWrite(1,LOW);
}
[color=black !important]}
[color=black !important]

[color=black !important]LED都会常亮,这是为什么?难道是我的有问题,对了,求qq,我准备买点小东西。
[color=black !important]还有,我甚至这样写程序
[color=black !important] (, 下载次数: 42)
[color=black !important]LED都会常亮,难道我的电阻真有问题?
[color=black !important]



作者: 爷灬淡定    时间: 2013-8-17 11:52
爷灬淡定 发表于 2013-8-15 18:17
可是我的意思是说,我用
if(t>1023)
  {

事实证明是光敏电阻坏了,换了一个就好了…………





欢迎光临 创客联盟网 (https://immaker.org/) Powered by Discuz! X3.3