본문 바로가기

아두이노

아두이노를 시작할 때 알아두면 좋은 점

아두이노를 잘 다루려면 프로그래밍을 잘 알아야 한다. 프로그래밍을 잘 이해하고 있어야 문제가 생겼을 때 디버깅에 많은 시간을 허비하지 않는다. 

 

아두이노 프로그래밍 언어는 C언어 계열로 객채지향 언어인 C++를 기준으로 한다. 아두이노 IDE(통합 개발 환경)는 프로그래밍 언어의 문법에 맞게 오류 처리를 수행하고 기계어로 컴파일을 한 후에 아두이노 보드에 업로드해서 동작하게 한다. 

 

아두이노 동작 방식

 

아두이노 보드는 다른 보드들과 마찬가지로 CPU와 메모리, 인터페이스(외부와 연결하는 부분)로 되어있다.

아두이노의 메모리는 휘발성인 일시 기억 메모리와 비휘발성인 고정 기억 메모리, 부트로더가 있다.

 

일시 기억 메모리 => 컴파일된 실행 파일이 저장

고정 기억 메모리 => 프로그램 등을 쌓아두는 메모리(전원이 공급되지 않아도 없어지지 않고 저장되어 있음) 

부트로더 => 전원이 들어온 상태일 때 프로그램을 실행하는 펌웨어가 저장되어 있음.

 

 

아두이노의 프로그램이 동작을 새로 시작하는 상황

 

1) 프로그램이 새로 업로드 되었을 때

2) 리셋 버튼을 눌렀을 때 

3) 시리얼 모니터를 실행했을 때 

4) 전원이 공급됐을 때

 

IDE 업로드 과정

 

아두이노 스케치(소스코드)는 IDE에서 컴파일하면 실행할 수 있는 프로그램으로 바뀐다.  IDE에서 컴파일할 때는 프로그래밍 구문의 오류를 검사한 후 오류 처리와 기계어로 변환한 다음, 라이브러리(헤더 파일 등)와 연결하고 나서 실행 파일을 작성한다. 

 

 

 

여기서 기계어, 어셈블리어, 고급언어에 대한 간략한 이해를 하면 좋다.

1) 기계어(Machine Language) : 컴퓨터가 사용하는 언어. 컴퓨터의 CPU가 명령을 처리할 때 사용하는 언어이며 아래와 같이 이진화된 숫자(2진법)로 구성되어 있습니다.

1000 1011 0100 0101 1111 1000

2) 어셈블리어(Assembly Language) : 기계어에서 숫자를 의미 있는 단어로 바꿔서 사람들이 이해하기 쉽게 만든 언어.

mov eax, DWORD PTR [ebp-8]

3) 고급언어(High-Level Language) : 프로그래밍 언어의 문법 구조가 기계어와 유사하면 저급 언어라고 부르고, 사람들이 이해하기 편하도록 만들어진 프로그래밍 언어를 고급언어라고 한다. C, C++, Java, C# 등이 속합니다. 

result = a + b;

자세한 내용은 아래 링크로~!
출처 : https://blog.naver.com/tipsware/221041215416

 

기계어는 사람이 이해하기 어렵고, 고급언어는 기계가 이해하기 어렵습니다. 기계어와 고급언어 간의 변환을 해주는 과정을 컴파일(Compile)이라고 합니다.

 

 

디버깅

 

디버깅이란 아두이노에서 프로그램이 개발자의 의도대로 움직이지 않을 때 수정하거나 개선하는 작업을 말한다. 초보자가 새 프로그램을 작성할 때는 구문 오류가 많이 발생한다. 이 오류를 빨리 해결하기 위해선 기본 문법을 알고 있어야 하고 디버깅 정보(에러문)을 읽어낼 수 있어야 한다. 

 

하드웨어 문제로는 컴퓨터와 아두이노 보드의 연결 문제, 전자 부품 회로 오류, 전원 문제, 통신 오류 등이 있다. 하드웨어 문제는 초보자일 수록 회로 배선 문제에서 많이 발생한다. 회로를 연결할 때 조심해야 할 점은 전원 부분인데 잘못 연결할 경우 전자 부품이 타버릴 수도 있고 심하면 보드와 컴퓨터까지 고장 날 수 있어서 항상 전원 연결을 신중히 해야 한다.