비주얼 스튜디오(Visual Studio)에 훌륭한 아두이노 확장이 있긴한데....
유료입니다.
그래서 그냥 'Arduino IDE'를 쓰고 있었습니다.
그런데 이번에 좀 덩치 큰 코드를 짜야 하는데 'Arduino IDE'는 너무 불편해서
'VS Code'에 세팅해서 써야 한다고 마음먹고 정리합니다.
이 포스팅에서는 가능하면 명령어가 아닌 UI로 작업합니다.
VS Code의 확장에서 'Arduino'로 검색합니다.
'Microsoft'에서 만든 'Arduino'확장을 설치합니다.
확장 > Arduino > 확장 설정
을 선택하면 '사용자' 영역 설정이 나옵니다.
'사용자'는 글로벌(전체) 설정을 말하는 것이고
'작업 영역'은 이 프로젝트의 영역의 설정을 말합니다.
같은 설정이 있으면 '작업 영역'의 설정이 우선시 됩니다.
아두이노 보드가 달라져도 항상 같은 값을 사용하게 될 옵션만 수정하는 것이 좋습니다.
Arduino: Path
-> 설치된 'Arduino IDE'의 경로를 지정해 줍니다.
Arduino IDE 1.x 버전만 가능합니다.
(아직 2.x는 지원하지 않는 것으로 알고 있음)
'F1'이나 'Ctrl + Shift + P' 혹은 '보기 > 명령 팔레트'
를 선택하여 명령 팔레트(command palette)를 실행합니다.
아래 명령어를 넣어 파일을 생성합니다.
Arduino:Initialize
이때 보드에 대한 설정이 없으면 보드 선택 창이 표시됩니다.
나중에 수정할 수 있으므로 적당히 선택하고 넘어가서 파일을 생성합니다.
원래는 각종 명령을 사용해 설정해야겠지만.....
인터페이스가 잘되어 있어서 그럴 필요없습니다 ㅎㅎㅎ
'.ino'파일이 생성되었다면 우측하단에 아두이노 보드를 설정할 수 있는 UI가 표시됩니다.
해당 영역을 클릭하고 자신의 보드에 맞게 설정하면 됩니다.
단, 보드를 선택해야 프로그래머 리스트와 프로세서 리스트가 표시됩니다.
자신의 보드에 맞는 설정을 모르겠으면
'Arduino IDE'에서 동작했던 설정을 사용하면 됩니다.
메뉴에 '툴'을 선택하면 관련 정보가 표시됩니다.
업로드할 간단한 테스트 코드를 아래와 같이 작성합시다.
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.println("Hello VS Code Arduino");
delay(500);
}
우측 상단에 '업로드(Arduino: Upload)', '검증(Arduino: Verify)' 버튼이 있습니다.
검사는 올리기 전에 확인하는 기능이고,
업로드는 아두이노에 코드를 올립니다.
업로드 버튼을 눌러 코드를 아두이노에 올립니다.
시리얼 모니터를 열려면 우측하단의 'Open Serial Monitor' 버튼을 눌러 줍니다.
보드 레이트(Baud Rate)설정을 해주면 메시지가 출력됩니다.
VS Code로 넘어온 가장 큰 이유가 자동완성인데 처음에는 자동완성이 되지 않는 경우가 있습니다.
이런 경우 'settings.json'을 열어(없으면 '.vscode'폴더에 생성) 아래 값을 추가합니다.
(참고 : 성태의 닷넷 이야기 - Visual Studio Code의 아두이노 프로그램 개발 시 인텔리센스가 안 된다면? )
"C_Cpp.intelliSenseEngine": "Tag Parser"
/*
{
"C_Cpp.intelliSenseEngine": "Tag Parser"
}
*/
'설정'에서 지정한 'arduino'폴더의 'libraries'에 라이브러리가 들어있다면 자동으로 인식해야 하는데
인식을 못 할 때가 있습니다.
이럴 때는 'Arduino IDE'를 한번 실행시켜 줍니다.
'Arduino IDE'가 한 번도 실행되지 않았거나 실행 시 생성되는 파일이 없으면 빌드가 되지 않는 경우가 있습니다.
'Arduino IDE'를 한번 실행시키고 'VS Code'도 재시작 해줍니다.
참고 :
Beky Electronics - Programming Arduino with Visual Studio Code
stackoverflow - Can't see Serial.print() outputs in Visual Studio Code from Arduino device (ESP8266) - ben님 답변
이유는 모르겠지만 보드 레이트 설정했더라도 '시리얼 모니터' 아이콘으로 연결하지 않으면 연결이 되지 않습니다.
이것 때문에 반나절 삽질을 ㅎㅎㅎㅎ