为什么我的 Arduino 不能处理发出 PWM 信号?
Why can't my Arduino handle to make a PWM signal?
我想控制占空比和占空比的频率来控制一个LED。
float dutycycle = 1000;//base dutycycle is x microseconds
float duty_on = 500;//on-time in microseconds
float multiplicator = 1;//dutycycle multiplicator to tune the frequency of the signal
float duty_off = dutycycle - duty_on;
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);//bright
delayMicroseconds(duty_on*multiplicator); //waiting
digitalWrite(LED_BUILTIN, LOW);//dark
delayMicroseconds(duty_off*multiplicator);//waiting
}
现在我认为我的代码意味着 LED 每半毫秒打开和打开。但我也想将 LED 用作频闪仪(例如,开启时间为 500 毫秒,关闭时间为 500 毫秒)。因此,我在我的代码中引入了乘法器,它应该只是延长了开启和关闭时间。
问题是它在这段时间内不起作用,我无法解释原因。如果有人能帮助我,我会很高兴。
溢出。 delayMicroseconds
可以取最大值16383。See.
对于较长的情况(500 毫秒),我建议改用 delay
,它使用毫秒。
我想控制占空比和占空比的频率来控制一个LED。
float dutycycle = 1000;//base dutycycle is x microseconds
float duty_on = 500;//on-time in microseconds
float multiplicator = 1;//dutycycle multiplicator to tune the frequency of the signal
float duty_off = dutycycle - duty_on;
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);//bright
delayMicroseconds(duty_on*multiplicator); //waiting
digitalWrite(LED_BUILTIN, LOW);//dark
delayMicroseconds(duty_off*multiplicator);//waiting
}
现在我认为我的代码意味着 LED 每半毫秒打开和打开。但我也想将 LED 用作频闪仪(例如,开启时间为 500 毫秒,关闭时间为 500 毫秒)。因此,我在我的代码中引入了乘法器,它应该只是延长了开启和关闭时间。
问题是它在这段时间内不起作用,我无法解释原因。如果有人能帮助我,我会很高兴。
溢出。 delayMicroseconds
可以取最大值16383。See.
对于较长的情况(500 毫秒),我建议改用 delay
,它使用毫秒。