干涸的布拉格 发表于 2013-2-22 19:49:20

代码有问题!减一档的时候灯反而会再亮一下再逐渐变暗

干涸的布拉格 发表于 2013-2-22 19:53:46

int n=0;
void setup ()
{
pinMode(4,INPUT);
pinMode(6,OUTPUT);      //该端口需要选择有#号标识的数字口
pinMode(10,INPUT);
}

void loop()
{
int up =digitalRead(4);          //读取4号口的状态
int down = digitalRead(10);      //读取10号口的状态   
if (up==HIGH)                  //判断4号口目前是否是高电平
{
   n=n+5;                         //每次累加值为5
    analogWrite(6,n);               //使用PWM控制6号口输出,变量n的取值范围是0-255
                        
    if (n>=255) {
      n=255;
    }            //限定最大值为255   
    delay (300);
}
if (down==HIGH)                  //减少亮度
{
    n=n-5;
    analogWrite(6,n);
      if (n<=0) {
      n=0;
    }
    delay (300);
}
}

paperen 发表于 2013-3-2 00:06:00

如果两个按钮一起按下去会怎样?
if (up==HIGH)
if (down==HIGH)
两个if在同一时间都会进入么?

迷你强 发表于 2013-3-2 18:29:43

paperen 发表于 2013-3-2 00:06 static/image/common/back.gif
如果两个按钮一起按下去会怎样?两个if在同一时间都会进入么?

程序从上往下执行。。

paperen 发表于 2013-3-3 12:52:02

迷你强 发表于 2013-3-2 18:29 static/image/common/back.gif
程序从上往下执行。。

那就是两个if都执行了

<一一巛 发表于 2013-3-4 12:24:37

本帖最后由 <一一巛 于 2013-3-5 10:14 编辑

交作业:loveliness:
int n=0;
void setup() {   
   pinMode(11, OUTPUT);
   pinMode(6, INPUT);      
}
void loop() {
   if(digitalRead(6)==HIGH) {
    analogWrite(11, n);
    delay(200);
   n+=5;      
    if (n>=80) {n=0;}
}
else
   digitalWrite(11, 0);
}

stongage9 发表于 2013-3-30 11:22:32

本帖最后由 stongage9 于 2013-3-30 15:32 编辑

强哥,劳驾您给指点下吧。我是新手,但是特别想学这个。我按照线路图检查了好几遍,都没有发现问题出在哪。我这个命令行是复制粘贴的,所以应该不存在编程错误。但是接上线后就变成按钮起不到任何作用,而是从重置开始就灯自己在慢慢变亮。无论左右按键均无法控制。附上我的图。如能得到指点,万分感激~!:'(http://h.hiphotos.baidu.com/album/s%3D1600%3Bq%3D90/sign=deb9664c6f061d957946333e4bc431a0/ca1349540923dd5421f6b81cd009b3de9c824838.jpg

213菜鸟 发表于 2013-4-1 18:11:21

if (up==HIGH)                  //判断4号口目前是否是高电平22.{23.    analogWrite(6,n);               //使用PWM控制6号口输出,变量n的取值范围是0-25524.   n=n+5;                         //每次累加值为525.    if (n>=255) {26.      n=255;27.    }            //限定最大值为255   28.    delay (300);29.}

我想请问下这个语句是怎么实现灯的亮度增加的

迷你强 发表于 2013-4-2 09:18:05

213菜鸟 发表于 2013-4-1 18:11 static/image/common/back.gif
if (up==HIGH)                  //判断4号口目前是否是高电平22.{23.    analogWrite(6,n);         ...

pwm 调整led的开关频率来控制亮度

imihuang 发表于 2013-4-9 14:21:05

强哥,我看完你的代码觉得实际效果应该是假设你按下了up 没有按下 down 这个时候会300毫秒增加一次亮度直到255,如果你按下了down而没有按下up应该会每300毫秒减少一个亮度直到0,如果同时都按下了,应该是会有5个级别的轻微的频率为600毫秒的亮度闪烁,而不是你视频的按一下量一下按一下量一下啊啊啊?难道我对loop的原理理解有误??谢谢强哥。

213菜鸟 发表于 2013-4-9 20:53:28

迷你强 发表于 2013-4-2 09:18 static/image/common/back.gif
pwm 调整led的开关频率来控制亮度

谢谢你~~~学习了~~~

213菜鸟 发表于 2013-4-16 23:42:57

强哥。我想问下arduino有没有类似于子程序的东西?我想把这个程序变成按一下是第一种亮灯模式(子程序一)按两下是子程序二这样的,以此类推~然后另外一边是反过来的~
拜托强哥了。

迷你强 发表于 2013-4-21 21:32:46

213菜鸟 发表于 2013-4-16 23:42 static/image/common/back.gif
强哥。我想问下arduino有没有类似于子程序的东西?我想把这个程序变成按一下是第一种亮灯模式(子程序一)按 ...

有的。。。

johnny 发表于 2013-4-23 14:53:21

为什么感觉有点不对啊,我按一下UP按钮,必须得按三下DOWN才能把灯关掉,看程序N增减的幅度是一样的啊,十分不解,而且感觉按DOWN时,等实际是变亮了一级然后才逐渐熄灭的,求解答???????????

johnny 发表于 2013-4-23 15:27:39

接上问:我将UP设为n=n+5,DOWN设为n=n-10,按一下UP按钮,必须得按两下DOWN才能把灯关掉。按理说N初始值为0 ,增减的幅度应相同啊,不知为何出现这种情况。
页: 1 2 [3] 4 5 6
查看完整版本: Arduino入门教程--第五课--按钮PWM控制LED亮度