瑞龍關廟鳳梨資訊網

瑞龍關廟鳳梨資訊網
瑞龍關廟鳳梨資訊網

2021年5月21日 星期五

中文arduino範例 Blink without Dela( 閃爍板載LED 不使用delay函數)

 

前言:
Arduino的“delay”功能既是福也是禍。它非常適合向初學者展示如何製作LED閃光燈。但是,一旦您變得更加複雜並開始放慢“循環”功能,您就會遇到問題。
delay延遲方法的缺點是,在“delay”發生時,其他任何事情都無法繼續進行。例如,您無法更新顯示或檢查按鍵。

一個典型的例子是打開繼電器10分鐘。“延遲”方式如下所示:
int pin = 13; void setup()  pinMode(13,OUTPUT);   digitalWrite(pin,HIGH);   delay(10 * 60 * 60 * 1000);   digitalWrite(pin,LOW); void loop()}

進入本範例:

/*

  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

*/


複製以下紅色段程式碼到 Arduino IDE

const int ledPin =  LED_BUILTIN;

int ledState = LOW;     

unsigned long previousMillis = 0;      

const long interval = 1000;  

void setup() {

  pinMode(ledPin, OUTPUT);

}

void loop() {

  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) {

    previousMillis = currentMillis;

    if (ledState == LOW) {

      ledState = HIGH;

    } else {

      ledState = LOW;

    }

    digitalWrite(ledPin, ledState);

  }

}


中文翻譯

/ *

  閃爍板載LED 不使用delay函數

  打開和關閉連接到數字引腳的發光二極管(LED),

  而不使用delay()函數。這意味著其他代碼可以在

  同時不會被LED代碼打斷。


  電路:

  -使用板載LED。

  -注意:大多數Arduino都有一個您可以控制的板載LED。在ArduinoUNO,ArduinoMEGA,ArduinoZERO連接到數字引腳13,-而MKR1000 則位於引腳 6。

LED_BUILTIN設置為正確的LED引腳,與使用哪個板無關。

如果您想知道板上LED連接到哪個引腳,Arduino模型,請在以下位置查看開發板的技術規格:

    https://www.arduino.cc/en/主要/產品


  創建於2005年

  大衛·梅利斯(David A.Mellis)

  於2010年2月8日修改

  保羅·斯托弗雷根(Paul Stoffregen)

  於2013年11月11日修改

  由斯科特·菲茨杰拉德(Scott Fitzgerald)

  於2017年1月9日修改

  通過阿圖羅·瓜達盧皮(Arturo Guadalupi)


  此示例代碼在公共領域。


  http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay

* /


//常量不會改變。用於設置板載LED:

const int ledPin = LED_BUILTIN; // LED引腳號

(const不能被編譯的變數int整數

//ledState變量將更改:

int ledState = LOW; // ledState用於設置LED


//通常,對於保留時間的變量,應使用“ unsigned long”

//該值很快會變得太大而無法存儲 int

unsigned  long previousMillis = 0; //將存儲上次更新LED的時間

  (unsigned long 無符號 長)   (以前的Millis)

//常量不會改變:

const long interval = 1000; //閃爍間隔(毫秒)

 long長變量 

void setup(){

  //將數字引腳設置為輸出:

   pinMode(ledPin, OUTPUT);

}

}


void loop() {

  //在這裡放置需要一直運行的代碼。

  //檢查是否是時候讓LED閃爍了;也就是說,如果差異

  //在當前時間和上次閃爍之間,LED大於

  //您要使LED閃爍的時間間隔。

  unsigned long currentMillis = millis();


  if(currentMillis-previousMillis> = interval){

    //保存上一次您使LED閃爍的時間

    previousMillis = currentMillis;


    //如果LED熄滅,則將其打開,反之亦然:

    if (ledState == LOW) {

      ledState = HIGH;

    } else {

      ledState = LOW;

    }

 //使用變量的ledState設置LED:

   digitalWrite(ledPin, ledState);

  }

}






}


沒有留言:

張貼留言