新手求助。。。谢谢。。。麻烦移步辛苦一下。。。-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3433|回复: 5

新手求助。。。谢谢。。。麻烦移步辛苦一下。。。

[复制链接]
发表于 2013-3-16 16:52 | 显示全部楼层 |阅读模式
我想作一个按一下按钮随时间长灯会渐变的东东。。。
随着书上,整了个玩意。。。详见下文。。。谢谢。。。

代码:
#define LED 9
#define BUTTON 7
int val =0;
int old_val =0;
int state = 0;
int brightness =128;
unsigned long startTime=0;
void setup(){
  pinMode(LED,OUTPUT);
  pinMode(BUTTON,INPUT);
}
void loop(){
  val =digitalRead(BUTTON);
  
  if((val == HIGH) &&( old_val == LOW)){
  state = 1 - state;
  startTime=millis();
  delay(100);
  }
   if((val ==HIGH)&&(val==LOW)){
    if(state==1&&(millis()-startTime)>500){
      brightness++;
      delay(100);
      if(brightness>255){
        brightness=0;
      }
    }
  }
  old_val = val;
  if(state == 1){
    analogWrite(LED,brightness);
  }else{
    analogWrite(LED,0);
  }
  }
0001.jpg
0002.jpg
0003.jpg
发表于 2013-3-16 18:11 | 显示全部楼层
你想问什么
发表于 2013-3-17 16:29 | 显示全部楼层
首先你的“if((val ==HIGH)&&(val==LOW)) ”不会执行。
你可以用以下的程序来实现:
[mw_shl_code=c,true]#define LED 9
#define BUTTON 7
int PWM_VALUE_NEW=0;
int PWM_VALUE_OLD=0;
int BUTTON_VALUE=1;
void setup()
{
  pinMode(LED,OUTPUT);//Port9 OUTPUT
  pinMode(BUTTON,INPUT);//Port7 INPUT
}

void loop()
{
  BUTTON_VALUE=digitalRead(BUTTON);// read Port7's status
  //
  while(BUTTON_VALUE==LOW)//if you have put it
  {
    if(PWM_VALUE_NEW<=255)//if PWM value is over max PWM 255
    {
      PWM_VALUE_NEW++;//add one
    }
    delay(20);
    BUTTON_VALUE=digitalRead(BUTTON);//reread Port7's status
  }
  
  if(PWM_VALUE_OLD<WM_VALUE_NEW)
  {
    for(WM_VALUE_OLD<WM_VALUE_NEWWM_VALUE_OLD++)
    {
      analogWrite(LED,PWM_VALUE_OLD);
      delay(10);
    }
  }
  else
  {
    for(WM_VALUE_OLD>WM_VALUE_NEWWM_VALUE_OLD--)
    {
      analogWrite(LED,PWM_VALUE_OLD);
      delay(10);
    }
  }
}
  
  [/mw_shl_code]
第一个While语句是来判断你按键时间的长短,例:当让灯最亮时,应按:T=255 X 20ms(大概值)
并将你新设定的PWM值记录下来;然后下面的两个for语句,是来判断当前灯的PWM值跟你新设定的PWM值的大小。新的大,则PWM以每10ms加一的速度使灯渐亮;反之,则PWM以每10ms减一的速度使灯渐暗。
由于不太明白你的意思,如果程序不正确的话,可以再联系我
发表于 2013-3-17 16:33 | 显示全部楼层
笑脸是字母P,同时for语句中的第一个和第三个笑脸挡住了分号
发表于 2013-3-21 22:56 | 显示全部楼层
这个是用什么语言编写的,python?

点评

C/C++  详情 回复 发表于 2013-3-21 23:16
发表于 2013-3-21 23:16 | 显示全部楼层
hankeyee 发表于 2013-3-21 22:56
这个是用什么语言编写的,python?

C/C++
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-28 15:05 , Processed in 0.093723 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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