Arduino- 서보모터 서울과학기술대학교기계시스템디자인공학과 교수김성환

Similar documents
Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

<4D F736F F F696E74202D E6F312D BCB3C4A12C20C4DAB5F920B1E2C3CA2C20BDC3B8AEBEF3C5EBBDC5>


Microsoft PowerPoint - es-arduino-lecture-03

Motor

<4D F736F F F696E74202D20325FBEC6B5CEC0CCB3EB20B1E2C3CABDC3C7E82E BC8A3C8AF20B8F0B5E55D>

API 매뉴얼

Microsoft PowerPoint - chap06-2pointer.ppt

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

Microsoft Word - PLC제어응용-2차시.doc

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

Microsoft PowerPoint - ch07 - 포인터 pm0415

RealDSP UT 프로그램 메뉴얼

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - [2009] 02.pptx

Microsoft Word - MAI-ISP-STK500_매뉴얼_Ver25.docx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Example: LED flashlight

Microsoft PowerPoint - chap11.ppt [호환 모드]

졸업작품 2 차보고서 Graduation Project 내자전거를지켜줘! 이름학번연락처이메일 이주희 김민선 지도교수 :

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

SBR-100S User Manual

BMP 파일 처리

adfasdfasfdasfasfadf

PowerPoint Presentation

T100MD+

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

ISP and CodeVisionAVR C Compiler.hwp

슬라이드 1

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

C++ Programming

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft Word doc

Microsoft Word - Ahram_ISP_V15_Manual_V20.doc

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap01-C언어개요.pptx

02장.배열과 클래스

Microsoft PowerPoint - es-arduino-lecture-09

슬라이드 제목 없음

Microsoft Word - PEB08_USER_GUIDE.doc

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

유니티 변수-함수.key

차시 AS_02 대상 교육주제아두이노 LED 및버튼제어프로젝트교육시간 120 분 1. 아두이노를이용하여 LED 를제어할수있다. 교육목표 2. 아두이노를이용하여삼색 LED 를제어할수있다. 3. 아두이노에서버튼입력을수행하여프로그램에연동할수있다. 장비류는미리배분하고, 재료는

금오공대 컴퓨터공학전공 강의자료

뉴티씨 (NEWTC) ATmega8 교육용모듈 (Model : AM-8PL ) 메뉴얼 ( 주 ) 뉴티씨 ( NEWTC ) 1. ATmega8 모듈 (AM-8PL) 소개 ATmega8 칩을

< 제누이노스타트키트 > 사용설명서 목차 1. Arduino IDE 설치하기 2. Genuino 연결및 Arduino IDE 셋팅하기 3. 센서설명및연결도, 예제소스 1

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - Java7.pptx

1 1. INTRODUCTION 2 2. DOWNLOAD Windows Desktop & Server Max OS X, Linux, Windows CE 2 3. API REFERENCE CAN_OpenVcp CAN_Op

11장 포인터

Install stm32cubemx and st-link utility

Microsoft PowerPoint - C++ 5 .pptx

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

초판 1쇄발행 2014년 5월 30일지은이허경용펴낸이장성두펴낸곳제이펍출판신고 2009년 11월 10일제 호주소경기도파주시문발로 141 뮤즈빌딩 403호전화 / 팩스 홈페이지

OCW_C언어 기초

슬라이드 1

untitled

시프트 레지스터 Shift Resistor 자, 이제 LED MATRIX 8x8 Board를 마이크로컨트롤러에 연결된 3개의 선으 로 제어해 보자. 이는 마이크로컨트롤러의 포트를 확장함과 동시에 프로그램 으로 제어를 더 쉽게 한다는 장점이 있다. 물론 포트를 절약하게

Microsoft Word - LKP-RTD 사용자 설명서

KEY 디바이스 드라이버

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

아두이노로만드는인형뽑기장치

Studuino소프트웨어 설치

UI TASK & KEY EVENT

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

Cortex-M 아두이노 프로그래밍 Cortex-M 아두이노 프로그래밍 4/2/2016 Written by Steve AHN 1/23

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

JDK이클립스

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

Microsoft PowerPoint - chap-03.pptx

K&R2 Reference Manual 번역본

hd1300_k_v1r2_Final_.PDF

Microsoft PowerPoint - 04-UDP Programming.ppt

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

Microsoft PowerPoint - additional01.ppt [호환 모드]

PowerPoint Presentation

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - Lesson2.pptx

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

Transcription:

Arduino- 서보모터 2017.11.25 서울과학기술대학교기계시스템디자인공학과 교수김성환

1. Arduino 란? (1) 아두이노 (Arduino) 는오픈소스를기반으로한단일보드마이크로컨트롤러. AVR 기반. (2) 가장큰장점은마이크로컨트롤러를쉽게동작시킬수있다는것. 일반적인번거로운과정을피하고, 컴파일된펌웨어를 USB를통해쉽게업로드. (3) 저렴하고, 윈도를비롯해맥 OS X, 리눅스와같은여러 OS의통합환경 (IDE) 을모두지원. (4) 아두이노보드의회로도가 CCL에따라공개. 심지어누구나직접보드를만들고수정가능. (5) 다양한주변장치가공급되어, 초보자도납땜없이구성가능. (6) 공식홈페이지 : http://arduino.cc/en/main/homepage (7) 아두이노제품구입처 공식홈페이지에서제시하는공식판매처 Plug House MakeZone ArtRobot Eleparts JK Electronics Hanjindata INIPRO Keytronics Lab Co. Segyung Britestone SAMPLE Electronics VCTEC Korea RobotScienceMall 추천판매처메카솔루션 : http://www.mechasolution.com/ 아트로봇 : www.artrobot.co.kr 엘레파츠 : www.eleparts.co.kr 디바이스마트 : www.devicemart.co.kr (7) 비공식참고사이트들아두이노스토리 : http://cafe.naver.com/arduinostory MPU CAFE : http://cafe.naver.com/mpucafe 전자공작 : http://cafe.naver.com/circuitsmanual - 2 -

당근이의 AVR 갖고놀기 : http://cafe.naver.com/carroty SPARKFUN : http://www.sparkfun.com/ Afrotech : http://afrotechmods.com/index.htm 로보밥얼렁뚱땅로보틱스연구소 : http://robobob.tistory.com/ Make: Korea : http://www.make.co.kr/ Instructables : http://www.instructables.com/tag/type-id/category-technology/ Bildr.blog : http://bildr.org/ 2. 아두이노하드웨어의사양 (1) 아두이노우노의구조 (2) 사양 항목 규격 항목 규격 마이크로컨트롤러 ATmega328 DC 전류량 / 입력-출력핀 40 ma 동작전압 5 V 플래시메모리 32 kb ( 부트로더 0.5 kb) 입력전압 7~12 V SRAM 2 kb 디지털입출력핀 14개 (6개는 PWM 출력 ) EEPROM 1 kb 아날로그입력-출력핀 6개 클럭속도 16 MHz 3. 통합개발환경설치 (IDE : Intergrated Development Environment) (1) IDE의역할 - PC에설치해야하는소프트웨어 - 소스를편집하여다운로드할수있게해주는기능. - 시리얼통신창을포함하고있음 (2) 프로그램다운로드 - 홈페이지에접속 : http://arduino.cc/en/main/software - 설치가필요한버전과필요없는버전이있음. 설치없는버전이편리. 아래그림처럼다운로드. - 3 -

- 적절한폴더에압축을풀면완료. 실행파일이있는확인. 실행파일 4. 아두이노연결후 COMM 드라이버설치 (1) 아두이노와 PC의연결 - 아두이노와 PC는물리적으로는 USB 단자를통해연결 - 하지만소프트웨어에서는이를논리적시리얼포트로인식하여통신하도록되어있음 - USB를시리얼 COM 포트로인식하게하려면드라이버를설치해야한다. (2) COM 드라이버의설치방법 - 아두이노와 PC 를 USB 케이블로연결한다. 연결하는순간아두이노에전원이공급된다. - 장치관리자에서다음그림과같이장치설치 - 4 -

정해진폴더에서찾기 - 설치가완료되면아두이노와의 USB 연결이 COM 으로인식. 아래경우는 COM3 (COM 번호는상황마다다르며확인해두어야함.) 5. IDE 실행및환경설정 (1) 아이콘을더블클릭하여 IDE 실행 (2) 사용하는종류의보드를설정 - 우리는다음좌측그림처럼 도구 보드 Arduino Uno 로선택 (3) 통신포트를설정 - 드라이버에서설치된 COM3 로선택 ( 경우마다맞춰서설정해야함 ) - 5 -

보드의설정 통신포트의설정 (4) 사용언어설정 - 파일 환경설정에서사용할언어설정 6. IDE 환경 확인 (Verify) 업로드 (Upload) 새파일 (New) 열기 (Open) 저장 (Save) Serial Monitor - 6 -

(1) 툴바의기능 1 확인 (Verify) : 프로그램을컴파일 2 업로드 (Upload) : 아두이노로컴파일된프로그램을업로드 3 새파일 (New) : 비어있는새로운프로그램을생성 4 열기 (Open) : 저장장치에저장된프로그램을연다 5 저장 (Save) : 현재프로그램을저장장치로저장. 필요하면이름을정하기를요구한다 6 Serial Monitor : 시리얼창이별도로생성된다. 이창을통해아두이노가시리얼통신을통해주고받는데이터를확인할수있다. (2) 프로그램 - 아두이노에서소스프로그램은특별히 스케치 라고불리운다. - 소스를저장하면 ".ino" 의확장자를가진다. 7. Blink 프로그램 (1) 프로그램의목적 - 디지털접점 13번에연결된내장 LED를깜빡이기 - 하드웨어와소프트웨어가정상인지확인할수있음 (2) 입력및실행 - 다음과같은프로그램 ( 스케치 ) 을입력 - 확인 ( ) 눌러컴파일후, 업로드 ( ) 눌러업로드 - 13번 LED가빠르게깜박이는것을확인한다. 13 번 LED ON Lamp int led = 13; void setup() { pinmode(led, OUTPUT); void loop() { digitalwrite(led, HIGH); delay(100); digitalwrite(led, LOW); delay(100); - 7 -

2. Arduino- 서보모터배선 2. Arduino- 서보모터배선 1. 브레드보드 ( 빵판 : Breadboard) (1) 브레드보드란 - 전자회로의 ( 일반적으로임시적인 ) 시제품을만드는데사용하는재사용할수있는무땜납장치. (2) 브레드보드의외형 - 8 x 5.5 cm 의브레드보드는다음과같은형태를가짐. (*) 비공식참고사이트 : http://binworld.kr/13 2. 다음과같이배선한다 (1) 서보모터의배선 - 흑색 : GND - 적색 : 5V - 황색 : 신호선 [3, 6, 9 번 ] - 8 -

2. Arduino- 서보모터배선 (2) 다음과같은프로그램을작성하여다운로드한다. ServoSerialTest #include <Servo.h> const char clf=10; Servo m1, m2, m3; String gbuff; void setup() { m1.attach(3); m2.attach(6); m3.attach(9); Serial.begin(9600); Serial.setTimeout(0); void loop() { // 데이터없으면리턴 if(serial.available() <= 0) return; // 수신내용버퍼에추가 gbuff += Serial.readString(); // M ~ LF 찾기 int ipos0 = gbuff.indexof('m'); if(ipos0 < 0) return; int ipos1 = gbuff.indexof(clf, ipos0); if(ipos1 < 0) return; // LF 빼고내부만얻기 String st = gbuff.substring(ipos0, ipos1); else if(st.substring(0, 3) == "M2,") { String strdec = st.substring(3); int deg = StrDecToValue(strDec); m2.write(deg); Serial.println(deg); else if(st.substring(0, 3) == "M3,") { String strdec = st.substring(3); int deg = StrDecToValue(strDec); m3.write(deg); Serial.println(deg); //------------ user function ----------- int StrDecToValue(String strdec) { char buf[10]; strdec.tochararray(buf, 10); int ival = strtoul(buf, NULL, 10); return ival; // gbuff 업데이트 gbuff = gbuff.substring(ipos1 + 1); //================================= // 모터포지션을받아서모터를세팅 //================================= if (st.substring(0, 3) == "M1,") { String strdec = st.substring(3); int deg = StrDecToValue(strDec); m1.write(deg); Serial.println(deg); - 9 -

2. Arduino- 서보모터배선 3. 시리얼로명령을전송 (1) 다음과같이시리얼창을띄움 - 옵션을맞춘다 - 새줄 / 9600 보드레이트 (2) 명령을입력한다. - Ma,ddd 의형식으로입력 - ( 예 ) M1,0 : 1번모터를 0도위치로 M1,30 : 1 번모터를 30도위치로 M2,110 : 2번모터를 110도위치로 - 10 -

3. Arduino Language Reference 3. Arduino Language Reference 1. Arduino Language (1) C++ 에기반하고있으므로 C++ 와대단히유사하다. (2) 프로그램언어, 내장함수, 디지털및아날로그입출력함수, 유용한클래스들을지원한다. 프로그램언어자료형, 연산자, 제어문 (C++ 와매우유사 ) 내장함수디지털및아날로그입출력함수복잡한작업을손쉽게해주는유용한클래스 수학함수, 문자배열조작함수등 digitialread, digitalwrite, analogread, analogwrite 등 String, Serial, Servo 등 (3) 프로그래밍을위한레퍼런스페이지 - http://arduino.cc/en/reference/homepage 2. Structure 함수 형식 1 void setup( ) 2 void loop( ) 설명 - 전원이켜지거나리셋버튼이눌리웠을때한번실행됨 - 설정할내용을넣으면좋음 - 없으면안됨 - 전원이들어와있는동안지속적으로호출됨. - 없으면안됨 3. Digital I/O 1 2 3 형식 void pinmode(pin, mode) void digitalwrite(pin, value) int digitalread(pin) 설명 - pin : 핀번호 - mode : INPUT, OUTPUT, INPUT_PULLUP - digital 핀의용도를설정. 디폴트는 INPUT - pin : 핀번호 - value : HIGH or LOW - 출력핀에출력값설정 - pin : 핀번호 - return : HIGH or LOW - 입력핀의입력값읽기 - 11 -

3. Arduino Language Reference 4. Analog I/O 1 2 3 형식 int analogread(pin) void analogwrite(pin, value) void analogreference(type) 설명 - pin : 핀번호 (A0~A5) - return : 0~1023 (5V를 10bit로변환 ) - pin 설정없이바로사용가능 - pin : 핀번호 (~ 이붙은핀. 3,5,6,9,10,11) - value : 0 ~ 255 - PWM ( 디지털핀을통해아날로그출력 ) - input range와 resolution을변경 - 자세한것은홈페이지참조 5. Serial 클래스 1 2 3 4 5 6 7 8 9 10 형식 void Serial.begin(speed) void Serial.end( ) int Serial.available( ) long Serial.print(val) Serial.print(val, format) long Serial.println(val) Serial.println(val, format) byte Serial.write(val) Serial.write(str) Serial.write(buf, len) int Serial.read( ) int Serial.parseInt( ) float Serial.parseFloat( ) String Serial.readString( ) String Serial.readStringUntil(char) 설명 - speed : baud rate. 9600, 19200, 38400, 57600 등 - 통신시작. 보통 setup( ) 에서호출 - 통신종료 - 읽을수있는데이터의 byte 수반환. 없으면 0 리턴 - 도착한통신이있는지판단하는데사용 - 데이터를송신. 대부분스트링으로바꾸어전송 - val : int, double, String, char 등 - format : 정수일때는진수, 실수일때는자리수 - println( ) 함수는뒤에 char(13)+char(10) 을붙임 - 이진데이터혹은이진데이터열을전송 - write(2) : STX를전송. write(65) : "A" 를전송 - write("20") : 20 을전송 - 첫번째바이트를읽어리턴. 데이터없으면 -1 리턴 - ASCII 코드가얻어짐 - 다음의유효한정수를찾아리턴 - ( 예 ),123,456 => 100이리턴됨 - 못찾으면 1초후 0 리턴 (Serial.setTimeout() 에서조정가능 ) - 자세한내용은도움말참조 - 정해진시간까지읽어진스트링을리턴 - 시간은 Serial.setTimeout() 에서설정. 0으로설정가능 - char를만날때까지를읽어서반환. - 정해진시간까지못읽으면함수가종료됨 - 12 -

3. Arduino Language Reference 6. String 클래스 형식 설명 1 charat(n) String 오브젝트의 n번째문자를리턴 2 compareto(s2) String 오브젝트를지정된 String S2 오브젝트와비교 3 concat(s2) String 오브젝트와 S2 오브젝트가결합된새 String 오브젝트를리턴 4 endswith(s2) String 오브젝트가 S2 오브젝트의문자들로끝나면 true를리턴 5 equals(s2) String 오브젝트가 S2 오브젝트와정확히일치하면 ( 대소문자구분 ) true를리턴 6 equalsignorecase(s2) equals와같지만대소문자를구분하지않음 7 getbytes(buffer, len) len에해당하는개수의문자를제공된바이트버퍼에복사 8 indexof(s) 제공된 String 오브젝트 ( 또는문자 ) 의인덱스를리턴하며, 없으면 1을리턴 9 lastindexof(s) indexof와같지만 String 오브젝트의끝에서시작된다는점이다름 10 length( ) String 오브젝트의문자수를리턴한다. 11 replace(a, B) String 오브젝트 ( 또는문자 ) A의모든인스턴스를 String 오브젝트 ( 또는문자 ) B로바꿈 12 setcharat(index, c) 문자 c를 String 오브젝트의지정된위치 (index) 에저장 13 startswith(s2) String 오브젝트가 S2 오브젝트의문자들로시작되면 true를리턴 14 substring(index) String 오브젝트의지정된위치 (index) 부터마지막까지의문자로구성된 String 오브젝트를리턴 15 substring(index, to) 위함수와같지만 to 앞의문자까지만하위문자열에포함된다는점이다름 16 tochararray(buffer, len) String 오브젝트의문자중에서최대 len개의문자를제공된버퍼에복사 17 toint( ) String 오브젝트에있는숫자의정수값을리턴 18 tolowercase( ) 모든문자를소문자로변환한 String 오브젝트를리턴 19 touppercase( ) 모든문자를대문자로변환한 String 오브젝트를리턴 20 trim( ) 선행및후행공백을모두제거한 String 오브젝트를리턴 - 13 -