실제 프로그램에서는 어떤 내용이 들어갈지는 아이디어를 설계한 사람이 넣어줘야
하는데요. 그것은 요리 하는 행동과 비슷합니다.
예를 들자면 라면을 끓일 때 냄비에 물을 붓고 일정시간 가열하고 적정온도가 되면
라면회사에서 알려주는 레시피 대로 재료를 넣고 더 끓이면 완성 되겠죠.
간단한 레시피가 익숙해 있지 않은 사람이 처음부터 라면을 끓여본다.
이건 어떻게 보면 어렵지만...
시간이 지난 후에 라면을 만들어 먹는건 아주 쉬운 행동이었어요.
프로그램도 마찬가지 처음에는 기술적으로 배워야 하는 내용이 무엇인지 정도를 이해하는
것입니다.
요리에서 무언가를 만들기 위해 가열을 하게 되는데요.
프로그램도 원하는 형태의 내용을 작성할 때 최종적으로 회로 기판에 넣는 작업을
우리는 컴파일하고 업로드 한다고 이야기 합니다.
여기서 전문용어가 하나 나오내요. 컴파일과 업로드
컴파일은 실제 기계 내부에서 가장 상단에 만들어진 개발자의 프로그램을
기계언어로 변화하는 과정이고요.
업로드는 기계언어로 만들어진 파일을 회로기판에 넣을 수 있도록 하는 과정을
간단히 이야기 합니다.
물론 이 내용을 더 복잡하게 다양한 단어로 표현하지만
아직은 어려운 단어들을 최대한 적게 쓰는 것이 좋으니
이해하기 쉬운 그대로 컴파일 업로드 정도로 생각하면됩니다.
프로그램을 제작하게 될 때 좀 전에 이야기한 요리에서 가열하는 것과
컴파일은 동일하다고 생각하면 되고 업로드 하는 것은 만들어진 프로그램 파일을
PC에서 회로 기판으로 옮겨담는 과정이라고 생각하면 쉽습니다.
마침 큰 냄비에서 끓인 라면을 실제로 먹는 그릇으로 옮겨 담는다고 표현하면 좋겠네요.
아두이노를 열게되면, 상당에 탭 중에 “스케치”를 눌러서 들어가면 “확인/컴파일”과 “업로드”
내용이 있습니다.
그리고 단축키도 있는데요.
상단 탭 바로 아래 둥근모양이 그림에 보이죠. 체크동그라미가 “확인/컴파일”이고 우측화살표 모양이 “업로드”입니다.
하나씩 순서대로 눌러 볼까요?
다음과 같은 과정이 진행 후 최종적으로 컴파일 완료라고 뜨게 됩니다.
다음이 업로드를 누르면 프로그램이 다운로드 되는데요.
업로드를 누르면 컴파일이 되고 난 후 아두이노에 프로그램을 업로드 합니다.
그런데 그냥은 안되고 오류가 뜨게 됩니다.
다음과 같이 보드에 로딩중에 문제 발생 이라고 뜨게 되죠.
동작이 안되고 에러가 뜬다고 당황하시면 안됩니다.
컴파일 후에 컴파일 완료는 되었는데 프로그램이 안되는 이유는
다음과 같이 발생될 수 있습니다.
사용되는 보드가 맞는지 확인을 해봐야 됩니다.
툴 => 보드 => Arduino/Genuino Uno 로 선택해서
자신이 현재 사용되는 보드를 선택했는지
다른 한 가지는
PC에서 프로그램 후 아두이노로 프로그램을 연결해야하는데..
겉으로 보기에는 USB 단자로 연결했는데..
속으로 연결 안된 경우가 많습니다.
속이 연결 안되었다는 것은 PC의 흔히 이야기하는 포트가 잘못 연결되었다고
생각하면 되는데요.
우리가 누군가에게 전화걸 때 잘못 전화된 것과 동일하다가 생각하시면
간단합니다.
아두이노라는 회로를 USB로 연결했는데 다른 번호를 선택했다면 수정하면 되겠죠.
상단의 툴 탭을 누르고 아래 중간쯤 보다 조금 밑에 “포트:”라는 탭이 있죠.
거기서 자기가 실제 연결되고 있는 포트에 연결을 해줍니다.
제꺼는 COM4(Arduino/Genuino Uno) 가 새로 생성되어 있는데요.
그것으로 연결을 합니다.
==========================================
혹시 포트가 잡히지 않는 분은 여기 부분을 참고해주세요.
내 PC를 우측마우스로 클릭 하면 아래와 같이 속성이 나오면 클릭
시스템 화면에 들어가면 좌측의 장치 관리자 클릭
장치관리자에서 펼처진 화면이 나올 수 있으나 우선 다음과 같이 보여드립니다.
장치관리자에서 포트(COM & LPT) 부분으로 내려가서 확인해 봅니다.
USB를 꼽았을 때와 빼졌을 때 Arduino Uno로 인식되어 옆에 COM4가 몇 번으로
인식되는지 바로 확인 가능할 겁니다.
대게의 경우 포트의 번호가 USB와 연결 될 때와 몇 번이 된다 라고 확인이 가능하지만
여기서 인식은 되지만 알 수 없는 장치로 뜨거나 문제가 발생할 경우
USB 드라이버를 다시 설치해야합니다.
다시 말해 아두이노를 설치할 때 USB를 인식하는 장치를 잘못 설치 했을 수 있기 때문에
귀찮더라도 그냥 아두이노를 다시 설치하시는게 좋을 것 같습니다.
================================================================
별문제 없을 경우 COM포트가 잡히게 되는데 컴퓨터 마다 조금 다르게 인식될 수 있으므로
아두이노를 연결 시 몇 번으로 연결되는지 확인하고 연결하시면 됩니다.
제대로 연결된 상태에서 우측화살표 모양인 업로드 모양을 다시 클릭해보면
아래와 같이 업로드 완료와 “avrdude done. Thank you.”라는 메시지가
상태 창에 나타납니다.
업로드가 원활하게 진행되었다면 이제 프로그램까지 보드로
옮길 수 있는 상태에 이르렀습니다.
그럼 가장 간단한 프로그램 입문하기 전에 지금까지 무언가 쓰여져 있는 내용을
그대로 컴파일이란 작업으로 눌려서 다운했는데 무엇인지 내용을 확인해보죠
void setup()하고 {}괄호를 치고 또 밑엔는
void loop()하고 괄로 하고 이렇게 되어 있었습니다.
void setup()이라는 부분은 { } 그 괄로 안에 실제 사용할 부분을 미리 알려둔다 라고 생각하면됩니다.
우리는 이것을 선언한다고 이야기하는데요.
우리가 실제 프로그램에서 사용할 내용을 설정하는 구문 이렇게 정도 이해하면 좋을 것 같습니다. 미리 설정해 놔야 컴퓨터도 아 내가 나중에 무얼 사용할 꺼니까 준비해야지 하고
준비단계를 만드는 겁니다.
void loop()라는 부분 안의 내용은
이제 입력이나 출력부분을 프로그램하는 부분이라고 이해하면 쉽니다.
그런데 한번만 동작되고 끝 나는게 아니라
기계는 계속적 반복을 하니까 지속적으로 동작 되도록
한다고 생각하시면 쉬울 겁니다.
이제 간단한 이해를 돕기 위해 LED를 한번 깜박여 보겠습니다.
LED를 깜박이는 예제 중에 이미작성된 내용이 있으니 한번 가져와 보죠
상단탭에서 파일 => 예제 => 01.Basics => Blink를 클릭해보시죠
아래와 같은 내용으로 예제가 출력될 겁니다.
그런데 아까부터 먼지는 몰라도
// 이런내용과
/* */내용이 보였습니다.
두 개의 명령어는 주석으로 이야기합니다.
한마디로 말해서 프로그램 작성시 내용을
작성자만 표시되고 컴퓨터에게는 작성된 내용을 보이지 않도록 하는 것입니다.
왜냐구요. 프로그램의 내용이 길어지면 이해하기 힘든부분도 많이 있기 때문에
가운데 주석이라는 것을 달아서 지금부분은 어떻게 처리됨 하고 표식을
남기는 것이지요.
또 한가지는 이제 프로그램을 작성하다가 부분적으로
지우고 테스트 해야겠는데 나중에 또 써야 할때도 있게 되죠.
그런 것을 임시로 보이지 않게 가리는 부분이라고 생각하시면 됩니다.
그런데 2개의 범위가 서로 다르다는 점
// 내용작성 : 한 줄 내용을 숨기고 싶을 때
/* 내용작성 */ : 줄과 관계 없이 가려져야 되는 시작과 끝을 표시할때
그러면 실제 작성할 내용의 프로그램을 이해해 봅시다
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
있는 내용을 그대로 이해해 보면,
void setup 에 있는 내용은 사용하게될 핀의 단자가 몇 번인지 선언을 해주는 겁니다.
pinMode(13, OUTPUT); 이렇게 내용이 쓰이게 될 때
pinMode를 void setup에 넣어 줌으로써 나중에 사용하는 LED가 몇 번에
사용 될 꺼니까 미리 넣어 주는 명령어를 하나 배운다고 생각하시면 됩니다.
향후에 배워야하는 명령어가 여러 가지 있으니 오늘은 명령어를 5개 이하로 배우도록 할께요
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
delay(1000);
이것까지 3개만 이해 하십시오
'메이커스교육 > 아두이노교육' 카테고리의 다른 글
[아두이노] 스테핑모터를 이용한 블라인드 제어 (0) | 2019.05.03 |
---|---|
[아두이노] 5강 스테핑모터 제어하기 (2) | 2019.05.01 |
[아두이노] 4강 적외선 리모콘을 이용한 서보모터 제어 (0) | 2019.04.30 |
[아두이노] 3강 출력제어 RC서보모터 제어하기 (0) | 2019.04.30 |
[아두이노] 2강 아두이노의 입출력 (0) | 2019.04.28 |