아두이노 기초 강좌 1

Electronics 2010.04.07 01:22
지난 번에는 아두이노가 무엇인가와 아두이노에 흥미를 가질 수 있을 만한 예를 몇가지 보는 것으로 아두이노를 소개하는 시간을 가졌다.

이번에는 약간 깊이 들어가보기로 한다. 약간만 ^^ 아두이노로 할 수 있는 가장 간단한 일이 LED를 켜고 끄는 것이다.
그걸 하기 위한 도구를 어떻게 준비하고 연결해야되는지를 알아 보자.

먼저 아두이노 보드와 컴퓨터가 필요하고, 둘을 연결할 USB케이블이 필요하다. 그리고 컴퓨터에 아두이노 프로그래밍을 위한 프로그램인 아두이노를  www.arduino.cc 에서 자기 OS에 맞는 것으로 무료로 다운받아 설치한다. 오픈소스라서 공짜다. 걱정하지 말고 다운받아서 설치하자. 

아두이노 보드와 USB케이블은 www.plughouse.co.kr에서 살 수 있다. 전자부품을 잘 모르면 arduino starter kit을 사는 것이 편할것이다. 단품으로 살때는 arduino duemilanove/328 보드를 사면된다.  duemila nove (두에밀라노베)는 이탈리아어로 2009란 뜻으로, 아두이노의 2009년 버전을 뜻하는 이름이다. 짐작했다시피 이탈리아 사람들이 만들어서 이탈리아어로 된 이름을 가지게 되었다.


아두이노 두에밀라노베

USB케이블


아두이노  맥킨토시 버전을 다운받으면 FTDI USB Driver가 함께 딸려 온다. 아두이노는 어플리케이션 디렉토리로 드래그해서 깔고 FTDI USB Driver는 더블클릭해서 깔아준다.

윈도우즈 버전은 일단 프로그램 먼저 깔고 나중에 USB케이블을 꽂으면 비스타 이상은 자동으로 설치되고, XP는 새로운 하드웨어를 감지했다는 창이 뜨는데, 이때 아두이노가 설치된 디렉토리 밑의 drivers/FTDI USB Drivers 디렉토리를 지정해서 드라이버를 설치해준다. 

그러면 복잡한(?) 프로그램 설치가 끝난 것이다. 

아래는 아두이노 프로그램이다. 요즘 최신 버전이 0018이다.   맥킨토시 버전이라 메뉴가 분리되어 있지만 윈도우즈 버전은 메뉴가 붙어 있다. 
  



위 그림의 아이콘으로 된 버튼들의 사용법을 보면, 
맨 왼쪽 원안에 삼각형은 컴파일 버튼이다. 프로그램을 다 짜고 나서 저장 한 후에 이걸 누르면 컴파일이 된다. 컴파일은 보드안의 마이크로컨트롤러 칩이 알아먹을 수 있는 기계어로 프로그램을 변환해주는 과정이다. 프로그램 고칠 때 마다 해줘야 된다.
그 다음 원안의 네모는 멈춤, 
윗쪽 화살표는 문서 열기
아래쪽 화살표는 저장하기, 프로그램을 고친 후에는 한 번씩 해줘야 한다. 
오른쪽 화살표는 보드로 프로그램 업로드하기이다. 컴파일 후에 업로드를 누르면 작성한 프로그램이 아두이노 보드에 업로드 된다. 이것도 프로그램 고칠때 마다 다시 해줘야 한다.
끝으로 네모안의 네모와 연결된 쪼그만 동그라미가 든 (길다--;;) 아이콘은 시리얼 모니터인데, 아두이노 보드가 컴퓨터에게 보내는 문자들을 보여준다. 

프로그램을 짜고 저장 - 컴파일 - 업로드 순서로 한번씩 눌러주면 아두이노 보드로 프로그램이 올라가서 실행이 되는 그런 식이다. 일단 보드에 프로그램이 올라가면 자동으로 시작된다. 재시작은 보드의 리셋버튼을 누르면 되고, 끄려면 USB케이블을 뽑으면 된다. 스위치는 따로 없다. 단순한 세상이다.

보드의 전원공급은 USB케이블을 통해서 되며, 별도의 전원단자로 전원을 공급해주면 자동으로 USB의 전원은 끊어 지도록 되어 있다. 그러나 이런 전원 자동전환 기능은 두에밀라노베 보드에서 부터 적용된 것이기 때문에, 예전보드나 다른 호환보드는 두 가지 전원이 동시에 공급되지 않도록 주의 해야 한다.


그럼 오늘의 하이라이트 LED켜고 끄기 프로그램을 해보자.
아래의 코드를 아두이노에 쳐 넣고 컴파일 해서 업로드하기만 하면 보드에 달린 LED는 자동으로 1초간 켜졌다가 1초간 꺼졌다가를 반복하게 된다.

회로는 부품 2개만 써서 간단하게 구성할 수 있다. 13번 핀에 전선을 꽂아서 200오옴 이상의 저항을 연결하고 저항의 반대쪽에 LED의 긴 다리를 연결한다. LED의 짧은 다리는 아두이노보드의 GND(그라운드)에 연결하면 회로가 완성 된다. 저항과 LED는 납땜을 해도 되지만 시험용일 경우에는 브레드보드(일명 빵판)라는 것을 이용해서 땜질 없이 연결하는 방법을 쓴다.


빵판이란건 위 사진처럼 꽂으면 빨간 전선과 LED의 한가닥이 연결된 것이고 LED와 저항도 연결이 된다. 5개의 구멍끼리 내부에서 연결이 되어 있는 구조다. 빵판의 구조는 나중에 자세히 설명하기로 한다. 위에 사용한 보드는 아두이노와 호환되는 RBBB라는 보드로 사이즈는 다르지만 완벽하게 호환된다. 

마이크로 컨트롤러 프로그램은 기본적으로 해 넣은 프로그램이 무한반복하는 방식이다. 그러니까 아래의 프로그램은 한번 켰다가 잠시 후 끄는 동작만을 담고 있지만 자동으로 그 짓을 무한 반복하는 것이다. 이게 마이크로 컨트롤러 프로그래밍의 가장 기본이 되는 프로그래밍 규칙이다.

// 는  단지 다른 사람이 알아보기 쉽게 설명을 쓰기 위한 기호로써 그 다음에 쓰는 글씨는 프로그램 실행과는 아무 관계 없다. 단 한줄 넘어가면 안된다. 한 줄 내에서만 작동한다. 
//의 앞에 있는것은 프로그램으로 작동하고 //의 뒤에 있는 글자만 설명문으로 간주된다. 앞으로 //를 이용해서 코드를 설명하겠다.


//LED blink example

int ledPin = 13;                                 // 13번 핀을 ledPin이라고 이름지어 준다. ledPin이라는 정수형 
      // 변수의 선언이기도 하다.
void setup()                                     // 모든 아두이노 프로그램엔 void setup()이라는 함수가 들어가고, 
{                                                    // 처음 한번 만 실행되는 것들을 담고 있다.
  pinMode(ledPin,OUTPUT);                // 위에서 이름지어준 ledPin 이라는 포트를 OUTPUT출력으로
}                                                    // 지정한다.

void loop ()                                     //void loop()도 모든 아두이노 프로그램에 기본적으로 들어가는 것으
{                                                    //로써, 아두이노를 켜 놓는 동안 무한반복할 동작이 이 안에 들어간
  digitalWrite(ledPin, HIGH);               //다.  ledPin이라고 이름붙인 13번 핀에 전기를 줘서 불을 킨다.
  delay(1000);                                 // 그 상태 그대로 1000 밀리 초(1초) 만큼 기다린다.
  digitalWrite(ledPin, LOW);               // ledPin에 전기를 끊어서 불을 끈다.
  delay(1000);                                 // 그 상태 그대로 1000밀리 초를 대기한다.
}      
                                


위에서 setup()과 loop()는 함수라고 불리우는 것으로 void는 그 함수의 특성을 지정하는 말이고, 아두이노를 쓰는 내내 저 두 함수명은 변하지 않고 쓰이게 된다. 아두이노 프로그램의 기본뼈대가 되는 것이다. 어떤 아두이노 프로그램에도 void setup()과 void loop()는 들어 간다는 뜻이다. 순서를 바꿔도 실행은 되지만, 프로그램을 나중에 볼 때 헷갈릴 수가 있다. 각 함수의 내용은 중괄호로 감싸준다.

아두이노로 대략 중괄호 빼고 8줄이면 LED를 깜빡이는 프로그램을 짤 수 있다는 말이 된다. 프로그램을 조금이라도 짜 봤다면 많이 어렵진 않다고 보는데, 프로그래밍을 처음 접한다면 당황스러울 수도 있을 것이다.

LED하나를 켜고 끄는건 정말 시시한 일이지만 직접 해보면 결코 시시한 기분은 아닐것이다. 새로운 세상을 아는 첫 걸음을 내 딛을 때의 흥분을 새로운 것을 배워본 사람이라면 알 수 있을 것이다. 마치 로미오와 첫날밤을 겪은 줄리엣의 기분이라면 이해가 갈까? 세익스피어 인 러브에 나온 기네스펠트로의 대사가 떠오른다. 
"새로운 세상을 만났어! " 


P.S. 본 강좌를 보시고 이해가 안가는 부분이나 어려운 부분이 있으면 꼭 댓글을 남겨 주시기 바랍니다. 알아듣기 쉬운 강좌로 만드는데 큰 도움이 될 것입니다 ^^

저작자 표시 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

'Electronics' 카테고리의 다른 글

아두이노 기초강좌 3  (13) 2010.04.28
아두이노 기초강좌 2  (34) 2010.04.14
아두이노 기초 강좌 1  (38) 2010.04.07
꽃보다 남자? 물감보다 아두이노!  (15) 2010.03.30
CDROM drive stepper motor hack  (13) 2010.03.05
GPS Logger 자작기  (11) 2009.08.17
Trackback 0 : Comments 38

Trackback Address :: http://blog.whattomake.co.kr/trackback/163 관련글 쓰기

    이전 댓글 더보기
  1. 권순영 2011.03.29 16:25 Modify/Delete Reply

    led와 sos 신호등 까진 해봣습니다.. 다음주까지 계획서를 제출해야하는데 ;; 제 실력에 맞는 작품이 머가 잇을지 모르겟네요

    • Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2011.04.09 23:48 Modify/Delete

      wired에 수준별 프로젝트들 리스트가 있네요 한번 훑어보시죠 http://www.wired.com/magazine/2011/03/ff_makestuff_projects/

  2. 박은수 2011.09.16 12:39 Modify/Delete Reply

    프로세싱과 아두이노의 관계에 대해 짤막하게나마 설명해주실 수 있으신지... 아두이노 처음 시작하는데 프로세싱은 이거고 아두이노는 이거다, 뭐 이런 식으로 딱히 어떻게 설명을 해야 좋을지 잘 모르겠어서요. ㅠㅠ

    • Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2011.09.19 02:14 Modify/Delete

      프로세싱은 PC에서 돌아가고 아두이노는 마이크로컨트롤러보드인 아두이노보드에서 돌아간다는 점이되겠죠.

  3. Favicon of http://netstrolling.tistory.com BlogIcon ::어슬렁 @netstrolling:: 2012.02.17 09:32 Modify/Delete Reply

    우선 스타터킷을 질렀어요. ㅋ

  4. Favicon of http://netstrolling.tistory.com BlogIcon ::어슬렁 @netstrolling:: 2012.02.20 00:51 Modify/Delete Reply

    기록용 댓글입니당^^
    스타터킷을 샀더니 Arduino UNO가 왔어요. 인사이트 책이랑 MrKiss님 글에 있는 Duemilanove와 달라서 살짝 당황했지만 ㅋ
    arduino.cc에서 소프트웨어 다운로드를 받으면, 버젼이름이나 드라이버가 따로 있지 않고, 그냥 'Arduino' 라고만 생깁니다. 왜 나만 드라이버 다운로드를 안해주나 싶어서 계속 뒤졌는데도 없길래 혹시나 해서 바로 USB 꼽아봤더니 연결 성공.
    Processing 이랑 똑 닮은 Arduino 프로그램에 위에 예제를 써서 1초마다 깜빡이기와 3초마다 깜빡이기 업로드해서 성공했습니다. 오호. 신기해라~ 놀라워라~~

    • Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2012.02.21 22:32 Modify/Delete

      우노부터 드라이버를 따로 깔지 않아도 바로 되더라구요^^ 전에 쓰던 FTDI드라이버는 평상시 다운되는거 볼수도 없는 맥을 다운시키기도 하는 우악스러운 놈이라 저도 이제 우노와 같은 시스템으로 가려구해요.

  5. Favicon of http://gbtec.co.kr BlogIcon 꽉꽉잉 2012.04.04 17:19 Modify/Delete Reply

    아두이노 교육 Kit 아두이지가 나왔습니다~
    한번 구경 와보세요 ~~
    http://cafe.naver.com/arduinostory/7904

  6. 아두이놈 2013.05.10 17:20 Modify/Delete Reply

    말씀하신내용으로 PC에 다운받아 설치하였습니다.
    arduino-1.0.4-windows 폴더생성되고 그안에 arduino.exe 파일을 실행하니 님과 같은 화면이 뜨네요. ㅎㅎ
    위에 설명하신 LED 깜빡이는 프로그램(?)를 ctrl+V로 붙쳐넣기해서
    바탕화면에 sketch_may10b 폴더가 생기고 그안에 동일한 이름의 .ino파일이 생성됩니다.
    저장다음에는 컴파일링(기계어로 변환?)단계인데 메뉴를 못찾아서 확인버튼을 클릭하니
    "바이너리 스케치 사이즈 : 1,804 바이트 (최대 32,256바이트) "
    라고 메시지가 뜹니다. 잘된건가요? 현재 킷트나 빵판 뭐 이런것은 없습니다.
    질문이요! 꼭 킷트로만 실행의 여부를 확인할수 있나요?
    오픈소스 프로그램이라고들 했으니 혹시 결과물이 컴퓨터에서 그래픽이나 모니터 상에서 그냥 확인할수 있는(시뮬레이션 같은) 뭐 이런것은 없나요?
    하고 싶은것은 많습니다만, 저한테는 너무 새로운세계라 부족한게 많습니다.
    글을 읽어 주시어 감사합니다.

  7. Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2013.05.22 18:51 Modify/Delete Reply

    아두이노 시뮬레이터도 있다는것 같긴 합니다만. 아두이노란게 컴퓨터 안에서만 벌어지는 일들이 답답해서 그 밖으로 나가고자 하는 건데 아두이노 없이 컴퓨터로만 하고자 하시는건 아두이노를 하는 의미가 없으니 어서 하나 사시죠 ^^

  8. 당황중.. 2014.07.03 17:55 Modify/Delete Reply

    전 아무리 봐도...이해가 불가 합니다..ㅜㅜ 언능 배워서...카운터 리셋시키는 방법을 터득해야하는데...ㅜㅜ 까마득하네여...

  9. BlogIcon RKK 2014.09.01 16:53 Modify/Delete Reply

    잘보고갑니다
    아두이노 초보자로써 유용하게쓰이네요

  10. ギラサキp 2015.08.02 22:52 Modify/Delete Reply

    안녕하세요
    아두이노를 배우려고하는 고등학생입니다
    궁금한게 산더미처럼 많은데 개인적으로 질문드리고 싶습니다
    괜찮으시다면 카톡 cwg981103 으로 연락 부탇드려도 될까요?
    절실한상황이라....부탁드립니다

    • Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2015.08.06 11:48 Modify/Delete

      인터넷에 다~ 있다는 사실 하나만 알면 모든걸 독학 할 수 있습니다. 질문은 잘 구체적으로 게시판에 해주세요. 그래야 경험 공유도 되도 하고 같은 질문 대답 반복하는 일도 안생기죠.

Write a comment

◀ PREV : [1] : ... [39] : [40] : [41] : [42] : [43] : [44] : [45] : [46] : [47] : ... [197] : NEXT ▶