편의를 위해 설정 및 루프가 제공됩니까?


13

Arduino 스케치에는 일반적으로 a setuploop기능이 있습니다. 이 기능들은 편의상 제공된 것일까 요? 아니면 실제로 특별한 목적을 가지고 있습니까? (예 : 설정 및 루프에서 일부 작업이 허용되지 않거나 허용됩니까)

이 두 코드는 동일합니까?

권위 있는

void setup() {
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
    digitalWrite(LED_BUILTIN, HIGH);
    delay(1000);
    digitalWrite(LED_BUILTIN, LOW);
    delay(1000);
}

루프없이

void setup() {
    pinMode(LED_BUILTIN, OUTPUT);

    while(true) {
        digitalWrite(LED_BUILTIN, HIGH);
        delay(1000);
        digitalWrite(LED_BUILTIN, LOW);
        delay(1000);
    }
}


void loop() {
}

예를 들어 main방법이나 다른 진입 점을 제공하여 설정이나 루프없이 코드를 작성할 수 있습니까?

답변:


10

그 코드 조각은 거의 동일합니다.

당신이 보면 아두 이노 소스 코드를 다음과 같이 표시됩니다 :

setup();

for (;;) {
  loop();
  if (serialEventRun) serialEventRun();
}

(나는 확실하지 않다 serialEventRun() .)

main함수 선언을 '오버로드'할 수 없다고 생각합니다 . 또한 init타이머를 구성하는 millis()등 의 주요 기능 호출 이 작동합니다.


9

이 기능들은 편의상 제공된 것일까 요? 아니면 실제로 특별한 목적을 가지고 있습니까?

Arduino 라이브러리는 loop() 직렬 처리 와 관련하여 .

이 두 코드는 동일합니까?

직렬 이벤트를 사용하지 않는 경우에만.

예를 들어 기본 방법이나 다른 진입 점을 제공하여 설정이나 루프없이 코드를 작성할 수 있습니까?

IDE를 통해 Arduino 라이브러리를 엄격하게 사용하는 것은 아닙니다. 링커는 중복 main정의 또는 누락 setup또는 loop정의에 대해 불평 합니다.


2

예를 들어 기본 방법이나 다른 진입 점을 제공하여 설정이나 루프없이 코드를 작성할 수 있습니까?

마지막으로 IDE를 사용했을 때 .ino/ .pde파일 이없고 파일 만 있는 프로젝트를 가질 수있었습니다 .cpp. 함수 를 정의 .ino하는 .cpp을 다루는 것이므로 main해당 단계를 무시하면 자신만을 정의 할 수 있습니다 main.

IDE가 더 이상 이것을 허용하지 않으면 (아시다시피) Arduino 라이브러리를 포기하지 않고 IDE 외부의 Makefile 기반 빌드로도 동일한 작업을 수행 할 수 있습니다. 내가 아는 경고는 다음과 같습니다.

  • 당신은해야 #include "Arduino.h"라이브러리 기능에 액세스하려면 합니다.
  • 전화해야합니다 init()라이브러리가 익숙한 방식으로 주변 장치를 설정하도록하려면 합니다.
  • 핸들러를 실행 serialEvent하려면 Gerben이 지적한 코드를 mainloop에 넣어야합니다 serialEvent(그러나 자신 만의 mainloop를 작성하려면 어쨌든 필요하지 않습니다).

1

Arduino 스케치에는 일반적으로 설정 및 루프 기능이 있습니다. 이 기능들은 편의상 제공된 것일까 요? 아니면 실제로 특별한 목적을 가지고 있습니까?

그들은에 추가 함수 호출에 던져 init송출 타이머 초기화하는 millis, microsdelay더 노력없이 일을. 그 외에는 요

이 코드는 IDE에서 컴파일 및 실행됩니다.

int main ()
  {
  }

효과적으로 IDE는 다음과 같은 코드를 생성합니다.

int main ()
  {
  init ();  // set up timers
  setup (); // your own initialization
  while (true)
    loop ();  // stuff you want to keep doing
  }

Ignacio Vazquez-Abrams가 말했듯이 그들은 그 이후로 바이올린을 사용했지만 기본적으로는 무시할 수 있습니다. setup및 에 대한 특별한 내용은 없습니다 loop.

main위에서 보여준 것처럼 사용할 수 있습니다 . 원한다면 모든 것을 할 수 있습니다 setup. 원한다면 모든 일을 할 수 있습니다 loop.

여기서는 C ++ 컴파일러를 다루고 있습니다. 함수는 이름에 따라 마법의 중요성을 갖지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.