문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 Arduino (문단 편집) == 주의사항 == 8비트 [[임베디드 시스템]] 프로그래밍에 있어서는 [[프로그램 최적화]]에 매우 신경써야 한다. 마이크로 컨트롤러같이 메모리 리소스가 크게 제한되는 장치에서 프로그래밍을 할 경우 항상 주의해야 하는 부분이다. 아두이노는 성능이 매우 떨어지기 때문에 다른 기계에서는 문제없을만한 부분이 유독 문제를 일으키기도 한다. 컴파일은 잘 해놨는데 정작 보드에서는 [[장비를 정지합니다|장비가 멈춰버린다]]든지 한다. 개발과정에서 문제가 생겼다면 마지막으로 추가한 내용들을 살펴보며 코드의 내용을 최대한 다이어트 시켜보자. Arduino IDE 컴파일러는 C++ 언어를 사용하지만, 문자열을 관리하기 위해 C++의 std::string이 아니라 자체적으로 설계된 Arduino.h의 String[* 대문자로 시작] 객체를 사용하는 것에는 다 이유가 있는 것이다. 둘다 char* 메모리의 관리를 돕는 wrapper class이고 const char* c_str() 함수를 통해 내부 데이터 포인터에 직접 접근할 수 있고 덧셈 operator가 적절히 overload 되어있다는 공통점이 있지만, std::string에서 제공하는 여러 기능들이 Arduino String에서는 빠져서 마이크로 컨트롤러를 위한 최적화가 되어있다. 사실 어지간하면 이것도 안 쓰고 char*로만 때우는 것이 가장 좋다. C에서 함수가 중복 호출될 경우 스택 [[오버플로]]를 일으키면서 [[장비를 정지합니다|장비가 정지될 수 있다.]] 예를 들어, 장비가 정지했는데 개발 도중에 동작 테스트를 위해 추가한 {{{Serial.print();}}}문 몇 줄을 지워보니 추가한 코드들이 갑자기 정상적으로 돌아가는 경우도 있다. 이 때문에 deploy판에 디버그용 print를 지우고 보내는 것은 기본이다. 하드웨어 시리얼로 블루투스 통신을 꼭 해야만 한다던지 등 예외적인 경우에만 놔두는 것이 좋다. 아두이노 자체의 성능 제약을 피하려면, [[라즈베리 파이(컴퓨터)|라즈베리 파이]] 같은 다른 장치를 연결해 각종 연산은 다른 데에서 처리하고, 아두이노 보드는 센서나 액추에이터 등 각종 주변기기의 신호 입출력을 관리하는 관제탑으로만 사용하는 게 나을 수도 있다. 아두이노에 Firmata라는 펌웨어를 올리면[* 요즘에는 아예 아두이노 IDE 내부에 예제로 내장되어있다.] Firmata 프로토콜을 통해서 외부에서 아두이노를 컨트롤할 수 있게 된다. [[Processing]]을 비롯해 꽤 많은 언어를 이용하여 Firmata로 아두이노를 컨트롤할 수 있으니 이쪽을 알아보는 것도 괜찮다. 이걸 잘 활용하면 아두이노에는 최소한의 코드만 올리고 연산 부하가 큰 나머지 부분은 PC나 라즈베리 파이 같은 별도의 장치의 자원을 사용하여 돌리는 식으로 동작시키는 게 가능하다. 아두이노 자체로는 센서값 읽어서 판단하고 트윗올리는 것만 짜넣어도 빡빡한 경우가 있으니 판을 크게 벌일 거라면 다른 장치를 사용해 통제하는 걸 고려해보자. 실제로 많은 작업들이 이렇게 제작된다. 판이 크지 않다고 하더라도 외부 컴퓨터-아두이노 사이의 통신이 필요한 프로젝트인 경우, 시리얼 통신으로 메시지를 주고받는 것보다 자연스러운 형태로 코딩이 가능하므로 Firmata를 적극 사용해보는 것도 괜찮다. 이런 과정이 번거롭다면 내부 플래시와 램 용량이 크게 늘어난 아두이노 두에 혹은 2016년 기준 최신형인 제로[* 거기다가, Uno와 '''똑같은''' 크기이고 디버거도 박혀있으며, 공식은 아니지만 미니 보드도 있다!]나 전술한 101 또는 Primo, Star를 쓰는 것도 좋은 선택. 그리고 또 주의할 점이 있는데, 아두이노 IDE에 내장된 예제들 중 아두이노를 ISP로 쓸 수 있게 해주는 ArduinoISP 예제를 이용해 다른 아두이노에 업로드를 진행할 경우, 해당 아두이노는 '''부트로더가 지워진다!''' 그렇기 때문에 웬만하면 USB TO UART 컨버터를 이용해 업로드하자. 아두이노 컴파일러에서 소스 코드를 보드에 업로드할 때, [[우분투]] 같은 리눅스로 하는 것이 [[Microsoft Windows|Windows]]로 하는 것보다 훨씬 빠르다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기