为什么我的Arduino不能处理PWM信号?

时间:2017-08-19 16:51:14

标签: arduino arduino-ide

我想控制占空比的占空比和频率来控制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毫秒)。因此,我在我的代码中引入了乘数,这应该只是延长开启和关闭时间。

问题在于它在这段时间内没有工作,我无法解释自己的原因。如果有人能帮助我,我会非常高兴。

1 个答案:

答案 0 :(得分:0)

溢出。 delayMicroseconds的最大值可以是16383. See

对于较长的情况(500毫秒),我建议使用delay,而使用毫秒。