VScode로 Arduino 프로그래밍 해야 할 이유
지금까지 Arduino IDE 를 사용하셨던 분들을 위한 포스트입니다. 지금까지 포스트는 비교적 짧고 간단한 코드 예시만 작성하였는데, 여기서 조금만 코드가 복잡해져도 기존의 Arduino IDE 사용에 불편함을 많이 느끼게 될 것입니다. 저는 무엇을 하든지 환경이 편리해야지 재대로 집중에서 능률을 올릴 수 있다고 생각하는 편입니다. 그래서 아두이노 프로그래밍 할 때, 어느 정도 감을 잡은 뒤엔 에디터를 사용하시길 권장합니다. 이미 코드 에디터(Atom, VIm, Visual Studio Code, SublimeText 등등)에 익숙하신 분들이면 대부분 아두이노 플러그인을 지원하니 사용해보시길 권장 드립니다.
Visual Stduio Code 로 코딩 작성시 Arduino IDE 보다 좋은 점
에 대해 작성하였습니다. 환경설정 하는 방법은 이전 포스트에 작성하였으니 참고해주세요.VSCode로 아두이노 개발시 장점
Visual Studio Code 로 아두이노 프로그래밍을 하게 되면, Arduio IDE 에서 제공되지 않는 기능 뿐만 아니라, Visual Studio Code 자체 편집 기능과 추가 익스텐션을 이용하여 쾌적한 개발 환경 구축이 가능합니다. 아래 그림은 아두이로 프로그래밍에 꼭 필요한 기능의 예시에 대해 작성하였습니다. 지난 포스트에서 언급하였지만, 글로만 표현하여 이번에 간략히 그림으로 표시하였습니다.
자동완성
아두이노 코드 자동완성
코드 정의 및 코드 탐색
아래와 같이 코드 정의 보기 및 탐색 기능을 수행할 수 있습니다. 해당 함수 또는 클래스, 변수의 선언부가 어떻게 정의 되어있는지, 어디에 선언 되었는지 확인이 가능합니다. 뿐만 아나라, 해당 코드가 어디에 사용 되었는지 탐색이 가능합니다. 이 두 가지 기능은 큰 코드를 쉽게 파악할 수 있게 해주고, 작성 수정을 편리하게 해줍니다.
아래 기능은 해당 코드 위치에서 마우스 우 클릭으로 선택 하시거나 단축키 사용 또는 커스텀 설정이 가능합니다.
Go to Definition (F12): 코드 정의된 부분 보기 (소스파일 <~.c>)Go to Declaration: 해당 코드 선언 부 보기 (일반적으로 헤더 파일<~.h>Go to Reference(Shift + F12): 해당 코드가 사용된 부분을 검색 - 선택 한 코드를 어떻게 사용했는지 볼 수 있어요.
아두이노 코드 탐색 기능
디버깅
아래와 같이 디버깅 모드를 구현 할 수 있습니다. 아두이노 보드의 종류와 디버깅 기능에 제약은 있으나 필요에 따라 적용이 가능합니다. 아래는 아두이노 우노 보드에서 SW적인 방법으로만 디버깅 모드를 설정 후 진행하였습니다.
기타 VSCode 의 강력한 편집 기능 + Extention 들..
Visual Studio Code 의 강력한 편집기능과 익스텐션들 사용이 가능합니다. 이 부분은 너무 광범위 해서 본 포스트에서 다루지 않고 따로 포스트를 작성 예정입니다.
VSCode 로 아두이노 개발시 단점
- 시리얼 플로터 기능 지원 안 됨 : 개인적으로는 지금 까지 쓸 일이 없긴 했습니다.
- 시리얼 모니터 읽기는 되지만 쓰기 지원 되지 않음 : 구글링 하면 대안이 있는 것 같지만, 제가 재대로 적용을 해보지 못했습니다.
마무리
- 자동완성
- 코드 정의보기
- 코드 선언보기
- 코드 탐색
- VScode 의 강력한 편집 기능 : 아주 아주 강력합니다.
- 추가적인 Extentions : 프로젝트 매니저, Git, 테마 등 아주 다양하고 많습니다.
'Embedded > Arduino' 카테고리의 다른 글
아두이노 팁 #4. Visual Studio Code로 아두이노 디버깅 환경 설정 및 실행 (8) | 2020.07.18 |
---|---|
아두이노 팁 #3. Visual Studio Code로 아두이노 코딩 사용법과 나노팁 (0) | 2020.07.16 |
아두이노 강좌 #15 시리얼 통신 포트 추가로 사용하기 SoftwareSerial.h (0) | 2020.07.14 |
아두이노 강좌 #14 타이머 인터럽트 MsTimer2.h (1) | 2020.07.13 |
아두이노 강좌 #13 아날로그 출력 PWM 와 analogWrite() (0) | 2020.07.11 |