> For the complete documentation index, see [llms.txt](https://help.goorm.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.goorm.io/ko/edu-student/quiz-type/arduino.md).

# 아두이노 스케치 개발 문제 유형

{% hint style="info" %}
**아두이노 스케치 개발 문제**는 제출모드, 실행모드를 지원합니다.
{% endhint %}

{% hint style="danger" %}
**아두이노 스케치 개발 문제**는 현재 **크롬 브라우저**에서만 이용 가능합니다. \
추후 다른 브라우저들로 확장할 예정입니다.
{% endhint %}

**학습진행 장에서 실습화면 인터페이스를 확인하지 않으셨다면 아래 링크를 먼저 확인하시기를 권장합니다.**

{% content-ref url="/pages/-LrsePuO5JmOGn3Q0FMA" %}
[실습화면 인터페이스](/ko/edu-student/learing-process/interface-practice.md)
{% endcontent-ref %}

### **아두이노 스케치 개발 문제** &#x20;

아두이노는 오픈소스 마이크로컨트롤러 보드입니다. \
아두이노는 PC에 쉽게 연결하다는 장점 뿐만 아니라 비교적 초보자들도 쉽게 코딩하고 업로드하여 \
IoT(사물 인터넷), 로봇, 드론 개발, 3D 프린터, 자동제어 등과 같은 다양한 분야에서 활용 가능하다는 \
장점과 활용성으로 널리 사랑받고 있습니다.

구름EDU에서 아두이노 프로그래밍을 하기 위해 간단한 준비 과정이 필요합니다.\
준비 과정 설명에 앞서 아두이노 프로그래밍 문제 인터페이스를 확인하도록 하겠습니다.

![](/files/-MLHfxpj2EKzwA_4HVmN)

### **실습 환경 설정**

아두이노 프로그래밍 실습 환경 설정에 대한 설명입니다. \
매뉴얼을 참고하여 실습 환경 설정 후 실습을 진행하시기 바랍니다.

1\) 페이지 우측 상단에 보이는 **'`연결하기`'**&#xB97C; 클릭합니다.

2\)  **goormduino** 환경 설정 가이드가 있는 다음과 같은 다이얼로그가 팝업됩니다.

![](/files/-MLHg5Xue0UV8_kMa6HJ)

3\)  `1. 구름두이노(goormduino) 크롬 앱 설치하기` 텍스트 박스 우측 하단에 위치한 \
\&#xNAN;**`다운로드`**&#xBC84;튼을 클릭합니다. \
\
이후, \
새 창으로 chrome://extensions/으로 접속 > 상단에 있는 개발자모드를 체크 > 다운로드 받은 압축파일을 해제 >**`압축해제된 확장 프로그램 로드...`** 클릭 후 업로드합니다.

이 때, 압축 해제된 폴더에서 '**deploy**' 폴더를 선택하여 업로드해주세요!

![](https://grm-project-template-bucket.s3.ap-northeast-2.amazonaws.com/lesson/les_ayeKF_1469021385108/1494062095855_image.png)

4\) 업로드한 구름두이노의 ID를 복사한 후, **'Chrome Extention ID'** 인풋 박스에 넣습니다.\
\&#xNAN;**'구름두이노 연결하기'** 항목 우측 하단의 '**`연결하기`'** 버튼을 클릭합니다. \
\&#xNAN;**`연결하기`** 버튼이 **녹색**으로 변경되면 정상적으로 연결된 것입니다.&#x20;

{% hint style="danger" %}
사용자마다 구름두이노 ID가 다릅니다. \
메뉴얼에 보이는 gdd\~ 를 복사하지 마시고, 자신이 업로드한 구름두이노의 ID를 복사해주세요.
{% endhint %}

![](/files/-MLHgb0KtjXrGtN_3oUb)

5\) 이제 PC와 아두이노 보드를 연결할 차례입니다.  '**컴퓨터와 연결된 보드 불러오기**' 오른쪽에 있는 ![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lq-Q9LciN1X9EABxGkt%2Fuploads%2F0SXufSPU6goCPmzuMOZ2%2Ffile.png?alt=media)를 클릭하면 컴퓨터와 연결된 포트 리스트를 불러옵니다. \
PC에 아두이노 보드를 연결한 후 아두이노와 연결한 포트를 선택합니다. 이후, 보드 종류를 설정합니다.&#x20;

여기까지 오셨다면 실습 환경은 완성되었을 것입니다. \
다음으로 아두이노 프로그래밍 실습에 대해 알아보도록 하겠습니다. \
이론 설명, 실습 내용, 에디터, 터미널의 배치는 다른 프로그래밍 문제와 동일합니다.

기본적으로 에디터에는  '**Arduino**', '**Serial**' 2개의 탭이 있습니다.&#x20;

* **Arduino** : 강의자가 제공한 기본예제 코드가 주어지고 이 코드를 베이스로 요구사항에 맞게 \
  프로그래밍을 하시게 됩니다. 수강자가 수정한 코드를 아두이노 보드에 업로드할 수 있습니다.
* **Serial** : PC와 아두이노 기기 사이의 시리얼 통신 출력을 통해 확인할 수 있는 콘솔 터미널입니다.

코드 작성을 마친 후 '**`업로드`**' 버튼을 누르면 연결된 보드에 코드가 업로드됩니다. \
아래에 업로드에 성공한 화면이 있습니다. 에디터 하단에 위치한 **실행 결과** 창을 통해 \
업로드 성공여부를 확인할 수 있습니다.<br>

![](/files/-MLHgwIUZRYKFPLM4R1q)

매뉴얼을 보시면서 시리얼 통신이 무엇인지 궁금해 하실 분들이 계실 것입니다. \
아두이노는 디버깅 도구가 없기 때문에 프로그램의 문제를 찾는데 어려움이 있을 수 있습니다.&#x20;

이 문제점에 대한 대안이 시리얼 통신입니다. \
시리얼 연결을 통해 시리얼 통신 함수를 코드 곳곳에 입력하여 코드의 동작을 체크할 수 있습니다.&#x20;

아래에 시리얼 통신 함수 리스트가 첨부되어 있습니다.

* **Serial.begin(speed) :** 시리얼 통신의 전송속도를 설정합니다.
* **Serial.available() :** 시리얼 포트로부터 시리얼 데이터의 바이트크기를 읽어 반환합니다.
* **Serial.flush() :** 시리얼 포트안에 존재하는 데이터를 비웁니다.
* **Serial.print/println(val) :** 시리얼 통신 데이터를 시리얼 포트로 ASCII 형식으로 출력합니다.
* **Serial.read() :** 시리얼 통신 버퍼에서 데이터를 읽어들입니다.
* **Serial.write(val) :** 데이터를 시리얼 포트에 씁니다. 데이터는 바이트 단위로 전송됩니다.

![](https://grm-project-template-bucket.s3.ap-northeast-2.amazonaws.com/lesson/les_ayeKF_1469021385108/24996eaea08145e8e0814856653f8221b40955d84bce83e7ee3e4f12a183cdbb.png)

Arduino 탭에 적절한 시리얼 함수를 입력해두고 시리얼 탭으로 넘어가서 \
![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lq-Q9LciN1X9EABxGkt%2Fuploads%2FWZ6HBwYOBCfPdJy3hJpN%2Ffile.png?alt=media) 버튼을 클릭하고 연결이 되었다는 메세지가 나타나는 것을 확인합니다.

**`시리얼 연결해제`** 버튼으로 시리얼 연결을 해제할 수 있습니다.<br>

![](https://grm-project-template-bucket.s3.ap-northeast-2.amazonaws.com/lesson/les_ayeKF_1469021385108/7fd5d2dc621dc1ff627ec2e995648ce8070f8651216c214493b361ed9392253f.png)
