遅れから立ち去る
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 2 |
このプロジェクトについて
このビデオは、私がオンラインで蒔いた質問から着想を得たものです。 2つのLEDを異なる速度で点滅させる方法について。
1000ミリごとにLEDを点滅させ、500ミリごとに2番目のLEDを点滅させたい場合でも、このように遅延を使用できます。これは、最初のLEDの1000ミリの遅延を2番目のディールの500ミリの点滅に分割したことがわかります。
バイトLED2 =12; void setup(){pinMode(LED_BUILTIN、OUTPUT); pinMode(LED2、OUTPUT);} void loop(){digitalWrite(LED_BUILTIN、HIGH); digitalWrite(LED2、HIGH); delay(500); digitalWrite(LED2、LOW); delay(500); digitalWrite(LED_BUILTIN、LOW); digitalWrite(LED2、HIGH); delay(500); digitalWrite(LED2、LOW); delay(500); }
しかし、500ミリ秒ではなく300ミリ秒でより速いものを点滅させたい場合はどうなりますか。ここで、遅延を使用すると非常に複雑になり、不可能になります。
じゃあ何をすればいいの?遅延の使用をやめてください!
Arduino IDEでその例を取得し、blinkwithoutdelayと呼ばれています。
最初のLEDのロジックを2番目のLEDに複製し、必要な遅延を設定します。
だから、それも試してみて、遅れを避けてください。最後に、私が共有したコードは完璧にはほど遠いので、変更することを考えましたが、このビデオはarduinoを初めて使用する人を対象としているため、私はそれに反対票を投じました。
コード
- サンプルコード
サンプルコード Arduino
const int ledPin =LED_BUILTIN; int ledState =LOW; unsigned long previousMillis =0; const long interval =1000; const int ledPin2 =12; int ledState2 =LOW; unsigned long previousMillis2 =0; const long interval2 =300; void setup(){pinMode(ledPin、OUTPUT); pinMode(ledPin2、OUTPUT);} void loop(){unsigned long currentMillis =millis(); if(currentMillis-previousMillis> =間隔){previousMillis =currentMillis; if(ledState ==LOW){ledState =HIGH; } else {ledState =LOW; } digitalWrite(ledPin、ledState); } // end if(currentMillis --previousMillis2> =interval2){previousMillis2 =cur rentMillis; if(ledState2 ==LOW){ledState2 =HIGH; } else {ledState2 =LOW; } digitalWrite(ledPin2、ledState2); } // end if}
回路図
製造プロセス