1 장. 이 책의 사용설명서 1. 시작하면서 아 두이노가일반인들에게알려지기 전에는프로그램을한다고하면보통 PC 에서하는프로그램을 의미했습니다. PC 에서프로그램을만들때사용하는프로그래밍언어는많이있습니다. 지금은일반인도프로그램할수있도록쉬운프로그램언어들이많이나오고있습니다. 스크래치같이프로그램언어는레고블록을가져다끼우는식으로프로그램을할수도있습니다. 1 장. 이책의사용설명서 - 5
아두이노 프로그램 쉽게 배우기 불 과 얼마 전까지만 해도 PC 가 아닌 다른 장치를 프로그램한다는 것은 전문가들의 일로만 여겼습니다. 특수한 장비를 사용해서 "롬"이라고 불리는 장치에 프로그램을 억지로 집어넣었습니다. 프로그램 장비도 고가여서 일반인은 쉽게 구입하기 어려웠습니다. 아주 간단한 프로그램도 전문적인 장비를 가진 전문가들만 할 수 있었습니다. 하지만 아두이노는 이러한 흐름을 바꾸었습니다. 이제는 마이크로프로세서, 아두이노라는 것을 꽤 많은 사람들이 알고 있습니다. 그리고 꽤 많은 사람들이 그것을 다루어보고 싶어합니다. 여기서는 아두이노를 다루고 싶어하는 일반인을 대상으로 쉽게 프로그램할 수 있는 기초적인 프로그램공부를 하려고 합니다. 책은 문법적인 요소를 가능한 쉽게 설명하고 넘어갑니다. 간단한 예제를 통해 프로그램을 직접 하도록 했습니다. 이렇게 이 책의 끝까지 가면 적어도 스스로의 힘으로 아주 복잡하지 않은 아두이노프로그램이 가능할 것입니다. 6-1장. 이 책의 사용설명서
이책은프로그램실행속도를조금더빠르게하거나조금더램을적게사용하는것같은고급기술을가르치지않습니다. 그부분은초급을넘어서중급이상에서다루어야할내용입니다. 아두이노를처음사용하는것에너무많은제약과공부할거리를두지않으려고합니다. 우선사용하면서필요한부분이생기면더공부하면됩니다. 더공부하기위해우선꼭알아야만할것을이책은다루고있습니다. 더많은것을해보고싶다면이책을넘어서서더많은공부가필요합니다. 그건이책을모두마친다음에스스로판단하면됩니다. 내가원하는것을만들기에충분하다면굳이더깊은공부를하려고발버둥칠필요는없습니다. 하지만이정도로는도저히내가원하는것을만들수없다면그때는이책을넘어서심도있게프로그램을더깊이공부하셔야합니다. 건투를빕니다. [ 주저리 주저리 ] 초등 대안학교를 다니는 아이가 있습니다. 제가 어릴 때 그랬던 것처럼 제 아이도 새로운 것을 보면 호기심을 주체할 수 없어합니다. 혼자서 일본 전자 잡지에 나온 Z80 보드를 만들어보겠다며 이리 저리 뛰어 다녔던 중학교 시절이 기억나면서 초등 4 학년 아이에게 스크래치와 아두이노를 가르쳐 보았습니다. 이 책은 제 아이 같은 어린 초등학생 아이들도 공부할 수 있게 도움을 주려고 시작했습니다. 많은 것을 담기보다 가장 기초적인 것을 담으려고 했습니다. 하지만 역시 글을 쓰면서 많은 유혹을 받게 됩니다. 이것도 쓰고 싶고, 저것도 담고 싶어집니다. 하지만 아이를 가르치면서 제가 본 것은 아이는 배우기보다는 직접 자기의 손으로 하면서 더 많은 것을 알게 되는 것을 보았습니다. 가르치고 가르침 받은 것을 따라 하기보다는 궁금한 것을 질문하면서 오히려 더 빨리 지식을 습득하고 있었습니다. 1 장. 이책의사용설명서 - 7
2. 이 책의 사용법 아 두이노를처음다루는사람이라면굳이처음부터 끝까지차분히읽을필요는없습니다. 2 장의내용 설명이이해가되지않아도따라해보세요. 2장에서는아두이노 IDE 설치부터시작해서 LED 를깜박거리는가장간단한프로그램을실행시킵니다. 불 (LED) 을켜고끌수있다면불대신모터를연결할수도있고, 다양한장치를사용할수있습니다. [ 주저리 주저리 ] 초등 대안학교에서 다른 아이들도 스크래치와 아두이노를 그렇게 좋아했습니다. 대학생 이상, 전문가들의 것이라고만 알려졌던 MCU, 마이크로프로세서라는 말은 모르지만 그 아이들은 알아서 LED 를 점멸시키면서 놀았습니다. PC 에는 고양이가 뛰어다니고, 고양이가 발판을 밟으면 선풍기가 돌아가게 만들고 좋다고 낄낄댔습니다. 이 책은 초등학생들을 위한 글입니다. 이후로도 아이들을 가르치면서 필요한 내용과 일반인들을 위해 내용을 계속해서 공개하면서 무료로 배움을 가질 수 있도록 할 생각입니다. 이 책의 내용은 아두이노를 사용한 개인적 경험과 아두이노 홈페이지에 있는 다양한 예제들, 그리고 공개된 ebook인 arduino programming notebook 을 참고했습니다. 영어로 된 arduino programming notebook 은 그 자체로 좋은 교재입니다. 영어만 익숙하다면 아이들이 직접 보아도 좋을 교재입니다. 8-1 장. 이책의사용설명서
아두이노 보드에 LED 와 저항을 연결하여 불을 켜고 끌 수 있습니다. fritzing 이라는 프로그램으로 그림을 그렸습니다. 1 장. 이책의사용설명서 - 9
3. 아두이노와 프로그램 아 두이노는 8 비트마이크로프로세서를사용한초소형컴퓨터입니다. 이글을 쓰고있는 2016 년, 대부분의가정에서사용하는컴퓨터는 CPU 속도가 아무리느려도 1.6GHz 는됩니다. 아두이노우노의속도가 16Mhz 인것과비교해보면 100배이상차이가납니다 (1G = 1000M). 아두이노우노의램은 2k 입니다. 보통컴퓨터의램이 4G 에서 32G 인것과비교하면 2000 배이상차이가납니다 (1M = 1000k). 쉽게말해서컴퓨터와비교하면아두이노는매우느리고저장공간도매우작다는겁니다. PC Arduino 성능 100 성능 1 10-1 장. 이책의사용설명서
하지만이렇게느린것같아보여도아두이노는꽤많은일을처리할수있습니다. 사실아두이노가느리다는것은컴퓨터와비교할때느리다는것이지실제로우리가처리하려는일을처리할때느리다고는전혀생각되지않을겁니다. 16MHz 라는속도는 1초에 1천6백만개의기본명령을처리하는속도입니다. 처음 PC 가나왔을때의속도가 5MHz 가채되지않았습니다. 이와비교해서느리지않은속도입니다. 아두이노가느린게아니라지금 PC 의속도가너무빨라진거죠. 가로와세로가 43mm, 18mm 인 Arduino Pro mini 의사진입니다. 이보다더작은보드도있답니다. 그럼컴퓨터보다느린아두이노가왜필요할까요? 여러가지이유가있습니다. 크기가작아지고, 비용이저렴해지고, 작은전력으로사용할수있기때문입니다. 다양한전자제품들안에작은미니컴퓨터가들어갑니다. 전기밥통안에도들어가고세탁기안에도들어가고에어컨안에도들어갑니다. 밥통에들어가려면크기가작아야하고, 가격도저렴해야합니다. 5만원이면구입할수있는전기밥솥에가정용 PC 가 1 장. 이책의사용설명서 - 11
달려있다고생각해보세요. 얼마나크기도커지고가격이비싸질까요? 아무리커도 손바닥만한크기의미니컴퓨터가필요한이유입니다. 프로그램을짜서아두이노안에넣으며아두이노는작은컴퓨터가되어간단한동작을알아서하게됩니다. 이책은아두이노를사용하는가장기초적인내용을다루고있습니다. 아두이노를전혀모르거나기초가전혀없다면이책의내용을차근차근보시면서공부하시고그다음자신이원하는것을만들면서다른책을공부하시면됩니다. 영어로책을읽는것이가능하다면무료로공개된아두이노책들이꽤있습니다. 그책들을인터넷에서검색해서읽어보시기바랍니다. 보통구글에서 free ebook arduino 검색어로검색하면다읽을수없을만큼많은책들이나옵니다. 안타깝게도한글로된아두이노책은그렇게쉽게찾을수없습니다. 저작권이나공유정신도언제한번다뤄보고싶습니다. 하지만한국에서이런책을쓰거나프로그램을만드는사람들이경제적으로어려운것도현실입니다. 그래서더공유하지못하고, 빈곤한자료속에서계속해서자신의얼마되지않은정보도공개하지못하는악순환이반복됩니다. 이책하나로모든것을해결하지는못하겠지만앞으로일반인들을위한자료를계속해서공유하기위해노력하려고합니다. 12-1 장. 이책의사용설명서
4. 하드웨어와 소프트웨어 P C 에서프로그램을하는사람들은프로그램에만신경을쓰면됩니다. PC 에는키보드도있고, 마우스도있고, 모니터도있고, 프린터도있습니다. 프로그램을짜면서화면에 " 안녕 " 표시하고싶으며그냥 " 안녕 " 이라는 글씨가나오게프로그램을하면됩니다. LG 모니터를쓸때와삼성모니터를쓸때, 저렴한모니터를쓸때달라지지않습니다. 똑같은프로그램을짜서실행시키면어떤 모니터를사용하든지상관없이화면에 " 안녕 " 이라는글씨가나오게됩니다. 하지만아두이노는조금다릅니다. 아두이노에는키보드도없고, 마우스도없고, 모니터는더더욱없습니다. 모니터같은것을달려고알아보면 LCD 리는것이나옵니다. 그런데이것이한줄짜리, 두줄짜리, 네줄짜리가있습니다. 어떤것은그래픽LCD 라고하면서가로와세로가몇개의점이찍히는지그걸로구분합니다. 아두이노와 LCD 가연결되는방식은또다양합니다. 2줄짜리 I2C 라는방식으로연결되는것이있는가하면어떤것은 RS232 시리얼통신으로연결됩니다. 4개의데이터가동시에가는 4줄짜리연결방식도있고, 8개의데이터가동시에가는 8줄짜리연결방식 ( 패러럴방식 ) 도있습니다. 뭐가뭔지머리만아파집니다. 자우선은그런걱정은모두버립시다. 더하기와빼기도못하는아이가미분방정식을풀겠다고대학수학책을들여다보는것은칭찬할일이아닙니다. 뭘공부해야할지를모르고있을뿐입니다. 그때는덧셈과뺄셈을공부할수있는초등학교저학년용수학책과연습장과연필을사주어야합니다. PC에서프로그램을할때는신경쓸필요없던것들이아두이노프로그램을하려고할때는신경을쓰이게합니다. 그래서다른사람은잘된다고하는프로그램소스를그대로가져와서내아두이노에집어넣어서실행시켰는데잘안될때가자주있습니다. 1 장. 이책의사용설명서 - 13
가끔왜안되는지를묻는글을봅니다. " 친구가할때는됐는데왜안되죠?" 안되는이유는수백가지가될수도있습니다. 하나하나다른점을찾아보고다른점을찾아서고쳐가면서실행해보면언젠가는될겁니다. 아주재수가없으면고장난아두이노를붙잡고시간만버릴수도있고생각지도못하게전원어댑터가맞지않아서그럴수도있습니다. 가능하면아두이노와주변장치를 2개사두세요. 아래에나오는모든프로그램예제를실행시킬때반드시전원연결과나머지주변장치들과의연결을확인하시기바랍니다. 프로그램은잘실행이되지만 LED 가제대로깜박이지않는다든지할때가장큰이유는전원연결을안했거나배선을잘못연결한경우가아주많습니다. 가끔부품이상이원인일수도있지만그런경우는경험상 100 번중에 5번이내입니다. 자이제시작해봅시다. 14-1 장. 이책의사용설명서