For loop 为什么不';我不需要一个递减回路来淡出Arduino LED吗?
我已经跳过了闪烁LED,并使用以下草图成功地开始使LED变暗For loop 为什么不';我不需要一个递减回路来淡出Arduino LED吗?,for-loop,arduino,For Loop,Arduino,我已经跳过了闪烁LED,并使用以下草图成功地开始使LED变暗 void setup() { pinMode(12, OUTPUT); } void loop() { for (int i=0;i<255;i++) { analogWrite(12,i); delay(10); } } void setup(){ pinMode(12,输出); } void循环(){ 对于(int i=0;i您的setup()和loop()是一个较大程序的
void setup() {
pinMode(12, OUTPUT);
}
void loop() {
for (int i=0;i<255;i++) {
analogWrite(12,i);
delay(10);
}
}
void setup(){
pinMode(12,输出);
}
void循环(){
对于(int i=0;i您的setup()
和loop()
是一个较大程序的一部分(在本讨论中,我们将其称为dispatcher)。该程序在运行开始时调用setup()
一次。然后执行loop()
,如果loop()
退出,则调度器将再次调用loop()
因此,for
循环运行一次并返回给调度程序,loop
再次被调用,for
循环再次运行。for循环似乎永远在运行,因为与for循环中花费的时间长度相比,在调度程序中花费的时间是最小的
最后,仅供参考,LED似乎变暗,因为analogWrite()
在引脚上以称为脉宽调制(PWM)的格式创建方波信号。LED的亮度取决于PWM的占空比,这是analogWrite()
的第二个参数
尝试一个程序,在该程序中,PWM占空比的值在一个值范围内递增和递减。找到一个延迟,使LED在5秒或10秒内从关闭变为完全打开(或以您想要的任何间隔!)
你的setup()
和loop()
是一个更大的程序的一部分(在本次讨论中,我们称之为dispatcher)。该程序在运行开始时调用setup()
一次。然后执行loop()
,如果loop()
退出,则执行loop()
再次被调度程序调用
因此,for
循环运行一次并返回给调度程序,loop
再次被调用,for
循环再次运行。for循环似乎永远在运行,因为与for循环中花费的时间长度相比,在调度程序中花费的时间是最小的
最后,仅供参考,LED似乎变暗,因为analogWrite()
在引脚上以称为脉宽调制(PWM)的格式创建方波信号。LED的亮度取决于PWM的占空比,这是analogWrite()
的第二个参数
尝试一个程序,在该程序中,PWM占空比的值在一个值范围内递增和递减。找到一个延迟,使LED在5秒或10秒内从关闭变为完全打开(或以您想要的任何间隔!)
签名,前助教毕业生
为什么我不需要呢
你为什么不呢?
当然可以。这个程序会让LED慢慢变亮,然后立即熄灭,然后重新开始。这是锯齿状的轮廓,在我看来很糟糕
每个人都希望他们的LED平滑地变亮,然后变暗。这更酷:
void setup() {
pinMode(13, OUTPUT);
}
boolean fadein = true;
int bright = 0;
void loop() {
// adjust brightness based on current direction
if(fadein) {
bright += 1;
}
else {
bright -= 1;
}
// apply current light level
analogWrite(13,bright);
// when get to full bright, turn around
if(255 == bright) {
fadein = false;
}
// when get to full off, turn around
if(0 == bright) {
fadein = true;
}
delay(10);
// The delay is just a placeholder
// here is where your program could do other useful things
// in addition to the cool LED fade in fade out
return;
}
为什么我不需要呢
你为什么不呢?
当然可以。这个程序会让LED慢慢变亮,然后立即熄灭,然后重新开始。这是锯齿状的轮廓,在我看来很糟糕
每个人都希望他们的LED平滑地变亮,然后变暗。这更酷:
void setup() {
pinMode(13, OUTPUT);
}
boolean fadein = true;
int bright = 0;
void loop() {
// adjust brightness based on current direction
if(fadein) {
bright += 1;
}
else {
bright -= 1;
}
// apply current light level
analogWrite(13,bright);
// when get to full bright, turn around
if(255 == bright) {
fadein = false;
}
// when get to full off, turn around
if(0 == bright) {
fadein = true;
}
delay(10);
// The delay is just a placeholder
// here is where your program could do other useful things
// in addition to the cool LED fade in fade out
return;
}
啊哈。现在我的视网膜因为盯着LED灯而烧焦了一些斑点,我的淡入非常慢,淡出似乎更快——它仍然会淡出,但更像是断电时的快速淡出……锯齿行为,正如你所指出的。你的解决方案非常棒。谢谢。另外……我注意到你在最后使用了return;
e循环。我所看到的草图中没有一个包含返回;
。这是一个可选的命令,是为了更清晰,还是包含一个显式的返回;
做了一些特殊的事情,而假定的返回;
没有?我使用return;仅仅是为了清晰。您可以将所有缩进和行尾混合在一起你可以识别并仍然知道那是函数返回的地方。它对二进制进行任何添加或减去。代码不仅仅是你与编译器之间的通信;代码是你与可能跟随的人之间的通信。啊哈。现在我的视网膜因为盯着LED而烧焦了一些斑点,我的淡入非常缓慢,淡出也非常缓慢看起来更快——它仍然会褪色,但更像是你切断电源时的快速褪色……锯齿行为,正如你所说。你的解决方案非常棒。谢谢。另外……我注意到你在循环结束时使用了return;
。我看到的草图中没有一个包含return;
。这是一个可选命令吗g为了更清晰,或者包含显式的返回;
做一些假设的返回;
没有做的特殊事情?我使用return;只是为了清晰。您可以将所有缩进和行尾混合到无法识别的位置,并且仍然知道函数返回的位置。它对二进制代码添加或减去任何内容不仅仅是您与编译器之间的通信;代码也是您与可能跟随者之间的通信。