这是我使用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条评论
快来发表一下你的评论吧 !