hunduncn 发表于 2011-10-27 21:59:54

模拟引脚 跟 数字引脚 做开关引脚 哪种方案更好呀。

弘毅 发表于 2011-10-28 14:19:53

hunduncn 发表于 2011-10-27 21:59 static/image/common/back.gif
模拟引脚 跟 数字引脚 做开关引脚 哪种方案更好呀。

如果只是开,关,不需要对电压进行判断,那数字引脚做开关好

wen 发表于 2011-11-2 16:55:31

弘毅 发表于 2011-7-10 13:12 static/image/common/back.gif
这个现象很有可能是和arduino控制板中使用的电容有关,如果有电容,电容充满电以后,就算电源消失,电量 ...

嗯是的我做的是 用数字引脚
也发现这样的问题    当用数字引脚出来的线点一下5V的输出电压处马上移开 LED可以亮更长时间

wen 发表于 2011-11-2 16:58:01

偶是谁 发表于 2011-7-10 17:52 static/image/common/back.gif
补上:好像数字IO口开关应用不存在这种问题

有的 同样存在

wen 发表于 2011-11-4 19:25:42

按键实验对空气湿度好像也有要求

弘毅 发表于 2011-11-4 20:29:27

wen 发表于 2011-11-4 19:25 static/image/common/back.gif
按键实验对空气湿度好像也有要求

我对帖子进行了补充,下拉电阻后,干扰问题就没有了。

wen 发表于 2011-11-5 00:47:08

弘毅 发表于 2011-11-4 20:29 static/image/common/back.gif
我对帖子进行了补充,下拉电阻后,干扰问题就没有了。

补充很给力 学到很多{:3_59:}

━__Neo_ˇ 发表于 2011-12-2 21:53:17

:lol:lol:lol:lol:lol:lol:lol:lol飘啊飘啊飘···

树·水·风 发表于 2011-12-14 20:42:57

"analogRead()作用是读取模拟口的数值。"它读取的电压值是开关两端的电压吗?
为什么按下开关电压值会大于4.88V,而断开开关读取电压小于4.88V?
我对板上构件不是很了解。

树·水·风 发表于 2011-12-14 21:26:09

analogRead读取的值是不是该pin端口与GND之间的电压值

iamted 发表于 2012-2-8 20:42:17

如果我想加多一個BUTTON和一個OUTPUT的話
應該怎寫?
int Button=3;
int Button2=2;
int OUT=11;
int OUT2=12;
boolean onoff=LOW;
boolean onoff2=LOW;
void setup()
{
pinMode(Button2,INPUT); //按钮端子作为输入
pinMode(Button,INPUT);
pinMode(OUT,OUTPUT);
pinMode(OUT2,OUTPUT);
}
void loop()
{

if(digitalRead(Button2)==LOW)//由于本例检测上升沿触发,所以先检测输入是否低电平,
{
    delay(10); //然后延时一段时间,
    if(digitalRead(Button2)==HIGH) //然后检测是不是电平变为高了。是的话,就是刚好按钮按下了。
    {
      digitalWrite(OUT2,onoff2);//写入当前LED状态onoff,
      onoff2=(!onoff2); //然后LED状态反转,以便下一次使用。
      delay(10);//延时一段时间,防止按钮突然断开再按下。
      while(digitalRead(Button2)==HIGH) //判断按钮状态,如果仍然按下的话,等待松开。防止一直按住导致LED输出端连续反转
      {
      delay(1);
      }
    }
}
if(digitalRead(Button)==LOW)//由于本例检测上升沿触发,所以先检测输入是否低电平,
{
    delay(10); //然后延时一段时间,
    if(digitalRead(Button)==HIGH) //然后检测是不是电平变为高了。是的话,就是刚好按钮按下了。
    {
      digitalWrite(OUT,onoff);//写入当前LED状态onoff,
      onoff=(!onoff); //然后LED状态反转,以便下一次使用。
      delay(10);//延时一段时间,防止按钮突然断开再按下。
      while(digitalRead(Button)==HIGH) //判断按钮状态,如果仍然按下的话,等待松开。防止一直按住导致LED输出端连续反转
      {
      delay(1);
      }
    }
}
}
我這樣寫發現有DELAY:'(

弘毅 发表于 2012-2-8 21:54:48

iamted 发表于 2012-2-8 20:42 static/image/common/back.gif
如果我想加多一個BUTTON和一個OUTPUT的話
應該怎寫?
int Button=3;


用delayMicroseconds()替代delay()试试

Bobo 发表于 2012-3-13 22:10:23

为什么我按照上面的步骤弄了以后LED灯一直亮?

Jahg 发表于 2012-4-7 17:03:26

本帖最后由 Jahg 于 2012-4-7 17:04 编辑

iamted 发表于 2012-2-8 20:42 static/image/common/back.gif
如果我想加多一個BUTTON和一個OUTPUT的話
應該怎寫?
int Button=3;


int kaiguan=12;//连接开关到IO12
int LED=3;//连接LED到3
int onoff=0;//设定一个变量用于记录开关被按下了偶数还是奇数次,按一次,为奇数次,=1;两下就是偶数次,=0
void setup(){
pinMode(kaiguan,INPUT);
pinMode(LED,OUTPUT);
}
void loop(){
    if(digitalRead(kaiguan)==LOW){
      delay(10);
      if(digitalRead(kaiguan)==HIGH){
       if (onoff==0)
       onoff=1;
       else onoff=0;//记录开关被按下的次数部分
      }
    }
if(onoff==0)
digitalWrite(LED,HIGH);
else digitalWrite(LED,LOW);//根据到底按了多少下确定到底是点亮LED还是熄灭
}


代码我修改了一下,测试发现很稳定。(注意io口有改过)

xingbulu 发表于 2012-4-13 15:58:05

还好 点亮了
页: 1 [2] 3 4 5
查看完整版本: arduino学习笔记6 - 按键实验