×

使用带有代码的Arduino UNO进行LED渐变

消耗积分:0 | 格式:zip | 大小:0.02 MB | 2022-11-21

分享资料个

描述

这是我使用Arduino UNO的第一个项目使用给定的代码,我们可以自动改变 LED 的强度。

此代码以 255 步和选择性延迟递增和递减 LED 的强度。此代码8 位模式下使用模拟写入(PWM)这意味着强度可以控制在 255 个步骤中。我为这个项目尝试了不同的代码逻辑。

10mm LED 连接到 Arduino UNO 板上的 10 号引脚。

第一版代码

此版本中有 2 个while循环。最初强度很高。因此,第一个 while 循环用于将强度从 255 减少到 0,延迟为 5 毫秒。

while(intensity != 0)

{

analogWrite(10, intensity);

delay(d);

intensity = intensity - 1;

}

当强度变为 0 并且第二个 while 循环开始时,此 while 循环结束。在这个循环中,强度从 0 增加到 255。

while((intensity < 255) && (intensity >= 0))

{

analogWrite(10, intensity);

delay(d);

intensity = intensity + 1;

}

int intensity = 255;
int d = 5;
// the setup function runs once when you press reset or power the board
void setup() {
 // initialize digital pin 10 as an output.
 pinMode(10, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
 while(intensity != 0) //this loop is to decrement intensity
 {
   analogWrite(10, intensity);    
   delay(d);  
   intensity = intensity - 1;
 }
 while((intensity < 255) && (intensity >= 0)) //increment intensity
 {
   analogWrite(10, intensity);    
   delay(d);  
   intensity = intensity + 1;    
 }
}

第二版代码

在这个版本中使用了两个变量强度标志。当标志变为 0 时,强度增加。当强度变高时,即 255 标志变为 1。当标志变为 1 时,强度递减,依此类推。

int intensity = 0;
int flag = 0;
int d = 5;
void setup() {
 pinMode(10, OUTPUT);
}
void loop() {
 analogWrite(10, intensity);    
 delay(d);  
 if(flag == 0)
   intensity = intensity + 1;
 if(intensity == 255)
   flag = 1;
 if(flag == 1)
   intensity = intensity - 1;
 if(intensity == 0)
   flag = 0;
}

这两个版本有点长,所以我尽量缩短。第三个版本是结果。

第三版代码

在这个版本中使用了abs()强度++ 。强度开始从 -255 增加到 255,然后回到 -255,循环继续。

int intensity = 255;
int d = 5;
void setup() {
 pinMode(10, OUTPUT);
}
void loop() {
   analogWrite(10,abs(intensity));
   delay(d);
   if(intensity++ == 256)
     intensity = -255;
}

代码的最终版本

这是经过所有试验和错误后迄今为止最短的代码。

int intensity = 255;
int
int d = 5;
void setup() {
 pinMode(10, OUTPUT);
}
void loop() {
 analogWrite(10, intensity);
 delay(d);
 intensity = intensity + intensitychange;
 if((intensity == 0) || (intensity == 255))
 {
   intensitychange = -intensitychange;
 }
}

 

 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !