0

さて、最近Arduinoのプログラミングに飛び込みました。現在、基本的な点滅機能と、LEDを青、緑、赤の色に変えるRGB LEDプログラムがあります。「作業ステータス」のインジケータとして機能するはずのシンプルで基本的な黄色のLEDを2つ持っています。そしてRGBのLED。黄色のLEDを常に点滅させておきたいのですが、RGBの色を正常に遷移させたいと思います。2 つのプロセスを同時に実行できるようにコードを作成するにはどうすればよいですか?

4

3 に答える 3

2

何かのようなもの:

int timekeeper=0;
while (1) 
{
    do_fade(timekeeper);
    if (timekeeper%100==0) {
      do_blink_off();
    }
    if (timekeeper%100==50) {
      do_blink_on();
    }
    delay(10);
    timekeeper++;
}

これはメモリから行われるため、走行距離は異なる場合があります。タイムキーパーを do_fade() に渡したので、フェードの進行状況を把握できます。do_fade() はフェードを更新し、すぐに戻ります。do_blink_on() と do_blink_off() は似ています - 変更する必要があるものを変更してから戻ります。この例では、do_fade() は 10 ミリ秒ごとに呼び出され、do_blink_off() は 1 秒ごとに呼び出され、do_blink_on() は 1/2 秒後に呼び出されます (つまり、1/2 秒、オフ、1/2 秒、オン、1 /2 秒...)

于 2013-06-28T02:44:18.407 に答える
1

AMADANONの答えは機能しますが、このような複数のタスクを実行するための推奨される方法は、タイマー割り込みを使用することです。たとえば、コードがフェードした後に何か他のことをしたい場合、それらの他の関数のタイミングが LED の点滅に干渉します。これを解決するには、Arduino に組み込まれているタイマーを使用します。

バックグラウンドでは、タイマーがカウントアップし、特定の値に達するとカウンターがリセットされ、LED のオン/オフを切り替える割り込みサービス ルーチンがトリガーされます。

タイマー割り込みで LED を点滅させるチュートリアルは次のとおりです: http://www.engblaze.com/microcontroller-tutorial-avr-and-arduino-timer-interrupts/

于 2013-06-28T13:13:11.390 に答える