2011-05-09 4 views
24

저는 임베디드 시스템 프로그래밍에 대한 배경 지식이 있습니다 (TI MSP430, Atmel ATxmega). Arduino 프로그래밍과 다른 프로그래밍 방법은 무엇입니까? Arduino 프로그래밍에 C에 대한 지식이 있습니까? 이 모든 프로그램에 삽입되는 것을 제외하고Arduino 프로그래밍이 표준 C와 다른 점은 무엇입니까?

+0

순수한 C이므로 C++ 태그가 제거되었습니다. – Xeo

+3

죄송합니다. 여기이 예제에서 http://www.arduino.cc/en/Hacking/LibraryTutorial는 C++을 사용하기 때문에 혼란 스러웠습니다. – Nathan

+1

이유를 이해하지 못합니다. C++ 태그가 제거되었습니다. Arduino 라이브러리는 일반적으로 C++ 클래스입니다. (Doh! two years old comments : - P) –

답변

34

나는 ATXMega에 대해 모른다. 새로운 Arduinos에서 사용되는 ATmega328과 같은 8 비트 AVR 칩은 AVR-GCC 컴파일러를 사용한다. 이를 통해 AVR 칩에 C 및 C++를 컴파일 할 수 있습니다. AVR-GCC 위의 한 수준은 AVR을 더 높은 수준의 작업 (더 이상 레지스터를 직접 참조하지 않아도 됨)을 프로그래밍하는 C 라이브러리 인 AVR Libc입니다.

Arduino IDE는 백엔드에서 AVR-GCC 및 AVR libc 라이브러리를 사용합니다. 또한 Arduino IDE는 other libraries available을 멋진 직렬 인터페이스처럼 만듭니다.

마지막으로, Arduino에는 AVR 칩에 구운 부트 로더가 있습니다. 부트 로더는 단순히 In-Sytem 프로그래머 또는 개발 보드 대신 직렬 연결 (USB에서)을 사용하여 AVR을 프로그래밍 할 수 있습니다.

질문에 대답하기에 충분한 뒷 이야기 : Arduino는 C 및 C++로 프로그래밍 할 수 있습니다. 사용 가능한 라이브러리는 C로 작성되며 모든 것이 AVR-GCC를 사용하여 컴파일됩니다. Arduino IDE는 필요하지 않습니다.

편집

이 주제에 대한 관심이 상당한 금액이 될 것 같다. 나는 more in-depth details on the AVR, Arduino, and AVR-GCC을 시도하고 줄 블로그 포스트를 썼다.

+1

사용 가능한 라이브러리는 C와 MAINLY C++로 작성되었습니다. –

+0

Eclipse 프로젝트의 저장소가 삭제되었습니다. – oldmud0

+0

@ oldmud0 감사합니다. 어느 시점에서 GitHub 레포를 삭제해야합니다. 대답에서 Eclipse 프로젝트에 대한 참조를 삭제했습니다. – baalexander

4

아두 이노는 C가있다 :

void main() { 
    setup(); 
    for(;;) { 
    loop(); 
    } 
} 
+7

'void' main?;-) –

+3

Arduino는 C 이상이며 [C++의 하위 집합] (http://en.wikipedia.org/wiki/Processing_%28programming_language%29#Wiring.2C_Arduino.2C_and_Fritzing)입니다. –

+2

Arduino IDE를 사용할 때 몇 가지 예외가 있습니다. 예를 들어, 구조체를 별도의 .h 파일에 정의하지 않으면 함수 호출이나 구조체에서 구조체를 사용하는 데 문제가 있습니다. http://playground.arduino.cc/Code/Struct에서 말한 것처럼 일반적인 arduino 해결 방법/해킹은 사용자 지정 데이터 구조가 추가 .h 파일에 있어야하는 모든 기능을 갖는 것입니다. IDE에서 새 탭을 만들고 name.h를 입력 한 다음 #include "name.h" – ViennaMike

4

당신은 C 및 임베디드 시스템과 모든 지식을 꽤 많이 걸릴 수 있으며 확인을보다 더 될 것입니다. 전혀 사용하기 어렵지 않습니다. Arduino Reference 페이지를 북마크하면 시간이 걸릴 것입니다.

4

Arduino는 C와 유사하며 매우 쉽게 잡을 수 있습니다. 그들은 기본적인 작업을 수행하기 위해 주변기기 레지스터를 읽고 쓰는 일을하지 않기 위해 추상화했습니다.

일부 예제 코드와 Arduino 참조를 한 번 살펴보고 다른 플랫폼에서 실제로 C를 작성했다면 곧 시작할 수 있습니다.

9

Arduino를 사용할 때 기존 C 지식을 사용할 수 있습니다.

목적은 아티스트/비 프로그래머가 하드웨어 프로그래밍 및 수정 작업을 쉽게 시작할 수 있도록하기위한 것이므로 'Arduino language'는 개발을 단순화하는 래퍼입니다.

C 프로그래머가 Arduino를 사용하는 것이 훨씬 쉬울 것입니다. documentation은 길지 않으므로 wiki이 좋으며 인 경우 forum의 사용자는 열정적이고 도움이됩니다.

관련 문제