Reiko 发表于 2016-8-31 20:49:42

通过PWM控制LED灯的变化

/*
   * 通过一个按键按下的次数,显示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);
      }
   
    }

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

275891381 发表于 2016-9-1 07:59:20

本帖最后由 275891381 于 2016-9-1 08:00 编辑

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

Reiko 发表于 2016-9-1 08:29:26

275891381 发表于 2016-9-1 07:59 static/image/common/back.gif
去掉两个delay(100);试试
亮度用pwm控制。亮灭时间用pwm开启关闭控制

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

275891381 发表于 2016-9-1 09:49:42

Reiko 发表于 2016-9-1 08:29 static/image/common/back.gif
去掉了,还是在闪,只是闪的频率高了。感觉我的按键没起到一点作用

给你改了下,肯定可以
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);
    }

Reiko 发表于 2016-9-1 10:37:40

275891381 发表于 2016-9-1 09:49 static/image/common/back.gif
给你改了下,肯定可以
int ledPin = 13;
int keyUp = 7;


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

275891381 发表于 2016-9-1 13:38:46

本帖最后由 275891381 于 2016-9-1 13:41 编辑

Reiko 发表于 2016-9-1 10:37 static/image/common/back.gif
我用的是UNO R3板子,13管脚好像不是可输出PWM的哎,设置这个脚PWM输出可以的吗?
我试了下,现在灯不亮 ...

改成可以pwm的引脚就可以了,不行的话就得看看的怎么接线的了

Reiko 发表于 2016-9-1 16:31:26

275891381 发表于 2016-9-1 13:38 static/image/common/back.gif
改成可以pwm的引脚就可以了,不行的话就得看看的怎么接线的了

E:\Arduino\code\photo.jpg

Reiko 发表于 2016-9-1 18:09:54

我拍了接线图,但是不会发图片。我描述下吧:
      两个按键各接一10K电阻,一脚接到Arduino的7、8脚,另一脚都接到电源5V。绿光LED负极接一个220欧姆电阻接到地,另一脚接到Arduino的11脚。就这样了

pumpitup 发表于 2016-9-1 20:00:39

看你按键的接法,没有上拉/下拉电阻?

275891381 发表于 2016-9-1 20:10:35

Reiko 发表于 2016-9-1 18:09 static/image/common/back.gif
我拍了接线图,但是不会发图片。我描述下吧:
      两个按键各接一10K电阻,一脚接到Arduino的7、8脚,另 ...

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

a120 发表于 2016-9-1 23:46:42

Reiko 发表于 2016-9-1 18:09 static/image/common/back.gif
我拍了接线图,但是不会发图片。我描述下吧:
      两个按键各接一10K电阻,一脚接到Arduino的7、8脚,另 ...

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

Reiko 发表于 2016-9-2 08:46:09

a120 发表于 2016-9-1 23:46 static/image/common/back.gif
搞不懂为什么按键串电阻接5V,不是应该接地吗?   新手路过~

接地的话,按下去,那个接口的状态就是0

a120 发表于 2016-9-2 12:40:17

Reiko 发表于 2016-9-2 08:46 static/image/common/back.gif
接地的话,按下去,那个接口的状态就是0

喔~不是很懂,还得慢慢学习!!
页: [1]
查看完整版本: 通过PWM控制LED灯的变化