[아두이노] 아두이노 코딩 입문

IOT/아두이노기초문법|2019. 4. 9. 09:00

[아두이노] 아두이노 코딩 입문



오늘은 간단히 코딩에 대해 포스팅을 하겠습니다. 사실 비전공자분들은 코딩이 약간 외계어처럼 느껴지시는 분들이 있는 것 같아서 원래는 이런 내용을 초창기 포스트에서 소개 했었야 했는데 늦게 포스팅을 하게 되었네요. 아두이노 코딩을 할때 알아야 기초적인 문법만 포스팅을 하도록 하겠습니다. 이전에 포스팅한 내용들이 일부 중복되지만 그래요 한번에 기초적인 문법을 묶어서 설명하는게 나을 것 같아서 몇일간 코딩에 관련해서 포스팅을 하도록 하겠습니다.

1. 코딩의 준비


[ 아두이노 ]

[ 동작 ]


아두이노에 전원이 공급되면 젤 먼저 setup()함수가 한번 수행되고 그다음 loop()함수가 반복 수행됩니다. 간단히 아두이노에 전류가 공급되면 setup()함수를 수행후 loop()함수가 반복 호출된다는 정도만 머리속에 넣어 두세요.

2. "Hello World" 출력하기


[ 메인창 ]



아두이노를 편집창으로 드래그 하고 나면 오른쪽 항목에 Code 클릭을 해주세요.



기본 베이스 블록을 위 그림처럼 휴지통이나 블록이 있는 쪽으로 드래그 하면 블록은 삭제됩니다.

[ 블록 ]



시리얼통신 블록 :



오른쪽 항목에 Code가 있는데 그걸 선택하면 위 그림처럼 세가지 방식을 선택 할 수 있습니다. 여기서 두번째 줄에 있는 Bloocks+Text를 선택하십시오. 그리고 Output 항목에서 아래 print 블록을 오른쪽으로 드래그 해주세요. Output는 파란색 블록에 있습니다. 그러면 아래와 같은 코딩이 같이 오른쪽에 text창에 나타납니다. print 블록은 Serial 블록이여서 Serial 관련 기본 세팅이 코딩으로 보여집니다. 사실 블록으로 간단히 표현하면 코딩을 구지 할 필요 없습니다. 하지만 블록을 사용하시면 표현하실 때 약간 제약을 받기 때문에 제 경우는 블록보다 Text 코딩을 선호 합니다.

블록 하나를 배치했을때 아래 코딩이 자동으로 생성됩니다.

[ 코딩 ]

void setup()
{
  Serial.begin(9600); //시리얼통신 시작

}

void loop()
{
  Serial.println("hello world"); //시리얼모니터로 출력
  delay(10); 
}

실행을 하기 위해서 아두이노 IDE 시뮬레이터 창을 띄워야겠죠.


위 그림을 보시면 Serial Monitor를 누르면 모니터창이 나타납니다.

시뮬레이터 실행을 누르시면


"hello world"가 계속 출력됩니다.

println("내용");

위 명령문으로 내용을 시리얼모니터로 출력하라는 명령입니다. 이제 C문법을 배울때 그 결과를 이 함수를 사용하여 출력할 예정입니다.

3. Text 모드로 변경


현재상태에서 Text모드로 바꾸시면 아래와 같이 블록만 없어지고 Serial 출력코딩은 그대로 남습니다. 그러면 loo()함수안에 있는 명령들을 아래 그림처럼 setup()함수로 옮겨주세요.


그리고 실행을 누르면 다음과 같이 딱 한번만 수행합니다.


setup()함수와 loop()함수의 차이점을 구별하셨나요. loop() "hello World"문장을 계속 출력하지만 setup()함수는 딱한번 출력하는 것을 확인 하실 수 있을거에요.

여기까지해서 기본 세팅은 끝났네요. 아두이노를 이용해서 "hello World"란 문장으로 시리얼모니터에 출력할 수 있게 되었습니다. 이제 코딩을 하면 그결과를 시리얼모니터로 출력할 수 있겠죠. 여기까지 따라 오셨으면 코딩의 절반을 배운 거나 다름 없습니다.

이제는 코딩 문법을 하나씩 기초 위주로 배워보도록 하겠습니다. 사실 C언어를 C컴파일를 사용해서 C공부를 하면 좋지만 아두이노 환경에서 아두이노와 친근감을 가지기 위해서 아두이노 상에서 프로그램 언어 공부를 배워 보도록 하겠습니다.

4. 시리얼모니터 출력 함수


시리얼모니터에 출력하는 함수가 print(), println(), write()가 있습니다. write()함수를 제외한 print(), println()함수만 주로 사용할 예정입니다. 그래서 이 둘의 차이점만 구별해 주세요.

  • print("내용") : 해당 내용을 출력하고 커서의 위치는 출력된 해당 라인에 계속 머물어 있게 됩니다.
  • println("내용") : 해당 내용을 출력하고 커서의 위치는 새로운 라인으로 이동하게 됩니다.

print()함수의 예제



위 그림을 보시면 두개의 print()함수를 사용했습니다. 첫번째 "hello "문장을 출력하고 커서는 현재라인에 머물어 있기 때문에 다음 "world"라는 문장이 이여서 출력됩니다. 그런데 또 print()함수를 사용한다면 계속 현재라인에서 이여서 출력되겠죠. 그래서 마지막 출력문에는 println()함수를 사용해서 출력라인의 끝을 표현해야 합니다.

println()함수의 예제



위 그림을 보시면 두개의 println()함수를 사용했습니다. 첫번째 "hello "문장을 출력하고 커서는 새로운 라인으로 이동한다고 했죠. 그래서 "world"문장이 새로운 라인에 출력됩니다. 여기서 두번째 함수도 println()함수임으로 3번째 새로운 라인으로 커서가 옮겨져 있겠죠.

출력함수 올바름 사용



위 그림처럼 두이상의 여러개 내용을 한 라인에 모두 출력을 해야 할경우는 print()문으로 표현하다가 마지막 내용에서는 println()으로 표현해서 커서를 옮겨주는 코딩을 하셔야 합니다.

참고로, "내용"에서 안에 공백문자도 인식을 하니깐 공백(스페이스바) 효과도 넣어 띄워쓰기를 할 수 있습니다.

이 차이점만 이해하시고 출발하시면 되겠습니다.

추가 주의사항

세미클론(;) 이라는 기호가 있습니다. 명령문의 끝을 나타내는 기호로 편하게 명령어 수행하라 정도로만 이해해 두세요. 명령문에는 무조건 세미클론이 붙습니다. 이게 생략되면 에러가 발생하니깐 꼭 기억해 주세요.

'{' 와 '}' 괄호는 함수에는 함수의 영역을 표시하는 기호입니다. setup()함수가 수행하면 이 괄호가 시작하는데 부터 괄호가 끝나는 데까지의 내용을 기계가 읽고 수행합니다. 간단히 "괄호는 영역이다!" 정도로 이해하시면 되겠습니다.

마무리


오늘은 코딩의 첫 관문인 시리얼모니터에 명령한 결과를 출력해보는 시간으로 채웠습니다. 이정도만 이해하시면 프로그램언어를 절반정도 이해하셨다고 보면 될꺼에요.
처음하시는분들은 어색할 수 있지만 setup(), loop()함수가 있는데 전원이 공급되면 setup()이 젤 먼저 호출되어 수행한 뒤에 loop()함수가 그 다음에 반복해서 호출 수행한다 정도정도만 이해하세요.
그리고, 오늘 소개한 Serial.print(), Serial.println()함수만 이해하시면 프로그램언어 공부 절반을 배운것이니깐 꼭 원리를 기억해 주세요. 출력함수 하나만 이해해도 프로그램언어를 절반 배운거에요.

원래는 내용이 더 있는데 너무 길게 빼면 그렇 것 같아서 여기서 마무리 합니다.



댓글()