LED亮度的多项式变化

时间:2017-07-11 13:02:31

标签: arduino

我尝试按照out1中的公式更改LED的亮度。我很确定会出现问题,因为它并没有真正改变它的亮度而且永远不会停止闪电。它应该基本上与一个正弦波相同,但我试图使用我的方程而不是罪恶!

const int LED = 11;
const int LED1 = 10;
const int LED2 = 9;

void setup()
{
}

void loop()
{
  float in1, out1, out2, out3;

for (in1 = 0; in1 < 10; in1++)
{
out1 = 8.8 * pow(10,-4) * pow(in1,4) - 0.0034 * pow(in1,3) +0.37 * pow(in1,2) -6.7 *in1 +1.7 *pow(10,2);
//out2 = 1.207*pow(in1,4)-0.0011*pow(in1,3)+0.16*pow(in1,2)-5.5*in1+2,0763;
//out3 = 4.829*pow(in1,4)-0.034*pow(in1,3)+0.37*pow(in1,2)-6.7*in1+2,076;

analogWrite(LED,out1);
//delay(1);
//analogWrite(LED1,out2);
//analogWrite(LED2,out3);

}

analogWrite(LED,LOW);

/*analogWrite(LED,out1);
analogWrite(LED1,out2);
analogWrite(LED2,out3);
//analogWrite(LED1,LOW);*/
delay(500);

1 个答案:

答案 0 :(得分:1)

即使你的循环使用浮点数,但就人类而言,它仍然会以非常快的速度运行。建议在每次更改后延迟开始。

for (in1 = 0; in1 < 10; in1++)
{
    out1 = 8.8 * pow(10,-4) * pow(in1,4) - 0.0034 * pow(in1,3) +0.37 * pow(in1,2) -6.7 *in1 +1.7 *pow(10,2);
    analogWrite(LED,out1);
    delay(2000);
}

如果这是一个RGB LED,我们只是改变一个引脚上的值,但是人眼可以看到一个小的变化。虽然明显的亮度170对140仍然可能难以辨别。