2017-08-19 8 views
-1

LEDを制御するデューティ・サイクルのデューティ・サイクルと周波数を制御したいと考えています。なぜ私のArduinoハンドルはPWM信号を作ることができませんか?

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を使用したいと考えています(500msのオンタイムと500msのオフタイムなど)。そのため、乗算器を自分のコードに導入しました。この乗算器はオンとオフの時間を伸ばすだけです。

問題は、それがこの時間スパンで動作しないと、私はなぜ自分自身を説明することはできませんということです。もし誰かが私を助けることができたら、私はとても喜ぶでしょう。

答えて

0

オーバーフロー。 delayMicrosecondsの最大値は16383です。See。ミリ秒を使用する代わりにdelayを使用して、長いケース(500ミリ秒)、私はお勧めします、のために

関連する問題