极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 23519|回复: 12

通过PWM控制LED灯的变化

[复制链接]
发表于 2016-8-31 20:49:42 | 显示全部楼层 |阅读模式
/*
   * 通过一个按键按下的次数,显示LED不同程度变亮;
   * 另一个按键改变LED的亮度减弱
   */

  int ledPin = 11;
  int keyUp = 7;
  int keyDown = 8;
  void setup(){
    pinMode(ledPin,OUTPUT);
    pinMode(keyUp,INPUT);
    pinMode(keyDown,INPUT);
    }
  void loop(){
    int up=digitalRead(keyUp);
    int down=digitalRead(keyDown);
    int i = 0;
      if(up==HIGH){
        i +=5;
         if(i >= 255){
          i =255;
          }
        analogWrite(ledPin,i);
        delay(100);
        }
    if(down==HIGH){
      i-=5;
        if(i<=0){
        i = 0;
        }
      analogWrite(ledPin,i);
      delay(100);
      }
   
    }

这段代码的目的就是注释讲的,但是,结果我的灯一直在闪,按按键也没用。求大神帮我看下这段代码有什么问题,求解啊
回复

使用道具 举报

发表于 2016-9-1 07:59:20 | 显示全部楼层
本帖最后由 275891381 于 2016-9-1 08:00 编辑

去掉两个delay(100);试试
亮度用pwm控制。亮灭时间用pwm开启关闭控制
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-1 08:29:26 | 显示全部楼层
275891381 发表于 2016-9-1 07:59
去掉两个delay(100);试试
亮度用pwm控制。亮灭时间用pwm开启关闭控制

去掉了,还是在闪,只是闪的频率高了。感觉我的按键没起到一点作用
回复 支持 反对

使用道具 举报

发表于 2016-9-1 09:49:42 | 显示全部楼层
Reiko 发表于 2016-9-1 08:29
去掉了,还是在闪,只是闪的频率高了。感觉我的按键没起到一点作用


给你改了下,肯定可以
  int ledPin = 13;
  int keyUp = 7;
  int keyDown = 8;
  int i = 0;
  void setup(){
    pinMode(ledPin,OUTPUT);
    pinMode(keyUp,INPUT);
    pinMode(keyDown,INPUT);
   // Serial.begin(9600);
    }
  void loop(){
      if(digitalRead(keyUp)==HIGH)
      {
           delay(200);
           if(digitalRead(keyUp)==HIGH)
           {
             i +=5;
              if(i >= 255)
                 i =255;
           }         
       }
       if(digitalRead(keyDown)==HIGH)
       {
           delay(200);
           if(digitalRead(keyDown)==HIGH)
           {
                i-=5;
                if(i<=0)
                  i = 0;
           }
       }
       analogWrite(ledPin,i);
      // Serial.println(i);
    }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-1 10:37:40 | 显示全部楼层
275891381 发表于 2016-9-1 09:49
给你改了下,肯定可以
  int ledPin = 13;
  int keyUp = 7;

我用的是UNO R3板子,13管脚好像不是可输出PWM的哎,设置这个脚PWM输出可以的吗?
我试了下,现在灯不亮了,按键也还是没用
回复 支持 反对

使用道具 举报

发表于 2016-9-1 13:38:46 | 显示全部楼层
本帖最后由 275891381 于 2016-9-1 13:41 编辑
Reiko 发表于 2016-9-1 10:37
我用的是UNO R3板子,13管脚好像不是可输出PWM的哎,设置这个脚PWM输出可以的吗?
我试了下,现在灯不亮 ...


改成可以pwm的引脚就可以了,不行的话就得看看的怎么接线的了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-1 16:31:26 | 显示全部楼层
275891381 发表于 2016-9-1 13:38
改成可以pwm的引脚就可以了,不行的话就得看看的怎么接线的了

E:\Arduino\code\photo.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-1 18:09:54 | 显示全部楼层
我拍了接线图,但是不会发图片。我描述下吧:
      两个按键各接一10K电阻,一脚接到Arduino的7、8脚,另一脚都接到电源5V。绿光LED负极接一个220欧姆电阻接到地,另一脚接到Arduino的11脚。就这样了
回复 支持 反对

使用道具 举报

发表于 2016-9-1 20:00:39 | 显示全部楼层
看你按键的接法,没有上拉/下拉电阻?
回复 支持 反对

使用道具 举报

发表于 2016-9-1 20:10:35 | 显示全部楼层
Reiko 发表于 2016-9-1 18:09
我拍了接线图,但是不会发图片。我描述下吧:
      两个按键各接一10K电阻,一脚接到Arduino的7、8脚,另 ...

就是按键接法不太好,要么上拉要么下拉,用意是让按键要么低电平,要么高电平,不要悬空;要么就会出现悬空时电平不确定
回复 支持 反对

使用道具 举报

发表于 2016-9-1 23:46:42 | 显示全部楼层
Reiko 发表于 2016-9-1 18:09
我拍了接线图,但是不会发图片。我描述下吧:
      两个按键各接一10K电阻,一脚接到Arduino的7、8脚,另 ...

搞不懂为什么按键串电阻接5V,不是应该接地吗?   新手路过~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-2 08:46:09 | 显示全部楼层
a120 发表于 2016-9-1 23:46
搞不懂为什么按键串电阻接5V,不是应该接地吗?   新手路过~

接地的话,按下去,那个接口的状态就是0
回复 支持 反对

使用道具 举报

发表于 2016-9-2 12:40:17 | 显示全部楼层
Reiko 发表于 2016-9-2 08:46
接地的话,按下去,那个接口的状态就是0

喔~不是很懂,还得慢慢学习!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-4 20:10 , Processed in 0.044585 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表