#define LED_3500K_PWM 5
#define LED_6500K_PWM 6
int light_ilm = 128; //Range from 0 to 255.
int light_color_tmp = 127; //Range from 0 to 255.
void LightOn(int ilm, int color_tmp);
void setup() {
Serial.begin(38400);
Serial.println("System online");
}
void loop() {
LightOn(light_ilm, light_color_tmp);
}
void LightOn(int ilm, int color_tmp) {
byte chn_A_pin = LED_6500K_PWM;
byte chn_B_pin = LED_3500K_PWM;
int chn_A_PWM;
int chn_B_PWM;
if (color_tmp >= 128) {
chn_A_PWM = ilm;
chn_B_PWM = (255 - color_tmp) * 2 / 255 * ilm;
}
else {
chn_A_PWM = color_tmp * 2 / 255 * ilm;
chn_B_PWM = ilm;
}
analogWrite(chn_A_pin, chn_A_PWM);
analogWrite(chn_B_pin, chn_B_PWM);
}
这是一个 PWM 方式点亮双色温 LED 的 function,预期结果是,当色温高于处于 128~255 之间时,6500K 的 LED 亮度最高亮度(等于 light_ilm),3500K LED 的亮度则与之成反比,当色温为 255 时 3500K LED 为 0.
然而经过测试后发现,当色温为 128 的时候,3500K LED 亮,但 6500K 的不亮,色温为 127 时 6500K 的 LED 亮,3500K 的不亮。是我哪里写错了么?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.