delay()関数を使わない Arduino UNO でのLチカ

トップページ フォーラム 初心者向け delay()関数を使わない Arduino UNO でのLチカ

このトピックには0件の返信が含まれ、1人の参加者がいます。1 ヶ月、 2 週間前 kaz さんが最後の更新を行いました。

1件の投稿を表示中 - 1 - 1件目 (全1件中)
  • 投稿者
    投稿
  • #114 返信

    kaz
    参加者

    このプログラムはdelay()関数を使わずにLチカを実現しています。
    delay()関数を使うとその時間他の処理を出来なくなるので、組込み系ではまず使いません。
    と言うか使えません(マイクロ秒単位のタイミングの調整とかには使うことが有ります。)

    このプログラムは delay() の代わりに millis()関数で経過時間をチェックして、
    1000ミリ秒経過したらLEDを反転させています。

    millis() 関数(Arduino 日本語リファレンスより)

    Arduinoボードがプログラムの実行を開始した時から現在までの時間をミリ秒単位で返します。約50日間でオーバーフローし、ゼロに戻ります。

    【パラメータ】
    なし
    【戻り値】
    実行中のプログラムがスタートしてからの時間 (unsigned long)

    
    /* Blink without Delay
    
     Turns on and off a light emitting diode (LED) connected to a digital
     pin, without using the delay() function.  This means that other code
     can run at the same time without being interrupted by the LED code.
    
     The circuit:
     * Use the onboard LED.
     * Note: Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO 
      it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
      the correct LED pin independent of which board is used.
      If you want to know what pin the on-board LED is connected to on your Arduino model, check
      the Technical Specs of your board  at https://www.arduino.cc/en/Main/Products
    
     created 2005
     by David A. Mellis
     modified 8 Feb 2010
     by Paul Stoffregen
     modified 11 Nov 2013
     by Scott Fitzgerald
     modified 9 Jan 2017
     by Arturo Guadalupi
    
     This example code is in the public domain.
    
     http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
     */
    
    // constants won't change. Used here to set a pin number :
    const int ledPin =  LED_BUILTIN;// the number of the LED pin
    
    // Variables will change :
    int ledState = LOW;             // ledState used to set the LED
    
    // Generally, you should use "unsigned long" for variables that hold time
    // The value will quickly become too large for an int to store
    unsigned long previousMillis = 0;        // will store last time LED was updated
    
    // constants won't change :
    const long interval = 1000;           // interval at which to blink (milliseconds)
    
    void setup() {
      // set the digital pin as output:
      pinMode(ledPin, OUTPUT);
    }
    
    void loop() {
      // here is where you'd put code that needs to be running all the time.
    
      // check to see if it's time to blink the LED; that is, if the
      // difference between the current time and last time you blinked
      // the LED is bigger than the interval at which you want to
      // blink the LED.
      unsigned long currentMillis = millis();
    
      if (currentMillis - previousMillis >= interval) {
        // save the last time you blinked the LED
        previousMillis = currentMillis;
    
        // if the LED is off turn it on and vice-versa:
        if (ledState == LOW) {
          ledState = HIGH;
        } else {
          ledState = LOW;
        }
    
        // set the LED with the ledState of the variable:
        digitalWrite(ledPin, ledState);
      }
    }
    
1件の投稿を表示中 - 1 - 1件目 (全1件中)
返信先: delay()関数を使わない Arduino UNO でのLチカ
あなたの情報:




To better explain your question or answer, you can upload some screenshots.