왜 당신은 항상 아두 이노 지연 기능을 사용하지 말아야

처음 당신은 아두 이노 보드를 사용,당신은 아마 이런 일을했다:

  • 당신의 아두 이노에 주도 연결
  • 켜고 끌 것이다 기본 깜박임 스케치를 업로드하여 매 초

이 아두 이노의”안녕하세요 세계”프로그램이라고 코드의 몇 줄 당신이 실제 응용 프로그램이 뭔가를 만들 수 있음을 보여줍니다.

깜박임 스케치

앞의 예제에서는 지연()함수를 사용하여 발광 다이오드 켜기 및 끄기 사이의 간격을 정의합니다.

여기 거래는:지연()편리 하 고 기본적인 예제에 대 한 작동 하는 동안,당신은 정말 현실 세계에서 그것을 사용 하지 말아야…

어떻게 지연()기능 작품

아두 이노 지연()기능 작품 방법은 꽤 똑바로 앞으로.

단일 정수를 인수로 받아들입니다. 이 숫자는 프로그램이 다음 코드 줄로 이동할 때까지 기다려야 하는 시간(밀리초)을 나타냅니다.

당신이 지연(1000)을 할 때 아두 이노는 1 초 동안 그 줄에 중지합니다.

지연()은 차단 기능입니다. 차단 기능은 특정 작업이 완료 될 때까지 프로그램이 다른 작업을 수행하지 못하게합니다. 동시에 여러 작업을 수행해야하는 경우 지연()을 사용할 수 없습니다.

응용 프로그램에서 입력에서 데이터를 지속적으로 읽고 저장해야 하는 경우 지연()기능을 사용하지 않아야 합니다. 다행히 해결책이 있다.

밀리()함수

밀리()함수를 호출하면 프로그램이 처음 시작된 이후 경과한 밀리(밀리)수를 반환합니다.

왜 유용합니까?

일부 수학을 사용하면 코드를 차단하지 않고 얼마나 많은 시간이 지났는지 쉽게 확인할 수 있습니다.

아래 스케치는 밀리스()함수를 사용하여 깜박임 프로젝트를 만드는 방법을 보여줍니다. 그것은 1000 밀리 초를 위해 지도된 빛을 켜고,그 후에 끕니다. 그러나,그것은 비 차단의 방법으로 그것을 않습니다.

지연 기능 없이 작동하는 깜박임 스케치를 자세히 살펴보겠습니다:

/* Blink without Delay, example here: arduino.cc/en/Tutorial/BlinkWithoutDelay*/// constants won't change. Used here to set a pin number :const int ledPin = 13; // 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 storeunsigned 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); }}

원시 코드보기

위의 스케치는 여기에서 찾을 수 있으며 현재 시간(현재 시간)에서 이전에 기록 된 시간(이전 시간)을 빼서 작동합니다. 나머지는 간격(이 경우,1000 밀리초)보다 큰 경우 프로그램 현재 시간에 이전 밀리 변수를 업데이트 합니다.

그리고 비 차단이기 때문에 문이 정상적으로 작동해야하는 경우 첫 번째 코드 외부에 있습니다.이제 루프()함수에 다른 작업을 추가할 수 있으며 코드가 여전히 1 초마다 깜박임을 이해할 수 있습니다.

어떤 기능을 사용해야합니까?

우리는 아두 이노와 시간을 다루는 두 가지 방법을 배웠습니다. 밀리()함수를 사용하면 지연()을 사용하는 것과 비교할 때 약간의 추가 작업이 필요합니다. 그러나 프로그램은 그것없이 아두 이노에 멀티 태스킹을 할 수 없습니다.

답글 남기기

이메일 주소는 공개되지 않습니다.

Previous post 윌밍턴 공원&야외 레크리에이션|수상 활동&자연
Next post 플로리다 박물관