|
|
- 기걍 뇌
- 6 years ago
- Views:
Transcription
1 누구나 따라하는 아두이노 프로그램 - 초딩도따라하는아두이노프로그램 C 언어를처음부터쉽게공부하고싶은사람을위한무료공개강의노트 저자 : 바람 (eventia@gmail.com)
2
3
4 RDUINO 바람 누구나 따라하는 아두이노 프로그램 - 초딩도 따라하는 아두이노 프로그램
5 저자약력 바람 ( 임성국 ) 대안초등학교를 다니는 아들 하람이와 하준이를 둔 두 아이 아빠중학교 때 Z80 마이컴 제작 시도, 실패 / 전자 장난감과 프라모델 조립이 취미 8051 보드 TY52 개발 / 3D 프린터, 3D 스캐너, 드론 취미 제작 마을과 온라인 카페에서 바람 또는 바람아저씨 로 활동 중카페 누구나 따라하는 아두이노 프로그램 운영자 cafe.naver.com/winduino 블로그 winduino.co.kr 운영 한양대학교 전자공학 석사 과정 한양대학교 전자공학 박사 수료 한양대, 산기대 등 대학 강의 경력 누구나따라하는아두이노프로그램 출간일 2016년 5월 10일지은이임성국출판사도서출판퍼플주소서울시종로구종로1가 1번지 c 임성국 2016 이책은 CCL(Creative Commons License) 을따르고있습니다. " 누구나따라하는아두이노프로그램 " 은크리에이티브커먼즈저작자표시 -동일조건변경허락 4.0 국제라이선스에따라이용할수있습니다. 이라이선스의범위이외의이용허락을얻기위해서는 을참조하십시오. 이책의저자는바람 ( 임성국 ) 입니다. 누구나복사, 제본, 게시하실수있습니다.
6 머리말 항상응원해준아내 오버 와아빠를좋아하는 첫째 하람 이, 아빠발소리를기억하는막내 하준 이를기억하며이책을씁니다. 대문을열고들어갈때웃어주는가족이있기에 이책이있습니다. FORGET-416-NOT 아직돌아오지못한 9 인의슬픔을함께하려 합니다. 우리에게조금더나은내일이란국민모두가 GDP 평균에서크게벗어나지않게되는날이라생각하고, 그내일이오기를기다리면서만들어갑니다. 이책은그인생의짬을내어잠시돌아가려는이들을위해그리고다른이들과는조금다르게살아보려는이들을생각하며썼습니다. Carpe diem
7 이책의목차 1 장. 이책의사용설명서 5 1. 시작하면서 5 2. 이책의사용법 8 3. 아두이노와프로그램 하드웨어와소프트웨어 13 2 장. 초등학생도따라할수있는아두이노따라잡기 아두이노 IDE 설치 LED 켜고끄는프로그램무조건따라하기 24 3 장. 아두이노프로그램을위한쉬운 C 언어문법 아두이노기본구조 주석 변수 연산 상수 참과거짓 HIGH / LOW if 조건문 for 반복문 while 반복문 72
8 11. 아두이노내부함수들 다양한수학함수들 디버깅 85 4 장. 아두이노프로그램기본구조 디지털출력 디지털입력 대전류출력 PWM 출력 아날로그값입력받기 92 5 장. 하드웨어연결 센서연결 출력연결 95 6 장. 프로그램방법 입력 연산 출력 100
9 Arduino
10 1 장. 이 책의 사용설명서 1. 시작하면서 아 두이노가일반인들에게알려지기 전에는프로그램을한다고하면보통 PC 에서하는프로그램을 의미했습니다. PC 에서프로그램을만들때사용하는프로그래밍언어는많이있습니다. 지금은일반인도프로그램할수있도록쉬운프로그램언어들이많이나오고있습니다. 스크래치같이프로그램언어는레고블록을가져다끼우는식으로프로그램을할수도있습니다. 1 장. 이책의사용설명서 - 5
11 아두이노 프로그램 쉽게 배우기 불 과 얼마 전까지만 해도 PC 가 아닌 다른 장치를 프로그램한다는 것은 전문가들의 일로만 여겼습니다. 특수한 장비를 사용해서 "롬"이라고 불리는 장치에 프로그램을 억지로 집어넣었습니다. 프로그램 장비도 고가여서 일반인은 쉽게 구입하기 어려웠습니다. 아주 간단한 프로그램도 전문적인 장비를 가진 전문가들만 할 수 있었습니다. 하지만 아두이노는 이러한 흐름을 바꾸었습니다. 이제는 마이크로프로세서, 아두이노라는 것을 꽤 많은 사람들이 알고 있습니다. 그리고 꽤 많은 사람들이 그것을 다루어보고 싶어합니다. 여기서는 아두이노를 다루고 싶어하는 일반인을 대상으로 쉽게 프로그램할 수 있는 기초적인 프로그램공부를 하려고 합니다. 책은 문법적인 요소를 가능한 쉽게 설명하고 넘어갑니다. 간단한 예제를 통해 프로그램을 직접 하도록 했습니다. 이렇게 이 책의 끝까지 가면 적어도 스스로의 힘으로 아주 복잡하지 않은 아두이노프로그램이 가능할 것입니다. 6-1장. 이 책의 사용설명서
12 이책은프로그램실행속도를조금더빠르게하거나조금더램을적게사용하는것같은고급기술을가르치지않습니다. 그부분은초급을넘어서중급이상에서다루어야할내용입니다. 아두이노를처음사용하는것에너무많은제약과공부할거리를두지않으려고합니다. 우선사용하면서필요한부분이생기면더공부하면됩니다. 더공부하기위해우선꼭알아야만할것을이책은다루고있습니다. 더많은것을해보고싶다면이책을넘어서서더많은공부가필요합니다. 그건이책을모두마친다음에스스로판단하면됩니다. 내가원하는것을만들기에충분하다면굳이더깊은공부를하려고발버둥칠필요는없습니다. 하지만이정도로는도저히내가원하는것을만들수없다면그때는이책을넘어서심도있게프로그램을더깊이공부하셔야합니다. 건투를빕니다. [ 주저리 주저리 ] 초등 대안학교를 다니는 아이가 있습니다. 제가 어릴 때 그랬던 것처럼 제 아이도 새로운 것을 보면 호기심을 주체할 수 없어합니다. 혼자서 일본 전자 잡지에 나온 Z80 보드를 만들어보겠다며 이리 저리 뛰어 다녔던 중학교 시절이 기억나면서 초등 4 학년 아이에게 스크래치와 아두이노를 가르쳐 보았습니다. 이 책은 제 아이 같은 어린 초등학생 아이들도 공부할 수 있게 도움을 주려고 시작했습니다. 많은 것을 담기보다 가장 기초적인 것을 담으려고 했습니다. 하지만 역시 글을 쓰면서 많은 유혹을 받게 됩니다. 이것도 쓰고 싶고, 저것도 담고 싶어집니다. 하지만 아이를 가르치면서 제가 본 것은 아이는 배우기보다는 직접 자기의 손으로 하면서 더 많은 것을 알게 되는 것을 보았습니다. 가르치고 가르침 받은 것을 따라 하기보다는 궁금한 것을 질문하면서 오히려 더 빨리 지식을 습득하고 있었습니다. 1 장. 이책의사용설명서 - 7
13 2. 이 책의 사용법 아 두이노를처음다루는사람이라면굳이처음부터 끝까지차분히읽을필요는없습니다. 2 장의내용 설명이이해가되지않아도따라해보세요. 2장에서는아두이노 IDE 설치부터시작해서 LED 를깜박거리는가장간단한프로그램을실행시킵니다. 불 (LED) 을켜고끌수있다면불대신모터를연결할수도있고, 다양한장치를사용할수있습니다. [ 주저리 주저리 ] 초등 대안학교에서 다른 아이들도 스크래치와 아두이노를 그렇게 좋아했습니다. 대학생 이상, 전문가들의 것이라고만 알려졌던 MCU, 마이크로프로세서라는 말은 모르지만 그 아이들은 알아서 LED 를 점멸시키면서 놀았습니다. PC 에는 고양이가 뛰어다니고, 고양이가 발판을 밟으면 선풍기가 돌아가게 만들고 좋다고 낄낄댔습니다. 이 책은 초등학생들을 위한 글입니다. 이후로도 아이들을 가르치면서 필요한 내용과 일반인들을 위해 내용을 계속해서 공개하면서 무료로 배움을 가질 수 있도록 할 생각입니다. 이 책의 내용은 아두이노를 사용한 개인적 경험과 아두이노 홈페이지에 있는 다양한 예제들, 그리고 공개된 ebook인 arduino programming notebook 을 참고했습니다. 영어로 된 arduino programming notebook 은 그 자체로 좋은 교재입니다. 영어만 익숙하다면 아이들이 직접 보아도 좋을 교재입니다. 8-1 장. 이책의사용설명서
14 아두이노보드에 LED 와저항을연결하여 불을켜고끌수있습니다. fritzing 이라는프로그램으로 그림을그렸습니다. 1 장. 이책의사용설명서 - 9
15 3. 아두이노와 프로그램 아 두이노는 8 비트마이크로프로세서를사용한초소형컴퓨터입니다. 이글을 쓰고있는 2016 년, 대부분의가정에서사용하는컴퓨터는 CPU 속도가 아무리느려도 1.6GHz 는됩니다. 아두이노우노의속도가 16Mhz 인것과비교해보면 100배이상차이가납니다 (1G = 1000M). 아두이노우노의램은 2k 입니다. 보통컴퓨터의램이 4G 에서 32G 인것과비교하면 2000 배이상차이가납니다 (1M = 1000k). 쉽게말해서컴퓨터와비교하면아두이노는매우느리고저장공간도매우작다는겁니다. PC Arduino 성능 100 성능 장. 이책의사용설명서
16 하지만이렇게느린것같아보여도아두이노는꽤많은일을처리할수있습니다. 사실아두이노가느리다는것은컴퓨터와비교할때느리다는것이지실제로우리가처리하려는일을처리할때느리다고는전혀생각되지않을겁니다. 16MHz 라는속도는 1초에 1천6백만개의기본명령을처리하는속도입니다. 처음 PC 가나왔을때의속도가 5MHz 가채되지않았습니다. 이와비교해서느리지않은속도입니다. 아두이노가느린게아니라지금 PC 의속도가너무빨라진거죠. 가로와세로가 43mm, 18mm 인 Arduino Pro mini 의사진입니다. 이보다더작은보드도있답니다. 그럼컴퓨터보다느린아두이노가왜필요할까요? 여러가지이유가있습니다. 크기가작아지고, 비용이저렴해지고, 작은전력으로사용할수있기때문입니다. 다양한전자제품들안에작은미니컴퓨터가들어갑니다. 전기밥통안에도들어가고세탁기안에도들어가고에어컨안에도들어갑니다. 밥통에들어가려면크기가작아야하고, 가격도저렴해야합니다. 5만원이면구입할수있는전기밥솥에가정용 PC 가 1 장. 이책의사용설명서 - 11
17 달려있다고생각해보세요. 얼마나크기도커지고가격이비싸질까요? 아무리커도 손바닥만한크기의미니컴퓨터가필요한이유입니다. 프로그램을짜서아두이노안에넣으며아두이노는작은컴퓨터가되어간단한동작을알아서하게됩니다. 이책은아두이노를사용하는가장기초적인내용을다루고있습니다. 아두이노를전혀모르거나기초가전혀없다면이책의내용을차근차근보시면서공부하시고그다음자신이원하는것을만들면서다른책을공부하시면됩니다. 영어로책을읽는것이가능하다면무료로공개된아두이노책들이꽤있습니다. 그책들을인터넷에서검색해서읽어보시기바랍니다. 보통구글에서 free ebook arduino 검색어로검색하면다읽을수없을만큼많은책들이나옵니다. 안타깝게도한글로된아두이노책은그렇게쉽게찾을수없습니다. 저작권이나공유정신도언제한번다뤄보고싶습니다. 하지만한국에서이런책을쓰거나프로그램을만드는사람들이경제적으로어려운것도현실입니다. 그래서더공유하지못하고, 빈곤한자료속에서계속해서자신의얼마되지않은정보도공개하지못하는악순환이반복됩니다. 이책하나로모든것을해결하지는못하겠지만앞으로일반인들을위한자료를계속해서공유하기위해노력하려고합니다 장. 이책의사용설명서
18 4. 하드웨어와 소프트웨어 P C 에서프로그램을하는사람들은프로그램에만신경을쓰면됩니다. PC 에는키보드도있고, 마우스도있고, 모니터도있고, 프린터도있습니다. 프로그램을짜면서화면에 " 안녕 " 표시하고싶으며그냥 " 안녕 " 이라는 글씨가나오게프로그램을하면됩니다. LG 모니터를쓸때와삼성모니터를쓸때, 저렴한모니터를쓸때달라지지않습니다. 똑같은프로그램을짜서실행시키면어떤 모니터를사용하든지상관없이화면에 " 안녕 " 이라는글씨가나오게됩니다. 하지만아두이노는조금다릅니다. 아두이노에는키보드도없고, 마우스도없고, 모니터는더더욱없습니다. 모니터같은것을달려고알아보면 LCD 리는것이나옵니다. 그런데이것이한줄짜리, 두줄짜리, 네줄짜리가있습니다. 어떤것은그래픽LCD 라고하면서가로와세로가몇개의점이찍히는지그걸로구분합니다. 아두이노와 LCD 가연결되는방식은또다양합니다. 2줄짜리 I2C 라는방식으로연결되는것이있는가하면어떤것은 RS232 시리얼통신으로연결됩니다. 4개의데이터가동시에가는 4줄짜리연결방식도있고, 8개의데이터가동시에가는 8줄짜리연결방식 ( 패러럴방식 ) 도있습니다. 뭐가뭔지머리만아파집니다. 자우선은그런걱정은모두버립시다. 더하기와빼기도못하는아이가미분방정식을풀겠다고대학수학책을들여다보는것은칭찬할일이아닙니다. 뭘공부해야할지를모르고있을뿐입니다. 그때는덧셈과뺄셈을공부할수있는초등학교저학년용수학책과연습장과연필을사주어야합니다. PC에서프로그램을할때는신경쓸필요없던것들이아두이노프로그램을하려고할때는신경을쓰이게합니다. 그래서다른사람은잘된다고하는프로그램소스를그대로가져와서내아두이노에집어넣어서실행시켰는데잘안될때가자주있습니다. 1 장. 이책의사용설명서 - 13
19 가끔왜안되는지를묻는글을봅니다. " 친구가할때는됐는데왜안되죠?" 안되는이유는수백가지가될수도있습니다. 하나하나다른점을찾아보고다른점을찾아서고쳐가면서실행해보면언젠가는될겁니다. 아주재수가없으면고장난아두이노를붙잡고시간만버릴수도있고생각지도못하게전원어댑터가맞지않아서그럴수도있습니다. 가능하면아두이노와주변장치를 2개사두세요. 아래에나오는모든프로그램예제를실행시킬때반드시전원연결과나머지주변장치들과의연결을확인하시기바랍니다. 프로그램은잘실행이되지만 LED 가제대로깜박이지않는다든지할때가장큰이유는전원연결을안했거나배선을잘못연결한경우가아주많습니다. 가끔부품이상이원인일수도있지만그런경우는경험상 100 번중에 5번이내입니다. 자이제시작해봅시다 장. 이책의사용설명서
20 2 장. 초등학생도 따라할 수 있는 아두이노 따라잡기 1. 아두이노 IDE 설치 아 두이노에프로그램하기위해서는프로그램툴을설치해야합니다. 아두이노 공식홈페이지로가서다운받은후설치를진행합니다. 이책에서는 윈도우환경에서아두이노를사용하는것을기준으로설명하겠습니다. MAC 이나 LINUX 사용자들은이미이책을볼필요가없을정도의중급사용자로판단됩니다. 그정도되면알아서아두이노 IDE 는충분히설치하실수있을겁니다. 저는 PC 윈도우7, 윈도우10 에서테스트하고, 라즈베리파이에서아두이노프로그램을해봤습니다. 2 장. 초등학생도따라할수있는아두이노따라잡기 - 15
21 STEP 1. 아두이노홈페이지에방문해서아두이노프로그램 (IDE) 을다운받습니다. 홈페이지주소 : 다운받을프로그램 : 저주소로접속하면다운받을프로그램의링크가다시나옵니다. 영어를읽을수있으면읽어서그대로따라하시면됩니다. 아니면아래에있는링크를따라갑시다. 홈페이지가수정될때마다그에맞추어아두이노 IDE 를다운받는방법을자세히설명해두겠습니다 장. 초등학생도따라할수있는아두이노따라잡기
22 STEP 2. 다운받은프로그램을 PC 에설치합니다. 다운받은파일은 arduino windows.exe 입니다. 더블클릭해서설치합니다. [I Agree] 버튼을클릭합니다. 설치가시작됩니다. 2 장. 초등학생도따라할수있는아두이노따라잡기 - 17
23 계속진행합니다. 모두선택해주세요. 아두이노 IDE 를설치할 장소를적으세요. 설치가진행되고있습니다 장. 초등학생도따라할수있는아두이노따라잡기
24 설치중 USB 드라이버 설치를묻습니다. 설치해두세요. 설치가끝나면 Close 를 선택해서끝냅니다. 설치가끝나면바탕화면에 Arduino 아이콘이설치됩니다. 2 장. 초등학생도따라할수있는아두이노따라잡기 - 19
25 STEP 3. 아두이노와 PC 를 USB 케이블로연결합니다. 위그림대로연결하면됩니다. 우선 PC 는윈도우 7 이상 ( 윈도우 8, 윈도우 10) 을 기준으로설명합니다. MAC 이나리눅스를사용하시는분도크게다르지않습니다만 별도의설명은여기서하지않겠습니다 장. 초등학생도따라할수있는아두이노따라잡기
26 STEP 4. 설치된아이콘을더블클릭하면 IDE 가실행됩니다. 아이콘을더블클릭하면아두이노 IDE 가실행됩니다. 2 장. 초등학생도따라할수있는아두이노따라잡기 - 21
27 STEP 5. IDE 내부에서보드와포트를설정합니다. [ 툴 ] [ 보드 ] 선택 22-2 장. 초등학생도따라할수있는아두이노따라잡기
28 [ 툴 ] [ 포트 ] 선택 [ 툴 ] - [ 보드 ] 를선택하고그중자신의아두이노를선택합니다. 아두이노우노를 가지고있다면다음과같이 Arduino/Genuino Uno 를선택합니다. [ 툴 ] - [ 포트 ] 를선택하고자신의아두이노가연결된포트를선택합니다. 일반적으로아두이노 IDE 를설치할때아두이노드라이버가설치됩니다. 그래서자동으로이부분에서아두이노포트가보여집니다. 단, 저가의아두이노호환품중 CH340 계열의 USB 칩을사용하는경우가있는데, 그경우 CH340 드라이버를설치해주어야합니다. 구글에서 ch340 driver 를검색한후찾아서설치하시기바랍니다. 자세한내용은홈페이지 을참고하시면됩니다. 2 장. 초등학생도따라할수있는아두이노따라잡기 - 23
29 2. LED 켜고 끄는 프로그램 무조건 따라하기 아 무것도몰라도괜찮습니다. 무조건따라해보세요. 무조건따라했더니 LED 가깜박이고있다면성공한겁니다. 왜그렇게되는지이해하는것과 프로그램하는방법을다음장에서배우면됩니다. 아두이노우노를준비하고 13번핀과 GND 사이에 LED 와저항을다음그림처럼연결해줍니다. LED 는극성이있습니다. 긴다리와짧은다리를구별해서짧은다리가 GND 에연결되게합니다. 혹시다리를잘라서길이가같아졌다면원통내부를잘보시면한쪽이두껍게되어있는모습을볼수있습니다. 두껍게된부분이 GND 에연결됩니다 장. 초등학생도따라할수있는아두이노따라잡기
30 아두이노 IDE 를실행시킨상태에서 [ 파일 ]-[ 예제 ]-[01.Basics]-[Blink] 를선택해서 클릭합니다. 아두이노우노를 PC 와 USB 케이블로연결합니다. [ 툴 ]-[ 보드 ]-[Arduino/Genuino Uno] 를클릭합니다. [ 툴 ]-[ 포트 ] 에서연결된아두이노 우노의포트를선택합니다. 업로드를위해오른쪽화살표가그려진 아이콘을클릭합니다. 이제아두이노우노보드를잘보면 1 초간격으로 LED 가깜박이는것을볼수 있습니다. 여기까지이상없이진행되었다면 PC 에문제가없고, 아두이노에도문제가없고, 프로그램컴파일도잘되고실행도문제가없는것이확인되었습니다. 이제부터아두이노 프로그램을본격적으로시작해보겠습니다. 2 장. 초등학생도따라할수있는아두이노따라잡기 - 25
31 3 장. 아두이노 프로그램을 위한 쉬운 C 언어 문법 1. 아두이노 기본 구조 아 두이노프로그램의기본구조는 2 개의몸통으로구분됩니다. 첫번째 몸통은실제일을하기전준비운동을하는단계입니다. setup() 이라고 하는이름이붙어있습니다. 두번째몸통은실제일을하는단계입니다. loop() 라는이름을붙여두었습니다. void setup() { // 여기에 [ 준비운동 ] 에필요한내용을넣습니다. void loop() { // 여기에 [ 실제할일 ] 을넣습니다 장. 아두이노프로그램을위한쉬운 C 언어문법
32 여기보면 setup() 과 loop() 의앞에 void 라는게붙어있습니다. 자세한설명은 함수를다룰때설명하겠습니다. 우선은 * 무조건 * 위의모습을기억해두세요. [ 준비운동 ] 과 [ 실제할일 ] 은나눠집니다. TIP 본래 C 언어는 main() 이라는함수가기본함수입니다. main() 이라는함수를실행시키는것이 C 언어입니다. main() 이라는구조는위에서아래로한번만실행시키고마치는방식입니다. 그래서그안에서 for 나 while, if 등을사용해서프로그램을구성합니다. 그런데마이크로프로세서 ( 이하 MCU) 는조금다른방식으로프로그램언어에접근했습니다. 이를테면 MCU는하드웨어를준비하는것은한번이면되지만한번시동이걸린다음부터는전원이꺼질때까지계속해야하는일을합니다. 그래서아두이노는조금특별하게 setup(), loop() 구조를사용합니다. main() 안에 setup() 을한번실행하고하고 loop() 을무한실행하게두었습니다. main() 함수와 setup(), loop() 의관계는다음과같습니다. 지금은이해가안될수도 있습니다. 그러면그냥넘어가세요. main() { setup(); while(1) { loop(); 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 27
33 a. setup() setup() 함수는아두이노가시작되는처음단계에서한번만실행됩니다. 다음처럼 어떤핀을출력으로사용한다면먼저그핀을출력으로쓴다고알려주는역할로 사용됩니다 void setup() { pinmode(13, OUTPUT); 여기서절대손대지말아야할곳이바로첫째줄과둘째줄, 그리고맨마지막줄입니다. 첫째줄은 setup() 함수를시작한다는뜻이고, 둘째줄의 { 기호는여기서부터시작이라는뜻입니다. 마지막줄에있는 를만날때까지모든것이 setup() 의내용이됩니다. pinmode(13, OUTPUT); pinmode() 함수는아두이노의핀을입력으로사용할것인지출력으로사용할것인지선택하게해줍니다. OUTPUT 은출력으로쓰겠다는뜻입니다. 이제부터아두이노의 13번핀은전류를흘려서바깥으로내보낼수있습니다. 이전류로꼬마전구 (LED) 를켜서전기가흐르는지, 흐르지않는지를볼수있습니다. 참고로 pinmode() 를통해서 13번핀을출력으로선택했다는것이 13번핀에전류가흐른다는뜻은아닙니다. 출력으로잡혔고, 그출력은 5V가될수도있고, 0V 가될수도 28-3 장. 아두이노프로그램을위한쉬운 C 언어문법
34 있습니다. 항상명령의끝은 ; 로마무리합니다. 즉, ; 를만나기전까지는프로그램은아직 끝이나지않았다고판단합니다. 처음 C 언어프로그램을하는사람들의잦은실수는 ; 를제대로사용하지않는것입니다. setup() 은처음부터끝까지한번만실행하고끝이납니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 29
35 b. loop() 준비운동으로 13 번핀을출력으로만들었습니다. 그러면 13 번핀에전기가흐르게 합시다. 13 번핀에꼬마전구 (LED) 를달고전기를흐르게해서불이들어오게합시다. 이것은 loop() 에서하면됩니다. void loop() { digitalwrite(13, HIGH); 위에서 setup() 을통해 13번핀을출력으로쓰겠다고정했으니 loop() 에서는그 13번핀을사용해서전기를흐르게하든지혹은흐르지않게하든지하면됩니다. 아두이노의 13번핀에꼬마전구 (LED) 의한쪽발을연결하고, 다른한쪽발은 0V에연결합니다. 전기는물과같아서높은곳에서낮은곳으로흐릅니다. 13번핀에서전기가나와서 LED의한쪽발로흘러들어가고, 그전기가다른쪽발로나온다음 0V 인 GND 로흘러들어갑니다. 마치산에있는물이아래로아래로흘러바다로들어가듯이전기는이리저리흘러결국은 GND 로흘러들어갑니다. 꼬마전구의한쪽발이 5V 에연결되어있고, 다른한쪽발이 0V 에연결되어있다면 30-3 장. 아두이노프로그램을위한쉬운 C 언어문법
36 5V에서 0V로전기가흐릅니다. 참고로 LED 라는꼬마전구는반도체입니다. LED 라는반도체는한쪽방향으로는전기가흐르는도체가되지만다른반대방향으로는부도체가됩니다. 다음그림과같이잘연결하세요. 반대로연결하면전기가흐르지않습니다. 전기가흐르지않으면빛도나지않겠지요. 참고로저항을하나연결해주면더좋습니다. 아두이노에서나오는전류가약해서 LED 가손상되지는않습니다만, 아두이노에직접연결하는경우가아니라면 LED 에너무많은전류가흐르게되면 LED 가고장이날수있습니다. 200 ohm 에서 500 ohm 사이의저항을하나연결해주면좋습니다. 13번핀과 LED 사이에연결하거나혹은 GND 와 LED 사이에연결하거나상관없습니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 31
37 LED 와저항 220Ω 을연결한상태를전기, 전자기호로나타낸손그림 digitalwrite() 함수는 () 안에 2개의내용이들어갑니다. 이걸프로그래머들은인자를받는다고표현합니다만, 굳이어렵게말할필요는없으니앞으로가능한쉽게풀어서설명하겠습니다. digitalwrite() 안에들어가는 2개의내용은첫째, 어떤핀을사용할까와둘째그핀에전기를흐르게할까말까입니다. 13번핀에전기를흐르게하겠다 (5V) 면 13 과 HIGH 를넣어주면됩니다. 반대로흐르지않게하겠다 (OV) 면 LOW 를넣어주면됩니다. HIGH 는 1 과같고, LOW 는 0 과같습니다. 일반적으로전자회로를다룰때 1은전기가흐르는것을의미하고, 0은전기가흐르지않는것을의미합니다. loop() 는처음부터끝까지실행한다음다시처음으로돌아갑니다. 이것을끝없이 반복합니다. 아두이노에전기가공급되는한계속합니다. 그래서위의 loop() 는그냥계속 13 번에연결된 LED 가불이켜진채로그대로 있습니다. 다음과같이바꿔봅시다 장. 아두이노프로그램을위한쉬운 C 언어문법
38 void loop() { digitalwrite(13, HIGH); digitalwrite(13, LOW); 이걸실행하면어떻게될까요? loop() 는처음부터끝까지실행한후다시처음으로돌아간다고했으니까 13번핀에전기를흘렀다 (HIGH) 가그다음에는전기가흐르지않았다 (LOW) 를계속반복하게됩니다. 그러면 LED 가깜박일까요? 그냥켜져있습니다. 이유는전기가흐르고, 흐르지않고를반복하는시간이너무짧기때문에눈에는그냥커져있는것으로보이는것입니다. 나중에는이걸이용해서 LED 의불빛의밝기를조절하는것도가능합니다. 그러면깜박이게하려면어떻게하면될까요? 켜지고꺼지는사이에충분히눈으로 깜박거리는것을알수있도록시간을넣으면됩니다. 아두이노에서는기본적으로 delay() 라는함수를지원해줍니다. delay() 라는함수는 () 안에 mili second 인 1/1000 초의배수를넣게됩니다. 즉, () 안에 1000 을넣으면 1초동안아무것도하지않고잠시멈춰있게됩니다. delay( 시간 ) 는주어진 시간 동안아무것도하지말고정지해있으라고명령하는것입니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 33
39 void loop() { digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); 어떻게될까요? 3번째줄에서켜지고, 4번째줄에서 1초기다리고, 5번째줄에서다시끕니다. 맨처음으로돌아갑니다. 깜박일것같지요? 하지만실제로실행해보면깜박이지않습니다. 계속켜진채로있습니다. 왜일까요? 잠시멈춰서생각해보세요. 이유는다음소스를보면서차이를비교하면서생각해보세요 void loop() { digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); delay(1000); 맨아래에 delay(1000); 을추가로넣었습니다. 위에서부터순서대로실행시켜보겠습니다 장. 아두이노프로그램을위한쉬운 C 언어문법
40 void loop() { digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); delay(1000); 시작부분 3 번째줄에서켭니다. 4 번째줄에서 1 초기다립니다. 5 번째줄에서끕니다. 6 번째줄에서 1 초기다립니다. 시작부분으로갑니다. 3번째줄에서켭니다. 4번째줄에서 1초기다립니다. 5번째줄에서끕니다. 6번째줄에서 1초기다립니다. 그리고다시 3번째줄, 프로그램의처음부분으로갑니다. 첫번째소스도이런식으로하나씩순서대로해석해볼까요? 항상프로그램은 위에서아래로하나씩하나씩순서대로실행됩니다 void loop() { digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); 시작부분켭니다. 1 초기다립니다. 끕니다. 시작부분으로갑니다. 여기서는켜고, 기다리고, 끄고, 켜고, 기다리고, 끄고... 이렇게반복됩니다. 그런데 잘보면끈다음바로켭니다. 즉, 꼬마전구를끄자마자바로다시켜버리는것이죠. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 35
41 이때걸리는시간은매우짧습니다. 너무짧아서꺼져있었다는것을사람의눈이인식할수없습니다. 이렇게되면꼬마전구는눈으로봐서는계속켜져있는것으로보입니다. 처음에원했던깜박이는동작을하기는하지만눈으로봐서는알수없습니다. 그래서맨아래에 delay(1000); 을추가로넣었습니다. 그래야끄고다시켜기전에 1초를기다리게해서꺼져있는상태를눈으로확인할수있게됩니다 void setup() { pinmode(13, OUTPUT); void loop() { digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); delay(1000); 36-3 장. 아두이노프로그램을위한쉬운 C 언어문법
42 c. 함수 초등학교교과서에나오는함수의모습은이렇습니다. 상자그림이있고상자의내부는볼수없습니다. 이상자는들어가는입구와나오는출구가있습니다. 들어가는입구로어떤수가들어가면나올때 2를곱해서나옵니다. 이상자를함수라고하고, 이함수상자의이름은 " 두배상자 " 입니다. 함수는기본적으로들어가는값이있고, 나오는값이있습니다. 그리고각각의함수는자신만의이름이있습니다. 여기까지가초등학교때배웠던함수의기본입니다. 아두이노프로그램에사용되는 C언어도함수라는기능이있습니다. 초등학교때배운함수와비슷합니다. 조금더추가되었습니다. 들어오고나가는값뿐만아니라함수는어떤특별한행동을할수도있습니다. 들어오는값이나나가는값은하나이거나혹은여러개일수있습니다. 어떤함수는들어오는값이나나가는값이없습니다. 이를테면 " 들어온동전만큼웃음소리가나는상자 " 와같습니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 37
43 위의상자는 2 개의동전을넣으면 2 번 " 하 ", " 하 " 소리가나는상자입니다. 웃음소리를듣고싶으면그만큼동전을넣으면됩니다. 입력없이출력만있는상자도만들수있습니다. 입력과는상관없이이상자를 흔들기만하면흔들때마다 10 원씩나오는저금통같은상자도만들수있습니다. 게다가입력도출력도없는상자도있습니다. 입력도출력도없지만이상자를 흔들면음악소리가나옵니다. 뮤직박스같은상자입니다. 즉, 함수는들어오는것이있고나가는것이있는것이기본모습입니다. 하지만위에서설명한것처럼들어오는것이없을수도있고, 나가는것이없을수도있습니다. 나가는것혹은들어오는것이없을때 void 라는단어를씁니다. 함수이름은영어로씁니다 장. 아두이노프로그램을위한쉬운 C 언어문법
44 [ 나가는값 ] [ 함수이름 ] ( 들어오는값들 ) { 처리를위한명령문들... 이런식으로함수는구성됩니다. 간단한함수를하나만들어서보겠습니다 void laught() { Serial.println("HA HA"); 입력으로들어오는것이없기때문에 laught() 에서 () 안은비어있습니다. 출력으로나가는것이없기때문에 void 로시작합니다. 함수안에서처리하는것은 HA HA 라는문장을화면에출력만합니다. 아두이노같은 C 언어를사용하는프로그램에서는이렇게만들어지는함수를 사용합니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 39
45 함수를실행시킬때는함수의이름을쓰면됩니다. 왼쪽에서 loop() 라는함수안에서 laught() 라는함수의이름을쓰면그함수를호출해서실행시킵니다 void setup() { Serial.begin(9600); void loop() { laught(); void laught(){ Serial.println("HA HA"); 프로그램의실행순서는다음과같습니다. 1 setup() 을실행합니다. 시리얼통신을하도록초기화합니다. 2 loop() 을실행시킵니다. 3 loop() 안에있는 laught() 를실행시킵니다. # laught() 안에있는 Serial.println( HA HA ) 을실행합니다. # laught() 함수끝까지실행한다음종료합니다. # laught() 가종료되면 loop() 함수 6번줄의끝으로갑니다. # loop() 가종료됩니다. 4 다시 loop() 가시작됩니다. : 3번으로갑니다. (# 표시된줄을계속반복합니다.) 40-3 장. 아두이노프로그램을위한쉬운 C 언어문법
46 아두이노 IDE 를실행합니다. 오른쪽위확대경모양아이콘을클릭합니다. 시리얼모니터창이열리고시리얼통신내용이보입니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 41
47 d. { 괄호의 의미 c 언어문법에서 { 괄호는문단을의미하게됩니다. " { " 바로다음이시작이 되고, " " 의바로앞이끝이됩니다. { 로둘러싸인문단은의미상하나로 처리됩니다. 함수의내용은시작하는 { 과끝나는 사이에들어갑니다 void laught() { Serial.println("HA HA"); 42-3 장. 아두이노프로그램을위한쉬운 C 언어문법
48 e. 세미콜론 ; 세미콜론 ; 은반드시명령의끝에붙어야만합니다. 한줄에명령을하나만써야한다는제약은없습니다. 여러명령을한줄에써도되지만, 각명령의끝에 ; 를붙여야합니다. 초보자뿐만아니라어느정도프로그램을많이한사람들도 ; 를빠트리는실수를합니다 void loop() { digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); delay(1000); void loop() { digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); delay(1000); 위의왼쪽과오른쪽은완벽하게같습니다. 때로는읽기에편하도록하기위해서 오른쪽처럼쓰기도합니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 43
49 2. 주석 a. 여러줄 주석 프로그램을하다보면설명을넣고싶은곳이있습니다. 설명은나중에다시이 프로그램을살펴볼때예전에했던일을왜이렇게했는지기록하는것입니다. /* 이렇게시작하고 */ 이렇게끝납니다. /* 과 */ 사이에있는모든것은눈에는 보이지만프로그램에서는없는것으로간주합니다. 즉, 주석은프로그램과아무런상관이없습니다. 오직주석은나중에소스를보는사람을위한설명입니다. 한달후에혹은일년후에내가만들었던소스를다시수정하거나비슷한다른프로그램을만들려고할때내가만들었지만생소한기분을느낍니다. 그럴때적어둔설명 ( 주석 ) 을보면서내가이부분을왜이렇게만들었는지다시알게해주는기능입니다 /* */ 이곳은설명을위한주석입니다. 이곳에쓰는모든것은볼수는있지만 프로그램과는무관합니다 장. 아두이노프로그램을위한쉬운 C 언어문법
50 b. 한줄 주석 간단하게한줄짜리설명을붙이고싶을때설명의앞에 // 를넣으면 // 이후에 줄의끝까지나오는모든것은주석이됩니다. /* */ 과는달리줄의끝부분이나혹은 한줄로설명할수있는간단한주석을달때사용됩니다. 1 // 이줄은한줄짜리설명입니다. /* LED_BLINK.ino 13 번핀에달린 LED 를 1 초간격으로점멸하는프로그램 digitalwrite() 와 delay() 함수를사용함 */ void loop() { digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); delay(1000); // 13번핀을 HIGH 상태로만든다 // 1초간딜레이를준다 // 13번핀을 LOW 상태로만든다 // 1초간딜레이를준다 void loop() { digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); delay(1000); 위의주석달린소스와아래에주석을제거한소스는아두이노에게는완벽하게동일하다. 단, 위의소스처럼주석을적절히적어놓으면나중에시간이지난뒤다시프로그램을수정하거나소스를사용할때도움이됩니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 45
51 3. 변수 변수라는것은 " 변할수있는수 " 로어떤값을저장할수있는공간을의미합니다. 이를테면빈박스와같습니다. 이박스에는사과도담을수있고, 배도담을수있습니다. 어떤박스는크기가작아서계란하나만담을수있습니다. 또어떤박스는플라스틱밀폐용기로되어있어서물을담을수있습니다. 변수는컴퓨터메모리에차지하는공간을의미합니다. 거기에작은숫자만저장할 수있는변수도있고, 큰숫자를저장할수있는변수도있습니다. 변수를쓰기위해서는먼저변수를쓰겠다고알려야합니다. 이걸 ' 선언 ' 이라고 하는데, 어려운용어를기억할필요는없습니다. int value; 이렇게 value 라는변수를쓰겠다고알리고만드는것이사용하는것보다먼저 있어야합니다 장. 아두이노프로그램을위한쉬운 C 언어문법
52 int value; value = 13; 이렇게만들어진변수 value 에원하는값 13 을넣었습니다. 이제부터 value 라는 상자를들여다보면거기엔 13 이라는값이담겨있게됩니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 47
53 a. 변수 선언 변수선언은변수를쓰기전에반드시먼저해야합니다. int value; 처럼쓰기전에변수를만들어야합니다. int value = 120; 처럼변수를만들면서변수의값을넣어주어도됩니다. 변수의종류는 byte, char, int, long, float 외에도몇가지가더있습니다. char 은문자를다룰때, int 는정수형숫자를다룰때, long 은정수형숫자로큰수를다룰때, byte 는작은숫자로양수만다룰때, float 은실수형숫자를다룰때사용합니다. 변수의사용법은이후에다루도록하겠습니다 장. 아두이노프로그램을위한쉬운 C 언어문법
54 b. 전역 변수, 지역 변수 위에서선언된변수는어디에있느냐에따라전역변수또는지역변수로다시 분류됩니다. 함수안에서만들어졌으며지역변수라고불리고그함수안에서만사용이 됩니다 void func() { int i = 10; Serial.println(i); 그리고, 함수가끝나면지역변수는사라집니다. 위에서 func() 함수밖에서 i 를 사용하면에러가나옵니다. 반면, 전역변수는함수밖에서만들어집니다 int i = 10; void func() { Serial.println(i); 함수가끝나도함수밖에서만들어진전역변수는계속남아있습니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 49
55 지역변수는함수안에서만사용되므로같은이름이다른함수안에서새롭게 만들어지고, 사용될수있습니다 void func_i() { int i = 10; Serial.println(i); void func_j() { int i = 20; Serial.println(i); 전역변수는사용에주의해야합니다. 전역변수와지역변수가사용되는곳을알아봅시다 int globalvalue; void setup(){ Serial.begin(9600); void loop(){ int b; for (int a=0; a<10; a++) { Serial.println(a); 50-3 장. 아두이노프로그램을위한쉬운 C 언어문법
56 전역변수인 globalvalue 는어디서나사용할수있습니다. 지역변수인 a 는 for 문안에서만사용할수있습니다. 역시또다른지역변수인 b 는 loop() 안에서만 사용할수있습니다. void loop(){ // 1 int b=10; // 2 for (int a=0; a<10; a++) { // 3 Serial.print("a="); // 4 Serial.println(a); // 5 // 6 Serial.print("a="); // 7 Serial.print(a); // 8 Serial.print(" b="); // 9 Serial.print(b); // 10 // 11 위의예제를실행하면 8번째줄에서에러가납니다. 변수 a 는 3번째줄, for 문에포함되어있습니다. for 문의 { 문단안에서만변수 a 는사용할수있습니다. 즉, 3번줄에서 6번줄을벗어나서는 a를쓸수없습니다. 억지로사용하려고하면에러를발생합니다. 여러함수안에서변수의값을읽거나쓰려면전역변수를사용하면됩니다. 물론그 방법말고도다른좋은방법이있습니다만여기서는전역변수를사용하는방법을 알려드립니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 51
57 int globalvalue; // 1 void setup(){ // 2 Serial.begin(9600); // 3 globalvalue = 10; // 4 // 5 void loop(){ // 6 int b=10; // 7 globalvalue++; // 8 Serial.print("globalvalue="); // 9 Serial.print(globalvalue); // 10 // 11 함수외부에서선언된전역변수 globalvalue 는어떤함수안에서도사용이가능합니 다. globalvalue 를 setup() 함수에서초기값을준뒤, loop() 함수에서반복될때마다 1 씩증가시켜보았습니다. 이처럼전역변수는여러함수에서읽고쓸수있습니다 장. 아두이노프로그램을위한쉬운 C 언어문법
58 c. 변수의 종류 byte 변수는 0 부터 255 까지의정수숫자를저장할수있습니다. byte byte 변수는 1 개의바이트를사용합니다. 1 바이트는 8 개의비트의 모음입니다. 일반적으로아두이노같은마이크로프로세서는 8 비트, 즉 1바이트를기본단위로합니다. 1비트는전기가흐르거나흐르지않는하나의정보를보관할수있는장소입니다. 1 비트는 0 또는 1을보관할수있는공간입니다. 정보가보관된곳을 1로표시하고비어있는것을 0으로표시하면다음과같습니다. 이진수 십진수 계산 = = = = = = = = 개의방, 비트를가지고셀수있는수는 0 부터 255 까지총 256 개가됩니다. byte 변수를만들때다음과같이씁니다. byte sample = 125; 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 53
59 byte 변수는최대 255 까지담을수있습니다. 여기에 255 가넘는수가들어오면 다시 0 부터시작됩니다. byte sample = 255; sample = sample + 1; // // // 이되고, 아래 8 개의비트만변수에저장 // sample 변수에 이저장 byte sample = 0; while(1) { sample++; Serial.println(sample); 위내용을실행시키면 0 부터 255 까지화면에나오고다시 0 부터재시작됩니다. sample 라는변수가 byte 변수여서 8 비트의저장공간을가지고있기때문에그이상의 비트는버려지게됩니다 장. 아두이노프로그램을위한쉬운 C 언어문법
60 char 변수는키보드에나와있는문자나숫자하나를저장할수 char 있습니다. 단, 한글을저장할수는없습니다. 문자나숫자를저장할 때 ' ' 를사용합니다. 8 비트, 한바이트짜리저장공간을 사용합니다. 숫자저장할때는 127 에서 -128 까지저장할수 있습니다. byte 와 char 는동일한저장공간크기인 1바이트를가집니다. 단 byte 는부호를가지지않아서 0부터 255까지사용하지만 char 은첫번째비트를부호로사용하기때문에 7비트로표시가능한 0부터 127까지사용합니다. 그리고첫비트가 1일때는음수를표시합니다. -1부터 128 까지가능합니다. void setup(){ Serial.begin(9600); void loop(){ char sample = 'A'; Serial.println(sample); char sample = 'A'; char sample = 65; 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 55
61 이진수 십진수 계산 XXXX XXXX -128~127 X는 0 또는 1 = X X X X X X X X 2 0 이진수 십진수 이진수 십진수 장. 아두이노프로그램을위한쉬운 C 언어문법
62 TIP [2 진수와음수를나타내기위한 2 의보수 ] 전 있습니다. 기의흐름, 즉비트의 0 과 1 로만숫자를나타낼수있는이진수로디지털에서숫자를 처리합니다. 2 진수는각자리수마다다음과같은방식으로수를셉니다. 8 비트이진수는 부터 까지입니다. 이진수는다음과같이 10 진수로바꿀수 이진수 : XXXX XXXX = X X X X X X X X 2 0 (X 는 0 또는 1) 일반적으로음수는숫자의앞에 - 표시를붙입니다. 하지만디지털이진수에서음수를표현하는방법은조금특별합니다. 음수를표시하기위해 2의보수 라는것을사용합니다. 1 과 1을더하면 0이됩니다. 이것을이용해서 1과더해서 0이되는수를찾으면됩니다. 1은아두이노에서이진수로표현할때 B 이됩니다. 이진수 에서계속증가하면최종적으로 까지됩니다 에서 1이증가하면 (1) 이됩니다. 여기서 8비트를넘어선 9비트째인 1은버리고, 아래쪽 8개의비트만남게되어 즉, 0이됩니다. 다시말해서 B 에 1을더하면 0이됩니다. 그래서 1의대한음수표현인 1은디지털이진수에서 이됩니다 과 을더하면 즉, 0 이됩니다. -1 은 입니다 과 을더하면 즉, 0 이됩니다. -2 는 입니다 과 을더하면 즉, 0 이됩니다. -15 는 입니다. 2 의보수를이용한음수표현은이진수에서 1 과 0 을서로바꾼다음 1 을더하면됩니다. -1을표현해보겠습니다. 1은 입니다. 여기서 0과 1을바꾸면 이됩니다. 여기에 1을더하면최종적으로 이됩니다. -12를표현해보겠습니다. 12의이진수는 입니다. 0과 1을바꾸면 이됩니다. 여기에 1을더해서만들어진 이 12입니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 57
63 int 변수는 16 비트, 2 바이트를사용합니다. int 변수가표현할수 int 있는숫자는 -32,768 부터 32,765 까지의정수숫자입니다. 일반적으로아두이노에서정수숫자를사용할때가장많이 사용하는변수입니다. int sample = 10000; long 변수는 4 바이트를사용합니다. lng 변수로표현할수있는 long 정수는 -2,147,483,648 부터 2,147,483,647 까지의정수입니다. int 로표현할수있는숫자보다더큰숫자를사용할때 long 변수를사용합니다. int sample = ; int sample = * 9876; float 변수는 E+38 부터 E+38 까지의실수 float 숫자를저장합니다. float 변수는 4 바이트를사용합니다. 단아두이노에서실수연산은속도가많이느려지게됩니다. 그리고실수연산은정확도가많이떨어집니다. 가능하면 float 같은 58-3 장. 아두이노프로그램을위한쉬운 C 언어문법
64 실수변수를사용하지않는것이좋습니다. float 변수는총 32비트중부호 1비트, 지수부 8비트, 가수부 23비트를사용합니다. 그래서십진수로따지면 7자리숫자가유효숫자가됩니다. float 변수는 ~ 사이의숫자를표현할수있습니다. float sample = ; 엄밀하게는변수는아니지만아두이노에서 String 은마치 String 문자열을저장하고읽는일을하는변수처럼사용됩니다. void setup(){ Serial.begin(9600); void loop(){ String sample = "Remember 0416"; Serial.print(sample); 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 59
65 4. 연산 a. "=" 의 의미 수학에서 "=" 은보통좌변과우변이같다는것을의미합니다. 하지만프로그램에서 "=" 는오른쪽에있는값을왼쪽으로넣으라는명령입니다. x = x + 10; x 에 10 을더한다음그값을 x 에저장합니다. 그러면 x 라는저장공간, 변수는 처음값보다 10 이커진값으로바뀝니다. 이것을더간단하게이렇게쓸수있습니다. x += 10; 자주사용하는 1 을더하는것과 1 을빼는것은 ++, -- 를사용합니다. x = x + 1; x++; 위의두줄은같은의미입니다 장. 아두이노프로그램을위한쉬운 C 언어문법
66 b. 기본 수학연산 +, -, *, /, % 이렇게다섯가지기본수학연산이가능합니다. + : 더하기 - : 빼기 * : 곱하기 / : 나누기 % : 나머지 위의 = 과결합하여다음과같이사용할수있습니다. result = result + a; result = result - a; result = result * a; result = result / a; result = result % a; result += a; result -= a; result *= a; result /= a; result %= a; 변수 result 에 a 를더해서저장합니다변수 result 에 a 를빼서저장합니다변수 result 에 a 를곱해서저장합니다변수 result 를 a 로나누고저장합니다변수 result 를 a 로나눈나머지를저장합니다 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 61
67 c. 비교 크거나작거나같거나를가지고참과거짓을판별한다. x == y // x 가 y 와같다. 만약 x 와 y 가같은값이라면이결과는 " 진실 " 이되고, x 와 y 가다른값이라면 이결과는 " 거짓 " 이된다. 이외에다음과같은비교가가능하다. x > y // x 가 y 보다크다. x >= y // x 가 y 보다크거나같다. x < y // x 가 y 보다작다. x <= y // x 가 y 보다작거나같다. x!= y // x 와 y 가다르다 장. 아두이노프로그램을위한쉬운 C 언어문법
68 d. 논리 비교와함께자주사용된다. if ( (x > 0) && (x < 10) ) // x 가 0 보다크다그리고 x 가 10 보다작다 && : 논리곱, 오른쪽과왼쪽이모두참일때결과는참이된다. : 논리합, 오른쪽또는왼쪽, 둘중하나라도참이면결과는참이다.! : 부정, 참이면거짓이, 거짓이면참이된다. ( x>0 && x<5 ) // x 가 0 와 5 사이일때참 ( x>10 x <5 ) // x 가 10 보다크거나 5 보다작을때참 (!x ) // x 가참이면거짓이, 거짓이면참이된다. 비교 와 논리 는보통조건문과함께사용된다. if 또는 for 문등과함께 사용된다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 63
69 5. 상수 변수와달리상수는항상그대로있는수를말합니다. 보통변해서는안돼는수를 미리지정해두는식으로사용됩니다. #define SIZE 1024 #define 문을사용, 프로그램의가장앞부분에서사용할수있습니다. 보통은가장 많이사용되는방법입니다. 또는 const 변수를사용할수있습니다. 기존의변수앞에 const 를추가하면그 변수는읽을수는있지만쓸수없는상수가됩니다. const int SIZE 1024; 이렇게 const 를붙여서만들수도있습니다. 보통상수는변수와다르다는것을나타내기위해이름을대문자로사용합니다. SIZE 라는변수는상수 1024를저장합니다. 그리고 SIZE 는읽을수만있지쓸수는없습니다. 즉, 값이 1024 는변경되지않는값입니다. 변수대신상수를이용해서프로그램을하는이유는실수로상수를다른값으로변경시키는것을방지하기위해서입니다. 함께프로그램을하는다른사람일수도있고, 혹은어떤함수에서변수를이용하면서값을변경시킬수도있습니다. 이러한실수를미연에방지하기위해변수대신상수를사용합니다 장. 아두이노프로그램을위한쉬운 C 언어문법
70 6. 참과 거짓 (a == 12) 는 a 의값을읽어와서그것이 12 인지를비교해봅니다. 12 라면참을 12 가아니라면거짓을보냅니다. 참은 1 이되고, 거짓은 0 이됩니다. if ( a == 12 ) { 할일 ; a 가 12 일때 (a==12) 는참 (1) 이되고, 그래서 " 할일 " 을하게됩니다. if ( a == 12 ) { Serial.println( Great! A=12 ); 프로그램안에위코드를넣어주면 a 값이 12 가될때화면에 Great! A=12 라는문구를보여줍니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 65
71 7. HIGH / LOW 아두이노에서 HIGH 는 1 을의미하고이는 ON 또는 5V 나 3.3V 의전원이들어가는것을의미합니다. 반대로 LOW 는 0 을의미하고, OFF 나 0V 즉, GND 에연결되었다는것을뜻합니다. 즉, 1 대신 HIGH를사용하고 0 대신 LOW를사용할수있습니다. digitalwrite(13, HIGH); // 13 번핀에서 5V( 또는 3.3V) 를내보냅니다. digitalwrite(13, LOW); // 13 번핀이 GND(0V) 에연결됩니다. digitalwrite(13, 1); // 13 번핀에서 5V( 또는 3.3V) 를내보냅니다. digitalwrite(13, 0); // 13 번핀이 GND(0V) 에연결됩니다. 위의예에서보듯이 HIGH 와 1 은동일하고 LOW 와 0 도동일합니다. 1 과 0 대신 HIGH 와 LOW 를써서이유는사람이보기쉽게알아볼수있도록합니다 장. 아두이노프로그램을위한쉬운 C 언어문법
72 8. if 조건문 a. if 문 if 조건문은조건이참일때만실행합니다. if (a==13) // 조건부분 { // 조건이참이면이부분을실행합니다. int condition =0; // 전역변수를만들고값을 0으로만든다. void setup(){ Serial.begin(9600); void loop(){ condition ++; // 전역변수의값을 1 증가 if ((condition % 5)==0) { // 전역변수를 5로나눈나머지가 0일때만아래조건실행 Serial.print("condition = "); Serial.println(condition); // 값을화면에프린트 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 67
73 b. if, else 문 if 문과함께조건이거짓일때만실행되는 else 도있습니다. if ( 조건 ) { // 조건이참일때실행 else { // 조건이거짓일때실행 나머지연산자를사용해서 13 번 LED 를켜고끄는프로그램을예로들어보겠습니다 장. 아두이노프로그램을위한쉬운 C 언어문법
74 1int condition =0; 2 void setup(){ 3 Serial.begin(9600); 4 pinmode(13, OUTPUT); void loop(){ condition ++; if ((condition % 10) >4) { digitalwrite(13,high); Serial.println("LED ON"); delay(100); else { digitalwrite(13,low); Serial.println("LED OFF"); delay(100); if 와 else if 를사용해서 [ 만약 ~ 이면 ]... [ 그렇지않고만약 ~ 이면 ]... 의구문을 만들수있습니다 if (inputvalue <=500) { 첫번째조건을만족할때할일들 ; else if (inputvalue > 1000) { 두번째조건을만족할때할일들 ; else { 첫번째, 두번째조건을모두만족시키지못할때할일들 ; 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 69
75 9. for 반복문 다음과같은구문으로일정횟수만큼명령을반복합니다. for ( 초기화 ; 조건 ; 증감표현 ) { 반복할일들 ; 초기화는변수를만들어서초기화시킬수도있고, 외부에서만들어진변수를사용할수도있습니다. 조건은변수를사용해서조건에맞을때만아래블록안에있는내용을실행합니다. 증감표현은블록안의내용을끝까지실행시킨다음실행됩니다. 실행순서는다음과같습니다. 초기화 조건 참이면 A 로, 거짓이면 B 로 A : 반복할일들수행 B : 블럭외부로나감 증감표현 조건 으로돌아감 70-3 장. 아두이노프로그램을위한쉬운 C 언어문법
76 아두이노 13 번핀에에붙어있는 LED 를 20 번반복해서깜박이는프로그램을 짜보면다음과같습니다 for (int i = 0; i<20 ; i++) { digitalwrite(13, HIGH); delay(500); digitalwrite(13, LOW); delay(500); 위의 for 문을포함한아두이노전체코드는다음과같습니다 void setup(){ pinmode(13, OUTPUT); for (int i =0; i<20 ; i++) { digitalwrite(13, HIGH); delay(500); digitalwrite(13, LOW); delay(500); void loop(){ loop() 을쓰지않고 setup() 에넣어 20 번만반복하게프로그램했습니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 71
77 10. while 반복문 a. while 문 while 반복문은조건이만족되는한무한히반복됩니다. while ( i > 3 ) { 명령문 1; 명령문 2; 명령문 3; 변수 i 가 3 보다크면 { 내부의명령문 1,2,3 이반복적으로실행됩니다. 명령문 3 이실행된다음 ( i > 3 ) 의조건을만족하는지판단한후만족하면다시 명령문 1 부터실행됩니다. ( i > 3 ) 이거짓이라면 while 문블록을벗어납니다 장. 아두이노프로그램을위한쉬운 C 언어문법
78 b. do, while 문 while ( 조건 ) { 명령문 ; 위와같은 while 문은조건이거짓이면블럭내부의명령문은한번도실행되지 않습니다. 명령문을최소한한번실행시키기위해서조건을뒤로보내는 do... while ( 조건 ) 이있습니다. do { 명령문 ; while( 조건 ); 아날로그센서의값을읽은뒤 x 가 100 보다작으면계속해서센서를읽게하는 예제는다음과같습니다 do { x = readsensors(); // 센서값을읽어서 x 에저장한다. delay(50); // 50ms 동안기다린다. while(x<100); // x 가 100 보다작으면반복한다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 73
79 11. 아두이노 내부 함수들 a. INPUT / OUTPUT 아두이노는핀을통해외부에서아두이노안으로신호가들어올수도있고, 아두이노에서바깥으로신호가나갈수도있습니다. 들어오도록할때 INPUT 을쓰고, 나가도록할때 OUTPUT 을씁니다. INPUT 과 OUTPUT 은 pinmode() 라는함수에서각핀의번호와연결되어서입력으로사용할지, 출력으로사용할지를결정할때사용됩니다. pinmode(13, OUTPUT); // 13 번핀을 OUTPUT ( 출력 ) 으로사용합니다 장. 아두이노프로그램을위한쉬운 C 언어문법
80 b. pinmode(pin, mode) void setup() 안에서특정핀의입력과출력을지정하기위해사용됩니다. pinmode(13, OUTPUT); // 13 번핀을출력으로지정한다. pinmode(12, INPUT); // 12 번핀을입력으로지정한다. pinmode(11, INPUT_PULLUP); // 11 번핀을입력으로지정한다. 풀업된다. 여기서풀업, INPUT_PULLUP 의의미는내부적으로 20kΩ 저항이핀과 VCC (5V) 사이에들어간다는것을의미합니다. OUTPUT 으로지정해서출력으로만들었을때핀은최대 40mA 까지전류를흘려보낼수있습니다. 이전류는 LED 를밝게하기에는충분하지만릴레이나모터등을작동시키기에는부족합니다. 외부장치와출력핀이바로연결된때과도한전류가흐르게되면아두이노의 ATMEGA MCU가손상될수있습니다. OUTPUT 으로지정된핀에는일반적으로 360 Ω 에서 1 kω 정도의저항을직렬로연결해주는것이좋습니다. V = I x R 5(V) = I(A) x 360(Ω) I = 5/360 = 14mA 전압, 전류, 저항의관계를 오옴의 법칙 이라고합니다. 오옴의법칙에서전압은전류와저항의곱으로나타납니다. 5V 의전압이걸린곳에 360Ω 저항을달면전류는왼쪽의공식에따라 0.014A 즉, 14mA 가나옵니다. 이정도면 LED 의불을켜서전기가흐르는지, 신호가들어오는지확인하기에는적당합니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 75
81 c. digitalread( 핀 ) 아두이노입력으로설정된핀의디지털값을읽습니다. 일반적으로핀에걸린전압이 VCC 이면 1 을, GND 이면 0 을반환합니다. value = digitalread(12); // 12 번핀을읽어서 value 변수에저장 단, digitalread() 를쓰기전에 pinmode() 를사용해서핀의출력을설정해 두어야합니다. pinmode(12, INPUT); value = digitalread(12); // 12 번핀을읽어서 value 변수에저장 // value 에는 0 또는 1 이저장됨 76-3 장. 아두이노프로그램을위한쉬운 C 언어문법
82 d. digitalwrite( 핀, 값 ) 아두이노출력핀에정해진값을출력합니다. 값은 0 과 1 둘중의하나입니다. digitalwrite(11, 1); // 11 번핀에 1(+5V) 을출력한다. // 이것을다음으로쓸수있다. digitalwrite(11, HIGH); // HIGH 는 1 과같고, LOW 는 0 과같다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 77
83 e. analogread( 핀 ) 아날로그값을읽습니다. value = analogread(a0); // 핀 A0 에연결된값을읽어온다. // value 에저장되는값은최소 0 에서최대 1023 사이정수이다. 아두이노에서아날로그값을읽는것은 0V 에서 5V 사이의어떤전압값을읽는것입니다. 아두이노는 10 개의비트로값을분해합니다. 10개의비트는 2 의 10 승을의미하고이는총 1024 가됩니다. 즉, 최소값은 0 이고최대값은 1023 이됩니다. 아두이노아날로그입력을받을때주의할것은아날로그입력핀에들어오는전압이 0V에서 5V 사이가되어야합니다. 이값을벗어난전압이들어올경우아두이노내부회로가망가질수있습니다 = = = = = = 1024 ADC 라고불리는아날로그 -디지탈변환장치는변환시킬수있는정도와시간에따라분류됩니다. 변환시킬수있는정도를보통비트 (bits) 로표시하고, 변환에걸리는시간을 Hz 로표시합니다. 아두이노 ADC 샘플링시간은다른작업에걸리는시간을모두최소화할때 9kHz 정도가됩니다. 1초에 9,000번까지가능합니다. ADC 10 비트는총 1024 ( 1000) 단계로입력된아날로그값을변환합니다. 이경우 V( 0.005V) 즉, 4.89mV 단계로입력되어지는전압값을구별할수있습니다 장. 아두이노프로그램을위한쉬운 C 언어문법
84 TIP ADC 를거친후아두이노에서받는값 실제아날로그값 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 79
85 TIP 실 , 등셀수없는많은값이존재합니다. 그러한 제아날로그값은 0 과 1 사이를무한히나눌 수있습니다. 0V 와 1V 사이는무수히많은 값들이있습니다. 0.1, 0.2, , 값을모두읽어들일수있으면좋겠지요. 하지만실제로측정할수있는방법이없습니다. 읽을수있는가능한범위가있을뿐입니다. 아두이노에있는 ATMEL 칩은 10 비트단위의정밀도를가지고아날로그값을디지털로변환합니다. 즉, 위에있는그래프처럼아날로그는 1V 와 1.005V 사이에무한한연속적인값을가집니다. 하지만아두이노에서는 1V 와 1.005V 사이에는다른값이없습니다. 입력되는아날로그값이 1V 와 1.005V 사이라면아두이노에서인식되는값은 1V 가됩니다. 그다음단계인 1.005V 와 1.010V 사이의아날로그값이입력되면아두이노에서인식되는값은 1.005V 가됩니다. 이렇게총 1024 단계 (=2 10 ) 를가집니다. 아두이노보드와연결해서사용할수있는 16비트 ADC 보드입니다. 16비트로 ADC를사용하기때문에 2의 16승인 단계로나눠집니다. 아두이노가 1024 단계였던것과비교하면 64배 (=2 6 ) 큰것입니다 장. 아두이노프로그램을위한쉬운 C 언어문법
86 f. analogwrite( 핀, 값 ) 핀에아날로그값을씁니다. 이때핀은 pwm 출력이가능한핀만가능합니다. pwm 은보드에서번호옆에 ~ 표시가있는핀만사용할수있습니다. UNO 의경우 3,5,6,9,10,11 핀이 pwm 이가능하고, analogwrite() 로값을쓸수있습니다. analogwrite(3,127); // 아날로그출력핀 3 번에 127 의값인 2.5V 를출력 쓸수있는값은 0 부터 255 까지로분해능이 8 비트입니다. 최대 256 단계까지 가능합니다. pwm 은 2ms 의시간안에서 256 단계로나누어일부는 1 을, 나머지는 0 을출력하는방식입니다. 이것을 2ms 의주기로반복합니다. PWM 이란 Pulse Width Modulation 의약자로펄스의폭을조절하는것입니다. 아두이노에서는 2ms 즉, 초안에서 ON 과 OFF를나눠서나가는출력을조절합니다. 그래서엄밀하게는 Digital Analog Converter 가아니지만모터를제어하거나온도를제어하거나 LED 의빛의세기를제어할때는 PWM을 DAC 로사용할수있습니다. 아두이노보드에있는핀번호옆에물결 (~) 표시가있는핀이 PWM 출력이가능한핀입니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 81
87 g. delay( 시간 ) delay 는주어진시간만큼아무것도하지않고기다립니다. 시간의단위는 ms 이고, 1000ms 는 1 초가됩니다. delay(1000); // 1000ms 즉 1 초동안기다림 delay() 함수를쓸경우주의할점은함수실행중인시간동안다른작업을하지못한다는것입니다. 만약스위치입력을받아야한다면 delay() 함수의사용을잘고려해서써야합니다. delay() 되는시간에스위치작동을시키면아두이노에서는스위치입력을인식하지못할수도있습니다 장. 아두이노프로그램을위한쉬운 C 언어문법
88 h. millis() 현재시간을반환합니다. 현재시간은아두이노에전원이들어온뒤로흐른시간을 의미합니다. 시간의단위는 ms 입니다. milis() 함수를사용해서시간을저장할때는 unsigned long 타입의변수를사용합니다. unsigned long value; value = milis(); milis() 함수를사용해서아두이노가중간에정지하지않는 delay(1000) 을만들수 있습니다. 아래소스를분석해보시면 delay() 를사용하지않고도동일한효과를내는 방법을알수있습니다 unsigned long previousmillis = 0; unsigned long currentmillis = millis(); if (currentmillis - previousmillis >= 1000) { previousmillis = currentmillis; if (ledstate == LOW) { ledstate = HIGH; else { ledstate = LOW; 소스분석은이책에서다루고자하는범위를넘어섭니다. 따로홈페이지에 올려두겠습니다. 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 83
89 12. 다양한 수학 함수들 mix(x,y) : 둘중작은수를반환한다. max(x,y) : 둘중큰수를반환한다. randomseed(value) : random() 함수의시작지점을결정할때사용합니다. 보통 value 로오픈된상태의 analogread() 값을사용합니다. random(max); 0 과 max 사이의값중하나를무작위로만든다. random(min,max); min 과 max 사이의값중하나를무작위로만든다. int number; randomseed(analogread(a0)); // random() 초기화 number = random(1000); // 0 과 1000 사이의값을무작위 (random) 로만듭니다. number = random(50,200); // 50 과 200 사이의값을무작위 (random) 로만듭니다. analogread(a0) 는 A0 핀에들어오는아날로그값 (0V ~ 5V) 입니다. A0 에아무것 도연결하지않은상태에서무작위의값이들어오면그값으로 random() 함수를초 기화시킵니다 장. 아두이노프로그램을위한쉬운 C 언어문법
90 13. 디버깅 Serial.begin(rate) : setup() 함수의내부에시리얼통신속도를설정합니다. void setup() { Serial.begin(9600); // 속도는 9600 Serial.print(data) : 데이터를시리얼포트로전송합니다. 일반적으로 아두이노보드에있는어떤값 ( 문자열 ) 을 PC 쪽으로보낼때사용합니다. Serial.println() 은 Serial.print() 를보낸후마지막에줄바꿈신호를 덧불입니다. 즉, Serial.println() 을쓰면문자를시리얼통신창에쓴다음줄을바꾸고 새줄의첫번째칸으로커서가이동한다. void setup(){ Serial.begin(9600); // 속도는 9600 void loop(){ Serial.print(analogValue); // analogvalue 에들어있는값을시리얼통신전송 Serial.println(" 전송하는문자열 "); // 문자열을시리얼통신으로전송 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 85
91 아두이노같은 MCU를프로그램할때는프로그램이제대로되었는지아닌지확인할필요가있습니다. 이런확인작업을 디버깅 한다고말합니다. JTAG 와같은디버깅에사용되는용어와장비들이있습니다. 하지만이러한장비들과프로그램은매우가격이비쌉니다. 오른쪽사진은 STM32 시리즈 MCU 에사용된는디버깅장비입니다. 그래서프로그램초기에하던방식으로매우간단하면서저렴한방식을아두이노에서채택했습니다. 그것이시리얼통신을이용한모니터링방식입니다. 물론 JTAG 등의전문적인장비나프로그램을가지고프로그램하는것과비교하면매우성능도낮습니다. 하지만가격이따로발생하지않기때문에아두이노와같은복잡하지않은프로그램에서사용하기는적당합니다. 아두이노는 Serial.print(), Serial.println() 같은문자열을화면에보여주는함수를사용해서필요한정보를 PC 에보낼수있습니다. 이렇게전달되는정보를화면으로보며어디까지실행되었는지를확인할수있습니다. 일반적으로특별한변수의값을보여주거나혹은어떤부분이실행이되었는지아닌지의여부를보여주는용도로사용됩니다 장. 아두이노프로그램을위한쉬운 C 언어문법
92 int pushbutton =2; void setup() { Serial.begin(9600); pinmode(pushbutton, INPUT_PULLUP); pinmode(13, OUTPUT); void loop() { int buttonstate = digitalread(pushbutton); Serial.print("buttonState = "); Serial.println(buttonState); if (buttonstate) { digitalwrite(13, HIGH); Serial.println("Push SW ON"); else { digitalwrite(13, LOW); Serial.println("Push SW OFF"); delay(1); Serial.begin(9600); 으로 PC 와 RS232 시리얼통신을할수있도록합니다. Serial.print("buttonState = "); Serial.println(buttonState); buttonstate 값을화면에보여줍니다. buttonstate 가 1 이면 Serial.println("Push SW ON"); 를실행, 화면에 Push SW ON 을보여줍니다. buttonstate 가 0 이면 Serial.println("Push SW OFF"); 를실행, 화면에 Push SW OFF 을보여줍니다. 디버깅을위해서 Serial.println() 등의함수를쓸때는프로그램의실행순서를머릿속으로따라가면서의심이 드는장소에사용합니다. >> 혹시버튼에이상이있지않을까? >> buttonstate 값을출력해서확인합니다. 버튼이고장이거나선이단선 ( 겉으로는연결되었지만 속은끊어진상태 ) 되었거나혹은연결이잘안되어있는지등을확인할수있습니다. >> 혹시 LED 가고장인가? >> buttonstate 가 1 이어서 Push SW ON 이화면에나왔는데 LED 가켜지지않는다면 LED 이상이거나연결된저항에문제가있거나전선연결에문제가있는등의다양한문제를점검해봐야합니다. >> if 조건문작동은잘되는가? >> buttonstate 값에따라서 if 와 else 구문이제대로작동하고있는가? 3 장. 아두이노프로그램을위한쉬운 C 언어문법 - 87
93 4 장. 아두이노 프로그램 기본구조 1. 디지털출력 아두이노의가장기초프로그램으로핀하나의출력을 ON 또는 OFF 로합니다. 13번핀을출력으로설정하고 1초간격으로 ON 과 OFF 를반복합니다 int ledpin = 13; void setup() { pinmode(ledpin, OUTPUT); void loop(){ digitalwrite(ledpin, HIGH); delay(1000); digitalwrite(ledpin, LOW); delay(1000); 88-4 장. 아두이노프로그램기본구조
94 2. 디지털입력 디지털핀 2번을입력으로설정하고스위치를연결합니다. 연결된스위치가 ON 일때 13번 LED 가 1초간격으로깜박이게합니다 int ledpin = 13; int switchpin = 2; void setup(){ pinmode(ledpin, OUTPUT); pinmode(switchpin, INPUT); void loop(){ if (digitalread(switchpin)==high){ digitalwrite(ledpin, HIGH); delay(1000); digitalwrite(ledpin, LOW); delay(1000); 4 장. 아두이노프로그램기본구조 - 89
95 3. 대전류 출력 40mA 이상의출력이필요하면 MOSFET 등을사용합니다. DC 모터는회전하다정지할때역기전력이발생합니다. 역기전력을상쇄시키기위해역방향으로다이오드를부착합니다. IRF510 을사용한 DC 모터사용예제는다음과같습니다 int outpin = 5; void setup(){ pinmode(outpin, OUTPUT); void loop(){ for (int i=0; i<=5; i++) { digitalwrite(outpin, HIGH); delay(250); digitalwrite(outpin, LOW); delay(250); delay(1000); 90-4 장. 아두이노프로그램기본구조
96 4. PWM 출력 디지탈출력의경우 OFF 인 0 과 ON 인 1 로구분됩니다. OFF 는전압이 0V 인 경우를나타내고 ON 은 int ledpin = 9; void setup() { void loop(){ for (int i=9; i<=255; i++) { analogwrite(ledpin, i); delay(100); for (int i=255; i>=0; i--) { analogwrite(ledpin, i); delay(100); 들어오는전압 VCC 가나가는것을의미합니다. PWM 은짧은시간속에 ON 과 OFF 를반복하는것입니다. 아두이노에서 PWM은 2ms 주기신호안에 ON 과 OFF 를일정비율로넣습니다. PWM 출력에는 analogwrite() 함수를사용합니다. 예제는 PWM 으로 LED 의 불빛의밝기를조절한것입니다. PWM 출력이가능한핀은아두이노보드의핀번호 옆에물결표시 (~) 로표시되어있습니다. 4 장. 아두이노프로그램기본구조 - 91
97 5. 아날로그값 입력받기 int potpin = A0; int ledpin = 13; void setup(){ pinmode(ledpin, OUTPUT); void loop(){ digitalwrite(ledpin, HIGH); delay(analogread(potpin)); digitalwrite(ledpin, LOW); delay(analogread(potpin)); 아두이노에는아날로그값을읽어들이는 ADC가있습니다. ADC는아날로그값을디지탈로변환해서그값을읽어들입니다. 0V 에서기준전압까지를총 1024 단계로나누어그단계값을계산합니다. analogread() 함수를사용하여가변저항을 +5V 와 GND(0V) 사이에연결하고그중간부분에위치한전압값을읽어들입니다 장. 아두이노프로그램기본구조
98 5 장. 하드웨어 연결 아 두이노와같은 MCU 는 PC 프로그램과달리입력과출력을특징지워 주어야합니다. 쉽게말해서 PC 는키보드와마우스라는입력장치가 기본적으로달려있습니다. 출력도모니터와프린터라는출력장치가 있습니다. 이렇게기본입력장치와출력장치가이미붙어있기때문에 PC 프로그램을 하는사람들은입, 출력장치에대해서크게신경을쓰지않습니다. 대부분 OS 수준에서 알아서입, 출력장치가처리가됩니다. 하지만아두이노같은 MCU 는입력과출력을잘지정해주어야합니다. 이를테면스위치를붙인다고하더라도디지털 13번에붙일것인지, 디지털 2번에붙일것인지, 아니면디지털핀이모자라서아날로그입력으로주로사용되는 A0 에붙일것인지를결정하고, 그에따라서스위치와센서등을아두이노와제대로연결해주어야합니다. 센서나모터등을연결할때주의할것을몇가지이장에서는알려드리도록 하겠습니다. 5 장. 하드웨어연결 - 93
99 1. 센서 연결 입력장치인센서를연결할때주의할점은다음과같습니다. 아두이노와 센서의 GND 를 연결합니다. 센서에서나오는값이아두이노로들어가야합니다. 그러기위해서아두이노와센서는동일한전압기준을가져야합니다. 이것을 GND 라고이름을붙입니다. 그리고대부분의경우 GND 는 0V 가됩니다. 센서가제대로동작하기위해서센서에전원즉, 전기가들어가야합니다. 아두이노에사용되는대부분의센서는 5V 전원을필요로합니다. 아두이노에서나오는 5V를사용하거나혹은다른 SMPS 에서 5V를만들어서사용해도됩니다. 그리고센서와아두이노의 GND 는서로연결해둡니다. 그리고센서에서나오는값과센서의핀, 아두이노에연결되어들어가는핀을꼭확인해둡시다. 종종다른사람이짠프로그램을그대로적용시키면서하드웨어는고치지않아서프로그램이잘못된것같다고소스코드만질문게시판에올리는초보자들이있습니다. 꼭기억하세요. 하드웨어연결상태를확인하지않고소스코드만고쳐달라고해서는안됩니다. 아두이노는하드웨어와프로그램소스모두가중요합니다 장. 하드웨어연결
100 2. 출력 연결 작은 전류만 허용되는 출력 일 반적으로가장많이사용되는 LED 연결을예로들어보겠습니다. LED 는 위에서언급했듯이 20mA 정도의전류를흐르게하는것이적절합니다. 그보다많으면 LED 가고장날수있습니다. 너무적은전류는빛이 약해서켜진상태인지꺼진상태인지잘분간이안될수도있습니다. LED 와같이작은전류만허용되는출력을사용할경우저항을꼭함께사용해야만합니다. 오옴의법칙을이용해서전압, 전류, 저항관계식으로허용전류이상이출력으로나오지않게하셔야합니다. 이를테면 LED를하나켜고끈다고할때, V = I R 을쓰면, 5 장. 하드웨어연결 - 95
101 (5-2)V = 0.02A x R LED 의전압강하가 2V 정도됩니다. R = 3V / 0.02A = 150 계산된저항값은 150이나옵니다. 150 Ω 저항을사용하면 20mA 정도의전류가 LED를흐릅니다. 보통은조금안전하게이보다약간큰저항을사용합니다. 200Ω에서 400Ω 정도의저항을사용하면됩니다. 큰 전류가 필요한 출력 모 터와같은어떤동작을하는출력장치를액추에이터라고통칭해서 부릅니다. 이런종류의출력장치는상당히큰전력과전류를필요로 합니다. 이런출력장치를아두이노에바로연결하게되면아두이노는 내부에서출력할수있는전원이상을끌어낼수없기때문에프로세서가정지해 버립니다. 리셋이되는현상이발생합니다. 이런종류의출력을트랜지스터를이용하거나릴레이를이용해서출력을증폭시킵니다. 4장 3항의대전류출력예제는트랜지스터 (MOSFET) 을스위치로이용해서모터를구동시킵니다. 트랜지스터를이용한증폭으로도어려울때는릴레이를사용합니다. 릴레이역시도사용가능한정도가있습니다. 그이상의큰장치를사용할때는그에맞는별도의전기지식이필요합니다. 이경우 M.C. 라고불리는 Magnetic Contactor 또는 Magnetic Switch 를 사용합니다. M.C. 사용은전기쪽일로 3 상 AC 모터를사용할일이있을때주로쓰게 됩니다. 일반적으로아두이노로작업을할때는 DC 모터를사용하므로 M.C. 까지신경 96-5 장. 하드웨어연결
102 쓸필요는없습니다만이것을말씀드리는이유는사용하는출력장치에따라다양한 전력이필요하고큰전력과전류를사용해야만하는출력장치에는별도의출력증폭용 장치가필요하다는것을말씀드리기위해서입니다. 5 장. 하드웨어연결 - 97
103 6 장. 프로그램 방법 막 상아두이노를배우면이것저것많은함수들을배우게됩니다. 그리고 다양한예제들이있습니다. 예제들을보고필요한것들을끼워서붙이면 프로그램이된다고설명하는글이많습니다. 틀린말은아닙니다만조금 생각할부분이있습니다. 한국어를하든, 영어를하든, 일본어나중국어를하든말에는법칙이있습니다. 문법이라고하지요. 문법뿐아니라글을쓸때 기 - 승 - 전 - 결 이라는일반적인흐름이 있습니다. 프로그램도그와비슷합니다. 아주쉽게세가지단계로프로그램을하는방법을소개합니다. 복잡한프로그램은 이렇게하기는어렵겠지만우선아두이노로처음하는프로그램이라면이방법을익혀 두시면앞으로많이도움이될겁니다. 단계 1 [ 입력 ] 센서를통한입력값을받는다. 단계 2 [ 연산 ] 받은값을사용해서필요한정보를계산한다. 단계 3 [ 출력 ] 최종계산결과를출력한다 장. 프로그램방법
104 이게끝입니다. 물론조금복잡하게프로그램을하다보면단계 3 의출력값이다른 단계 1 의입력값이되기도합니다. 단계1 에서는주로아두이노와연결된센서의값을읽어들입니다. 아두이노에서사용하는디지털센서는 0과 1의조합으로된값이나오고, 아날로그센서는 0V에서 5V 사이의전압값이나옵니다. 이값의범위를벗어나면이범위에들어맞도록값을고쳐줘야합니다. 단계2에서는들어온값을가지고필요한계산을수행합니다. 이를테면온도센서의값으로 0V에서 5V사이의값을가져왔다면그값을실제우리가알수있는섭씨나화씨온도로변환시킵니다. 계산식은센서에서나오는값과우리가얻고자하는값사이의관계식을만들어서씁니다. 보통센서를만드는회사에서이러한내용을문서를만들어서제공하고이런기술문서도데이터시트에포함됩니다. 단계3에서는들어온값으로계산이끝난값을가지고출력을결정합니다. 출력은다양한방법이사용됩니다. 간단하게는 LED 의불빛을켜고끄는것도가능하고, PC와시리얼통신으로연결해서 PC 모니터상에값을보여줄수도있습니다. 별도로마련된 LCD 모니터에값을보여줄수도있고, 따로연결된모터를작동시키거나릴레이를작동시켜서집의보일러를켜고끌수도있습니다. 이러한모든것이출력이됩니다. 6 장. 프로그램방법 - 99
105 1. 입력 아두이노에서주로사용되는입력은 digitalread() 와 analogread() 입니다. 입력에사용되는함수를쓰기위해서먼저 pinmode() 함수로어떤핀을어떤 입력으로쓸것인지결정해주어야합니다. 2. 연산 입력된값을가지고원하는결과를얻을수있도록다양한연산을수행합니다. 이 과정에서다양한수학함수들과문자열함수들, 그리고 for, if 문등이사용됩니다. 3. 출력 아두이노에서주로사용되는출력은 Serial.print(), Serial.println(), digitalwrite(), analogwrite() 함수입니다. 물론이외에도 SD 카드에저장하거나 LCD 창에글자나그림을쓰는등의출력도가능합니다. 하지만이런다양한출력들도내부를잘살펴보면위의 4가지함수를조합해서사용하는경우가대부분입니다 장. 프로그램방법
106 Project : 아두이노의 2번핀에스위치를연결하고스위치를 ON상태로했을때때 9번핀에연결된 LED 가켜지고, 스위치를 OFF 상태로했을때 LED 가꺼지게하라. [ 입력 ] 스위치디지털입력값을 PIN 2 로받음 [ 연산 ] >> PIN 2 의값을 buttonstate 에저장 >> buttonstate 값을반전시킴 [ 출력 ] buttonstate 의값을 PIN 9 LED 로출력 int buttonstate; void setup() { pinmode(2, INPUT_PULLUP); pinmode(9, OUTPUT); void loop() { buttonstate =!(digitalread(2)); digitalwrite(9, buttonstate); delay(1); 6 장. 프로그램방법 - 101
107 주요함수 [ 입력 ] digitalread(2) 필요한설정 pinmode(2, INPUT_PULLUP); [ 연산 ] buttonstate =!digitalread(2) delay(1); [ 출력 ] digitalwrite(9, buttonstate); pinmode(9, OUTPUT); 입력, 연산, 출력관련주요함수를순서대로넣어주면프로그램은완성입니다. 먼저 [ 입력 ] 함수를씁니다. digitalread(2) 그런데이문장을사용하려면먼저이함수를사용할수있도록 2번핀을디지털입력으로설정해주어야합니다. 그리고설정은한번만하면됩니다. 한번만하면되는것은 setup() 에넣어줍니다. 그리고 digitalread(2) 는계속하는것이니까 loop() 에넣어줍니다 장. 프로그램방법
108 void setup() { pinmode(2, INPUT_PULLUP); void loop() { digitalread(2); 이제 [ 입력 ] 부분이끝났으니 [ 연산 ] 부분으로넘어갑니다. 연산에서는읽은값을 반전시켜 buttonstate 에저장합니다. digitalread(2) 를반전시켜서저장합니다. buttonstate =!(digitalread(2)); 그리고 loop() 함수를한번씩실행할때마다 1ms 씩멈추도록합니다. delay(1); 여기까지한것을모아보면다음과같습니다. 6 장. 프로그램방법 - 103
109 void setup() { pinmode(2, INPUT_PULLUP); void loop() { buttonstate =!(digitalread(2)); delay(1); 이제마지막으로 [ 출력 ] 부분을프로그램합니다. 출력은 buttonstate 의값을 13 번 핀으로그대로내보냅니다. digitalwrite(9, buttonstate); 13 번핀을출력으로사용하려면먼저 13 번핀을출력으로쓰겠다고아두이노에 알려줘야합니다. pinmode(9, OUTPUT); 출력부분을포함해서전체프로그램을완성시켜봅시다 장. 프로그램방법
110 void setup() { pinmode(2, INPUT_PULLUP); pinmode(9, OUTPUT); void loop() { buttonstate =!(digitalread(2)); delay(1); digitalwrite(9, buttonstate); 설정에필요한 pinmode() 함수는모두 1번만처음에실행시키면되는것이므로모두 setip() 안에넣습니다. 그리고 digitalwrite(9, buttonstate) 는입력값을받고연산을거친다음에출력이이루어져야하기때문에 loop() 함수의맨아래쪽에넣습니다. 이렇게프로그램이완성되었습니다. 6 장. 프로그램방법 - 105
111 2016년 5월 10일, 아직찾지못한 9명의세월호실종자를기억하며, 바람 이이책으로아두이노를공부하는모든분들을응원합니다. FORGET-416-NOT
112
113 이 책에서 배울 내용은... 아두이노 IDE 기본설치아두이노프로그램을위한 C 언어기초하드웨어와소프트웨어의관계프로그램방법 누구나 따라하는 아두이노 프로그래밍 서점에가보면아두이노관련서적이넘쳐납니다. 그중어떤 것을보면좋을까요? 만약당신이프로그램경험이있다면하드웨어에관한책을 살펴보면됩니다 이나 AVR 같은책을보고그다음 아두이노관련문서를인터넷에서찾아보면됩니다. 만약당신에이전에 8051 이나 AVR 같은 MCU를다뤄본경험이있다면아두이노는굳이공부할필요가없습니다. 그냥인터넷 arduino.cc 사이트로가서자료를다운받아사용하면됩니다. 만약당신이프로그램경험이없고, MCU 가무엇인지모른다면이책을손에드시면됩니다. 이책은아무런기초지식없이아두이노를접하고경험하려는사람을위해쓰여졌습니다. 아두이노를처음접하고어떻게시작해야할지를알려주기위한책입니다.
아두이노 프로그램 쉽게 배우기 불 과 얼마 전까지만 해도 PC 가 아닌 다른 장치를 프로그램한다는 것은 전문가들의 일로만 여겼습니다. 특수한 장비를 사용해서 "롬"이라고 불리는 장치에 프로그램을 억지로 집어넣었습니다. 프로그램 장비도 고가여서 일반인은 쉽게 구입하기 어
1 장. 이 책의 사용설명서 1. 시작하면서 아 두이노가일반인들에게알려지기 전에는프로그램을한다고하면보통 PC 에서하는프로그램을 의미했습니다. PC 에서프로그램을만들때사용하는프로그래밍언어는많이있습니다. 지금은일반인도프로그램할수있도록쉬운프로그램언어들이많이나오고있습니다. 스크래치같이프로그램언어는레고블록을가져다끼우는식으로프로그램을할수도있습니다. 1 장. 이책의사용설명서
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More informationMicrosoft Word - PLC제어응용-2차시.doc
과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,
More informationMicrosoft PowerPoint - chap04-연산자.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에
More informationMicrosoft PowerPoint - es-arduino-lecture-03
임베디드시스템개론 : Arduino 활용 Lecture #3: Button Input & FND Control 2012. 3. 25 by 김영주 강의목차 디지털입력 Button switch 입력 Button Debounce 7-Segment FND : 직접제어 7-Segment FND : IC 제어 2 디지털입력 : Switch 입력 (1) 실습목표 아두이노디지털입력처리실습
More informationPowerPoint 프레젠테이션
실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향
More informationPowerPoint 프레젠테이션
Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.
More informationVisual Basic 반복문
학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For
More informationISP and CodeVisionAVR C Compiler.hwp
USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler
More informationInfinity(∞) Strategy
반복제어 표월성 passwd74@cherub.sungkyul.edu 개요 for() 문 break문과 continue문 while문 do-while문 for() 문 for() 문형식 for( 표현식1; 표현식2; 표현식3) 여러문장들 ; 표현식 1 : 초기화 (1 번만수행 ) 표현식 2 : 반복문수행조건 ( 없으면무한반복 ) 표현식 3 : 반복문수행횟수 for()
More information비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2
비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,
More informationMicrosoft PowerPoint - chap05-제어문.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.
More information프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음
프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y
More information실험 5
실험. OP Amp 의기초회로 Inverting Amplifier OP amp 를이용한아래와같은 inverting amplifier 회로를고려해본다. ( 그림 ) Inverting amplifier 위의회로에서 OP amp의 입력단자는 + 입력단자와동일한그라운드전압, 즉 0V를유지한다. 또한 OP amp 입력단자로흘러들어가는전류는 0 이므로, 저항에흐르는전류는다음과같다.
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More information1
2/33 3/33 4/33 5/33 6/33 7/33 8/33 9/33 10/33 11/33 12/33 13/33 14/33 15/33 16/33 17/33 5) 입력을 다 했으면 확인 버튼을 클릭합니다. 6) 시작 페이지가 제대로 설정이 되었는지 살펴볼까요. 익스플로러를 종료하고 다시 실행시켜 보세요. 시작화면에 야후! 코리아 화면이 뜬다면 설정 완료..^^
More information설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1
디지털 사진 프린터 P-S100 프린터 드라이버 설치 가이드 사용하는 컴퓨터에 따라 제공된 프린터 드라이버를 설치합니다. 설치 절차 에 대한 자세한 내용은 CD-ROM의 Readme 파일을 참조하십시오. 작동 환경 Windows 호환 모델: IBM PC/AT 및 호환품 운영 체제: Windows 98 SE/Me/2000/XP (Windows 98 SE/Me/2000/XP
More information실험 5
실험. OP Amp 의기본특성 이상적 (ideal) OP Amp OP amp는연산증폭기 (operational amp) 라고도불리며, 여러개의트랜지스터로구성이된차동선형증폭기 (differential linear amplifier) 이다. OP amp는가산, 적분, 미분과같은수학적연산을수행하는회로에사용될수있으며, 비디오, 오디오증폭기, 발진기등에널리사용되고있다.
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More informationSBR-100S User Manual
( 1 / 13 ) SBR-100S 모델에 대한 사용자 펌웨어 업그레이드 방법을 안내해 드립니다. SBR-100S 는 신규 펌웨어가 있을시 FOTA(자동업데이트) 기능을 통하여 자동 업그레이드가 되며, 필요시 사용자가 신규 펌웨어를 다운받아 수동으로 업그레이드 할 수 있습니다. 1. 준비하기 1.1 연결 장치 준비 펌웨어 업그레이드를 위해서는 SBR-100S
More informationMicrosoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]
Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨
More information버퍼오버플로우-왕기초편 3.c언어에서버퍼사용하기 버퍼는 임시기억공간 이라는포괄적인개념이기때문에여러곳에존재할수있습니다. 즉, CPU 에도버퍼가존재할수있으며, 하드디스크에도존재할수있고, CD- ROM 이나프린터에도존재할수있습니다. 그리고앞의예제에서보신바와같이일반프로그램에도
버퍼는 임시기억공간 이라는포괄적인개념이기때문에여러곳에존재할수있습니다. 즉, CPU 에도버퍼가존재할수있으며, 하드디스크에도존재할수있고, CD- ROM 이나프린터에도존재할수있습니다. 그리고앞의예제에서보신바와같이일반프로그램에도존재할수있습니다. 이번시간엔프로그램에서버퍼를사용하는법, 그중에서도 C 언어에서버퍼를사용하는방법에대해배워보겠습니다. C 언어에서버퍼를사용하는가장쉬운방법은바로변수를선언하는것인데,
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationInstall stm32cubemx and st-link utility
STM32CubeMX and ST-LINK Utility for STM32 Development 본문서는 ST Microelectronics 의 ARM Cortex-M 시리즈 Microcontroller 개발을위해제공되는 STM32CubeMX 와 STM32 ST-LINK Utility 프로그램의설치과정을설명합니다. 본문서는 Microsoft Windows 7
More informationIRISCard Anywhere 5
이 빠른 사용자 가이드는 IRISCard Anywhere 5 및 IRISCard Corporate 5 스캐너의 설치와 시작을 도와 드립니다. 이 스캐너와 함께 제공되는 소프트웨어는: - Cardiris Pro 5 및 Cardiris Corporate 5 for CRM (Windows 용) - Cardiris Pro 4 (Mac OS 용) Cardiris 의
More information<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>
뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)
More information지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가
수업주제 경찰 출동! (버튼, LED, 버저 사용하기) 9 / 12 차시 수업의 주제와 목표 본 수업에서는 이전 차시에 배웠던 블록들의 기능을 복합적으로 활용한다. 스위치 기능을 가진 버튼을 활용하여 LED와 버저를 동시에 작동시키도록 한다. 각 블록들을 함께 사용하는 프로젝트를 통해 각각의 기능을 익히고 보다 다양한 활용 방법을 구상할 수 있다. 교수 학습
More information경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P
Duplicator 는기본적으로원본하드디스크를빠르게복사본하드디스크에복사하는기능을하는것입니다.. 복사본 하드디스크가원본하드디스크와똑같게하는것을목적으로하는것이어서저용량에서고용량으로복사시몇 가지문제점이발생할수있습니다. 하드디스크는사용하려면, 디스크초기화를한후에포맷을해야사용가능합니다. Windows PC는 MBR과 GPT 2 개중에 1개로초기화합니다. -Windows
More information슬라이드 1
마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***
More information차시 AS_02 대상 교육주제아두이노 LED 및버튼제어프로젝트교육시간 120 분 1. 아두이노를이용하여 LED 를제어할수있다. 교육목표 2. 아두이노를이용하여삼색 LED 를제어할수있다. 3. 아두이노에서버튼입력을수행하여프로그램에연동할수있다. 장비류는미리배분하고, 재료는
차시 AS_02 대상 교육주제아두이노 LED 및버튼제어프로젝트교육시간 120 분 1. 아두이노를이용하여 LED 를제어할수있다. 교육목표 2. 아두이노를이용하여삼색 LED 를제어할수있다. 3. 아두이노에서버튼입력을수행하여프로그램에연동할수있다. 장비류는미리배분하고, 재료는각실험단계에서배분한다. Arduino 1.0 USB 케이블 1.0 교육자료 ( 준비물 ) 300Ω
More informationMicrosoft Word - windows server 2003 수동설치_non pro support_.doc
Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로
More information<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>
연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More information윈도우즈프로그래밍(1)
제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장
More information정부3.0 국민디자인단 운영을 통해 국민과의 소통과 참여로 정책을 함께 만들 수 있었고 그 결과 국민 눈높이에 맞는 다양한 정책 개선안을 도출하며 정책의 완성도를 제고할 수 있었습니다. 또한 서비스디자인 방법론을 각 기관별 정부3.0 과제에 적용하여 국민 관점의 서비스 설계, 정책고객 확대 등 공직사회에 큰 반향을 유도하여 공무원의 일하는 방식을 변화시키고
More information<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More informationStuduino소프트웨어 설치
Studuino 프로그래밍환경 Studuino 소프트웨어설치 본자료는 Studuino 프로그래밍환경설치안내서입니다. Studuino 프로그래밍 환경의갱신에따라추가 / 수정될수있습니다. 목차 1. 소개... 1 2. Windows... 2 2.1. 프로그래밍환경설치... 2 2.1.1. 웹설치버전설치방법... 2 2.2. Studuino 프로그래밍환경실행...
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
More information< 제누이노스타트키트 > 사용설명서 목차 1. Arduino IDE 설치하기 2. Genuino 연결및 Arduino IDE 셋팅하기 3. 센서설명및연결도, 예제소스 1
< 제누이노스타트키트 > 사용설명서 목차 1. Arduino IDE 설치하기 2. Genuino 연결및 Arduino IDE 셋팅하기 3. 센서설명및연결도, 예제소스 1 1. Arduino IDE 설치하기 1) Arduino IDE 다운로드 - 홈페이지주소 : https://www.arduino.cc 접속합니다. Download 를클릭합니다. Windows
More informationPowerPoint Presentation
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.
More informationKMC.xlsm
제 7 장. /S 에필요한내용 1] IGBT 취급시주의사항 ) IGBT 취급시주의 1) 운반도중에는 Carbon Cross로 G-E를단락시킵니다. 2) 정전기가발생할수있으므로손으로 G-E 및주단자를만지지마십시요. 3) G-E 단자를개방시킨상태에서직류전원을인가하지마십시요. (IGBT 파손됨 ) 4) IGBT 조립시에는사용기기나인체를접지시키십시요. G2 E2 E1
More informationView Licenses and Services (customer)
빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차
More information<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 6 장선택과반복 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break문 continue문 지금까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 3 가지의제어구조 조건문 문장이실행되는순서에영향을주는문장 조건에따라서여러개의실행경로가운데하나를선택
More informationPoison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3
Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow
More information< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>
Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법
More information특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가
www.kdnetwork.com 특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가능할 삭제할 건전지 사용자를 위한 개별 비밀번호 및 RF카드
More information목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault
사용자매뉴얼 JetFlash Vault 100 ( 버전 1.0) 1 목차 1. 시스템요구사항... 3 2. 암호및힌트설정 ( 윈도우 )... 3 3. JetFlash Vault 시작하기 ( 윈도우 )... 7 4. JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault 찾아보기... 10 JetFlash
More informationWindows 8에서 BioStar 1 설치하기
/ 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar
More informationMicrosoft PowerPoint - gnu-w10-c-chap11
어서와 C 언어는처음이지 제 11 장 경로선택을위한데이터검사 if 문장 관계연산자 (relational operator) 데이터검사하기 만약내가충분한돈을벌면, 우리는이태리로간다. 만약구두가맞지않으면, 환불한다. 만약외부기온이높으면, 잔디에물을준다. 관계연산자 관계연산자의예 int i = 5; int j = 10; int k = 15; int l = 5; i
More informationBY-FDP-4-70.hwp
RS-232, RS485 FND Display Module BY-FDP-4-70-XX (Rev 1.0) - 1 - 1. 개요. 본 Display Module은 RS-232, RS-485 겸용입니다. Power : DC24V, DC12V( 주문사양). Max Current : 0.6A 숫자크기 : 58mm(FND Size : 70x47mm 4 개) RS-232,
More informationü ü ü #include #include #include #include Servo servoleft; Servo servoright; int sensorvalue1, sensorvalue2; // 각각앞쪽과뒤쪽의조도센서 int voltage, voltage2;
More information새로운 지점에서 단이 시작하는 경우 기둥코로 시작하라고 표시합니다. 기둥코(standing stitch)로 시작하는 방법은 YouTube 에서 찾아볼 수 있습니다. 특수 용어 팝콘뜨기: 1 코에 한길긴뜨기 5 코, 바늘을 빼고 첫번째 한길긴뜨기코의 앞에서 바늘을 넣은
Desire Copyright: Helen Shrimpton, 2016. All rights reserved. By: Helen at www.crystalsandcrochet.com 12 인치 모티브 worsted/aran(10ply), 5mm 바늘 사용 약 10인치 Double Knitting(8ply), 4mm 바늘 사용 미국식 용어를 사용합니다. 약어
More informationIndex 1. Intro Install Connect Scratch 1.4 (Offline Editor) Scratch 2.0 (Online Editor) Connect f
Scratch 호환 센서 보드 SKY SSB 설정 메뉴얼 1st of April 2016 Techdine Index 1. Intro... 03 2. Install... 04 3. Connect... 06 3-1. Scratch 1.4 (Offline Editor)... 06 3-2. Scratch 2.0 (Online Editor)... 09 3-2-1. Connect
More informationC 프로그램의 기본
C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석
More information버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습
앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수
More informationSIGIL 완벽입문
누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS
More information아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상
Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는
More informationMicrosoft PowerPoint - Java7.pptx
HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)
More informationMicrosoft PowerPoint 자바-기본문법(Ch2).pptx
자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March
More informationMF Driver Installation Guide
Korean MF 드라이버 설치설명서 사용자 소프트웨어 CD-ROM... 드라이버 및 소프트웨어 정보...1 지원되는 운영 체제...1 MF 드라이버 및 MF Toolbox 설치... [쉬운 설치]를 사용한 설치...2 [사용자 정의 설치]를 사용한 설치...10 USB 케이블 연결(USB를 이용해 연결하는 경우만)...20 설치 결과 확인...21 온라인
More informationPowerPoint 프레젠테이션
Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조
More informationMicrosoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt
변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short
More informationMicrosoft PowerPoint - chap-03.pptx
쉽게풀어쓴 C 언어 Express 제 3 장 C 프로그램구성요소 컴퓨터프로그래밍기초 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C프로그램을이루는구성요소들을살펴봅니다. 컴퓨터프로그래밍기초 2 일반적인프로그램의형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
More information목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.
소프트웨어매뉴얼 윈도우드라이버 Rev. 3.03 SLP-TX220 / TX223 SLP-TX420 / TX423 SLP-TX400 / TX403 SLP-DX220 / DX223 SLP-DX420 / DX423 SLP-DL410 / DL413 SLP-T400 / T403 SLP-T400R / T403R SLP-D220 / D223 SLP-D420 / D423
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More informationOracle VM VirtualBox 설치 VirtualBox에서 가상머신 설치 가상머신에 Ubuntu 설치
Oracle VM VirtualBox 설치 VirtualBox에서 가상머신 설치 가상머신에 Ubuntu 설치 VirtualBox를 사용하기 위해서는 일단 https://www.virtualbox.org/wiki/downloads 사이트에서 윈도우용 버추얼박스 설치화일을 다운로드 해야합니다. Ubuntu를 사용하기 위해서는 Ubuntu 디스크 이미지 화일을 다운로드
More informationMicrosoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx
CrackMe 15.exe (in Simples) 문제풀이 동명대학교정보보호동아리 THINK www.mainthink.net 강동현 Blog: johnghb.tistory.com e-mail: cari2052@gmail.com 1 목차 : 1. 문제설명및기본분석 --------------------------- P. 03 2 상세분석 ---------------------------
More informationMicrosoft Word - Armjtag_문서1.doc
ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationContents 01. 안전을 위한 주의 사항 03 02. 터치형 멀티 조절기 각부 명칭 04 03. 터치형 각방 조절기 각부 명칭 05 04. 조절기 난방/정지 하기 06 05. 조절기 외출 /해제하기 07 06. 조절기 반복난방 하기 09 07. 조절기 예약난방 /
사 용 설 명 서 대림산업 Touch형 조절기 멀티조절기 각방조절기 본 사용설명서는 찾기 쉬운 장소에 보관하세요. 제품 사용 전 반드시 사용설명서를 잘 읽어 주세요. 제품의 사양은 사전에 통보 없이 변경될 수 있습니다. 본사 및 공장 : 경기도 용인시 처인구모현면일산리 483-1 TEL : +82-31 - 336 9911 FAX : +82-31 - 336 9911
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,
More informationMicrosoft PowerPoint - ch07 - 포인터 pm0415
2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자
More informationMicrosoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse
More information<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>
8주차중간고사 ( 인터럽트및 A/D 변환기문제및풀이 ) Next-Generation Networks Lab. 외부입력인터럽트예제 문제 1 포트 A 의 7-segment 에초시계를구현한다. Tact 스위치 SW3 을 CPU 보드의 PE4 에연결한다. 그리고, SW3 을누르면하강 에지에서초시계가 00 으로초기화된다. 동시에 Tact 스위치 SW4 를 CPU 보드의
More information6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO
Windows 7 설치및 PCIE RAID 설정정보 DK173 초판 11월 2016 A. Windows 7 및 USB 드라이버설치 칩셋사양에따라 Windows 7 설치중에 USB 키보드 / 마우스를사용하려면시스템에서 USB 드라이버를사전로드해야합니다. 이절에서는 USB 드라이버사전로드방법과 Windows 7 설치방법에대해서설명합니다. 방법 1: SATA ODD
More informationChapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee
Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee 목차 1. D/A 변환기 2. 병렬 D/A 변환기로 LED 밝기제어하기 3. 직렬 D/A 변환기로 LED 밝기제어하기 D/A 변환기 D/A 변환기 (Digital to Analog Converter) 디지털데이터를아날로그전압으로변환하는소자 A/D변환기와함께마이크로프로세서응용회로에서널리사용됨.
More informationExample: LED flashlight
Example: LED flashlight current flow 500 wiring diagram schematic wiring it up Electricity flows in a loop. Can stop flow by breaking the loop Hello, World! in Arduino 실습목표 LED 켜기프로그램실습 젂자부품 LED 및저항사용법이해
More information3 권 정답
3 권 정답 엄마표학습생활기록부 엄마가선생님이되어아이의학업성취도를평가해주세요. 021 계획준수 학습기간 월일 ~ 월일 원리이해 시간단축 정확성 종합의견 022 계획준수 학습기간 월일 ~ 월일 원리이해 시간단축 정확성 종합의견 023 계획준수 학습기간 월일 ~ 월일 원리이해 시간단축 정확성 종합의견 024 계획준수 학습기간 월일 ~ 월일 원리이해 시간단속 정확성
More information<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >
10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절
More information<4D F736F F F696E74202D20325FBEC6B5CEC0CCB3EB20B1E2C3CABDC3C7E82E BC8A3C8AF20B8F0B5E55D>
아두이노사용해보기 http://arduino.cc/ 에서먼저프로그램을다운로드하여설치합니다. 시작이반이다 라는옛말이있죠? MCU 사용에있어서도개발환경구축하고, LED 하나깜박여보면절반은끝난거나마찬가지죠. 뭐 ~ 일단 http://arduino.cc/ 에방문하여 Download 를누르고해당 OS ( 보통 Windows를사용하시죠?) 용을압축파일을다운로드 ( 용량이
More information슬라이드 1
3. 자료와변수 3.1 자료형 자료형 컴퓨터는숫자 (= 데이터 ) 를다룬다. 컴퓨터가다룰수있는숫자의유형이있다. C 언어에서의자료형 크기 (byte) 정수형 ( 문자형 ) char 1 정수형 실수형 ( 부동소수형 ) short 2 int 4 long 4 long long 8 float 4 double 8 long double 8 / 16 강 C 프로그래밍 3
More information<4D F736F F F696E74202D203131C1D6C2F7202D E6FB8A620C0CCBFEBC7D120C4B3B8AFC5CD204C43442C C1A6BEEEC7CFB1E2205
강의내용 Ⅰ Arduino 를이용한캐릭터 LCD, VFD 제어하기 1 1. 소개 소개 - CDS 와디지털입출력포트그중에서도 PWM 포트를사용하여 LED 를 통하여아날로그출력을해보려고함. - 이번강좌를통해여러가지센서들을응용함에많은도움이될것임. 2 1. 소개 - 요즘 LCD와관련하여많은제품들이나오고있음. 종류도다양하고크기도다양함. - 이번강의에서는아두이노를이용하여
More informationPowerPoint 프레젠테이션
Chapter 03 일단짜보는그럴듯한 C 프로그램... 1. 프로그램작성순서복습 2. 주석 3. scanf_s( ) 맛보기 1. 프로그램작성순서복습 프로그래밍작성순서요약 프로젝트만들기 : 소스파일보다프로젝트를먼저생성해야함 코딩 : C 컴파일러가알아들을수있는형식으로문서작성 빌드 : 컴파일과링크를합친개념 컴파일 : 소스를컴퓨터가이해하는오브젝트파일로변환 링크 :
More informationPathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.
PathEye Mobile Ver. 0.71b 2009. 3. 17 By PathEye 공식 블로그 다운로드 받으세요!! http://blog.patheye.com 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye 설치 1/3 최종 배포 버전을 다 운로드 받습니다. 다운로드된 파일은 CAB 파일입니다. CAB 파일에는
More information1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-
1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다. 1.2.1 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-1 연산범위이유 : 00000000 00000000 00000000 00000000의 32
More informationPowerPoint 프레젠테이션
Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State
More information중간고사
중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX
More information슬라이드 1
첨부 4 리모콘별 TV 셋팅방법 2011. 1 전략서비스본부서비스지원팀 1 경제형 2002년개발쌍방향단순-2007년개발경제형 /PVR-2007년개발 2002 년 02 월 ~ 2003 년 08 월 85 만 (40 만은 TV 설정불가 ) 선호채널 도움말 만가능 1) TV 전원을키고 2) 0( 숫자 )+ 음소거동시에누름 -> LED ON 3) 리모콘 LED 주황색불확인후제조사코드입력
More information쓰리 핸드(삼침) 요일 및 2405 요일 시간, 및 요일 설정 1. 용두를 2의 위치로 당기고 반시계방향으로 돌려 전날로 를 설정합니다. 2. 용두를 시계방향으로 돌려 전날로 요일을 설정합니다. 3. 용두를 3의 위치로 당기고 오늘 와 요일이 표시될 때까지 시계방향으로
한국어 표준 설정안내 서브 초침 시간 및 설정 1. 용두를 2의 위치로 뽑아냅니다. 2. 용두를 시계방향 또는 반시계방향으로 돌려(모델에 따라 다름) 를 전날로 설정합니다. 3. 용두를 3의 위치로 당기고 현재 가 표시될 때까지 시계방향으로 돌립니다. 4. 용두를 계속 돌려 정확한 오전/오후 시간을 설정합니다. 5. 용두를 1의 위치로 되돌립니다. 169 쓰리
More informationA Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning
C Programming Practice (I) Contents 변수와상수 블록과변수의범위 수식과연산자 제어문과반복문 문자와문자열 배열, 포인터, 메모리관리 구조체 디버거 (gdb) 사용법 2/17 Reference The C Programming language, Brian W. Kernighan, Dennis M. Ritchie, Prentice-Hall
More information쉽게 풀어쓴 C 프로그래밍
누구나즐기는 C 언어콘서트 제 5 장조건문 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 goto 문 이제까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 조건문 조건에따라서여러개의실행경로가운데하나를선택 문장이실행되는순서에영향을주는문장 조건에따라서여러개의같은처리를반복
More information쉽게 풀어쓴 C 프로그래밍
쉽게풀어쓴 C 언어 Express 제 6 장조건문 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break 문 continue 문 goto 문 5 장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 조건문 조건에따라서여러개의실행경로가운데하나를선택 문장이실행되는순서에영향을주는문장
More informationMicrosoft PowerPoint - chap-06.pptx
쉽게풀어쓴 C 언어 Express 제 6 장조건문 컴퓨터프로그래밍기초 이번장에서학습할내용 조건문이란? if 문 if, 문 중첩 if 문 switch 문 break문 continue문 goto 문 5장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 컴퓨터프로그래밍기초 2 조건문 조건에따라서여러개의실행경로가운데하나를선택
More information실험. Multimeter 의사용법및기초회로이론 Multimeter 의사용법 멀티미터 (Multimeter) 는저항, 전압, 전류등을측정할수있는계측기로서전면은다음그림과같다. 멀티미터를이용해서저항, 전압, 전류등을측정하기위해서는다음그림과같은프로브 (probe) 를멀티미터
실험. Multimeter 의사용법및기초회로이론 Multimeter 의사용법 멀티미터 (Multimeter) 는저항, 전압, 전류등을측정할수있는계측기로서전면은다음그림과같다. 멀티미터를이용해서저항, 전압, 전류등을측정하기위해서는다음그림과같은프로브 (probe) 를멀티미터의전면패널에꼽는다. 통상적으로검은색프로브는전면패널의검은단자 (COM) 에꼽으며, 빨간색프로브는빨간색단자에꼽는다.
More informationMicrosoft PowerPoint - Lesson2.pptx
Computer Engineering g Programming g 2 제 3 장 C 프로그래밍구성요소 Lecturer: JUNBEOM YOO jbyoo@konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() *
More informationPowerPoint Presentation
컴퓨터프로그래밍 Computer Programming 08 포인터기초 목차 1. 포인터변수와선언 2. 간접연산자 * 와포인터연산 3. 포인터형변환과다중포인터 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 3 1. 포인터변수와선언 주소개념 주소 address 메모리공간은 8비트인 1 바이트마다순차적인고유한번호 메모리주소는저장장소인변수이름과함께기억장소를참조하는또다른방법
More information