슬라이드 1

Similar documents
슬라이드 1

슬라이드 1

Week3

10장.key

자바로

PowerPoint 프레젠테이션

gnu-lee-oop-kor-lec10-1-chap10

Microsoft PowerPoint - es-arduino-lecture-03

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

쉽게 풀어쓴 C 프로그래밍

K&R2 Reference Manual 번역본

쉽게 풀어쓴 C 프로그래밍

Microsoft Word doc

데이터 시각화

목차 1부. 보드 운영체제와 MCU 보드의 포트 2부. 전압과 전류 그리고 모터 드라이버 3부. 초음파 센서 4부. BOS Script 프로그래밍 5부. W2R -1 소개

슬라이드 1

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

슬라이드 1

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

KARAAUTO_4¿ù.qxd-ÀÌÆå.ps, page Normalize

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

PCB 설계를 통한 EMC대책

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

BY-FDP-4-70.hwp

PowerPoint 프레젠테이션

Microsoft PowerPoint - 14주차 강의자료

PowerPoint Presentation

슬라이드 1

5장.key

untitled

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

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

PowerPoint 프레젠테이션

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

untitled

Microsoft Word - DCMD-1000 사용자 메뉴얼.docx

PowerPoint 프레젠테이션

Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오.

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

03장.스택.key

untitled

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

Microsoft Word - PEB08_USER_GUIDE.doc

[8051] 강의자료.PDF

PowerPoint 프레젠테이션

UI TASK & KEY EVENT

C프로-3장c03逞풚

Microsoft Word - src.doc

0.1-6

OM2M 기반의 OHP-M2M 오픈소스설치가이드 2015 년 8 월 경북대학교통신프로토콜연구실 최예찬, 강형우 요약 사물인터넷 (Internet of Things: IoT) 이이슈가되면서다양한사

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

Microsoft PowerPoint - Java7.pptx

LIDAR와 영상 Data Fusion에 의한 건물 자동추출

Microsoft PowerPoint - chap12-고급기능.pptx

Spring Boot/JDBC JdbcTemplate/CRUD 예제

PowerPoint 프레젠테이션

09-interface.key

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

untitled

고급 프로그래밍 설계

歯동작원리.PDF

마이크로시스템제작 lecture1. 강의소개및 MultiSIM 선덕한 마이크로시스템 1

Microsoft PowerPoint - chap11-포인터의활용.pptx

C 언어 프로그래밊 과제 풀이

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

HTML5


쉽게 풀어쓴 C 프로그래밍

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

PowerSHAPE 따라하기 Calculate 버튼을 클릭한다. Close 버튼을 눌러 미러 릴리프 페이지를 닫는다. D 화면을 보기 위하여 F 키를 누른다. - 모델이 다음과 같이 보이게 될 것이다. 열매 만들기 Shape Editor를 이용하여 열매를 만들어 보도록

untitled

제품 특징 PC에서 마우스/키보드로 사용 Motion Ring은 사용자의 동작을 인식하는 3D 공간 인식 센서 가 장착되어 있어 정해진 제스처를 사용하여 마우스나 키보드 로 사용할 수 있습니다. - 일반적인 마우스와 키보드 없이 인터넷 웹 페이지를 사용하 거나 프레젠테

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

JMF3_심빈구.PDF

확률 및 분포

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

TViX_Kor.doc

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

C++-¿Ïº®Çؼ³10Àå

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

ez-md+_manual01

RVC Robot Vaccum Cleaner

Let G = (V, E) be a connected, undirected graph with a real-valued weight function w defined on E. Let A be a set of E, possibly empty, that is includ

슬라이드 1

CPX-E-SYS_BES_C_ _ k1

ePapyrus PDF Document

Raspberry Pi 입출력디바이스 II 1 제 05 강 입출력디바이스 II 터치스위치자석스위치움직임감지센서부저모듈 LED Array RGB LED 릴레이모듈초음파센서 ( 거리측정 ) 적외선센서및리모콘 ( 미작성 )

DIB-100_K(90x120)

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

2002년 2학기 자료구조

목차 1 아두이노와이어링 & 코딩 1-1 아두이노초보자를위한 아두이노와이어링과코딩에의한 LED ON OFF 12 Coding_LED_ON_OFF_ 아두이노초보자에게위험스러운 아두이노코딩에의한 LED

( )부록

ePapyrus PDF Document

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 08.다형성

ThisJava ..

2009년2학기 임베디드시스템 응용

PowerPoint 프레젠테이션

Transcription:

프로세싱 & 확장키트 광운대학교로봇학부박광현

프로세싱

개요 3 2001년 MIT 미디어랩 Ben Fry와 Casey Reas 아티스트를위한편리한그래픽작성도구 자바기반 자바스크립트, 파이썬, 안드로이드,... 오픈소스

개요 4 프로세싱 : 프로세싱개발환경 (PDE) 함수모음 문법 커뮤니티 스케치 : 작성된프로그램 스케치북 : 스케치저장폴더

정적스케치 (Static Sketch) 5 line(10, 20, 80, 90); // x1, y1, x2, y2 size(600, 400); // width, height background(255); stroke(100); line(10, 20, 80, 90); background(gray); background(r, g, b); background(#ff7a00); background(0xff7a00);... stroke(gray); stroke(gray, alpha); stroke(r, g, b); stroke(r, g, b, a); stroke(#ff7a00); stroke(0xffff7a00);...

정적스케치 (Static Sketch) 6 size(600, 400); background(255, 122, 0); rect(10, 20, 80, 90); // x, y, width, height size(600, 400); background(255, 122, 0); nostroke(); rect(10, 20, 80, 90); size(600, 400); background(255, 122, 0); stroke(0, 0, 255); fill(255, 0, 0); rect(10, 20, 80, 90); size(600, 400); background(255, 122, 0); stroke(0, 0, 255); strokeweight(4); // pixel fill(255, 0, 0); rect(10, 20, 80, 90); nofill();

정적스케치 (Static Sketch) 7 size(600, 400); background(255, 122, 0); stroke(0, 0, 255); strokeweight(4); fill(255, 0, 0); rect(10, 20, 80, 90, 10); // x, y, width, height, corner size(600, 400); background(255, 122, 0); stroke(0, 0, 255); strokeweight(4); fill(255, 0, 0); rect(10, 20, 80, 90, 10, 20, 30, 40); // x, y, w, h, tl, tr, br, bl

정적스케치 (Static Sketch) 8 size(600, 400); background(255, 122, 0); stroke(0, 0, 255); strokeweight(4); fill(255, 0, 0); ellipse(100, 200, 80, 90); // x, y, width, height size(600, 400); background(255, 122, 0); stroke(0, 0, 255); strokeweight(4); fill(255, 0, 0); triangle(100, 20, 10, 100, 200, 100);// x1, y1, x2, y2, x3, y3 size(600, 400); background(255, 122, 0); stroke(0, 0, 255); strokeweight(4); fill(255, 0, 0); point(100, 200);// x, y

정적스케치 (Static Sketch) 9 size(600, 400); background(255, 122, 0); stroke(0, 0, 255); strokeweight(4); fill(255, 0, 0); quad(10, 20, 80, 90, 100, 200, 10, 100); // x1, y1, x2, y2, x3, y3, x4, y4 size(600, 400); background(255, 122, 0); stroke(0, 0, 255); HALF_PI, PI, QUARTER_PI, TWO_PI strokeweight(4); fill(255, 0, 0); arc(100, 200, 80, 90, 0, HALF_PI); // x, y, width, height, start, stop 라디안 (radian)

기본형태 10

밝기애니메이션 11 size(600, 400); stroke(0, 0, 255); background(255, 122, 0); text("frame: " + framecount, 20, 20); fill(framecount % 256); rect(50, 50, 200, 200); 0 부터시작 draw() 호출때마다 1 씩증가

밝기애니메이션 12 size(600, 400); stroke(0, 0, 255); background(255, 122, 0); text("frame: " + framecount, 20, 20); pushstyle(); fill(framecount % 256); rect(50, 50, 200, 200); popstyle();

직선예술 13 size(600, 400); background(255); stroke(random(256), random(256), random(256)); line(random(width), random(height), random(width), random(height)); random(end); random(start, end); end 는포함안됨

마우스 14 size(600, 400); background(255, 122, 0); stroke(0, 0, 255); line(200, 200, mousex, mousey); size(600, 400); stroke(0, 0, 255); background(255, 122, 0); line(200, 200, mousex, mousey);

마우스 15 size(600, 400); stroke(0, 0, 255); line(200, 200, mousex, mousey); void mousepressed() { background(255, 122, 0);

마우스 16 size(600, 400); stroke(0, 0, 255); line(200, 200, mousex, mousey); void mousepressed() { if(mousebutton == LEFT) background(255, 122, 0); else background(0, 128, 0);

마우스 17 mousebutton mouseclicked() mousedragged() mousemoved() mousepressed() mousereleased() mousewheel() mousex mousey pmousex pmousey

마우스 18 size(600, 400); background(255, 122, 0); stroke(0, 0, 255); void mousedragged() { line(pmousex, pmousey, mousex, mousey);

마우스 19 size(600, 400); background(255, 122, 0); stroke(0, 0, 255); background(255); fill(0, 255, 0); rect(mousex, mousey, 30, 30); size(600, 400); background(255, 122, 0); stroke(0, 0, 255); framerate(5); background(255); fill(0, 255, 0); rect(mousex, mousey, 30, 30);

키보드 20 size(600, 400); stroke(0, 0, 255); line(200, 200, mousex, mousey); void keypressed() { if(key == a ) background(255, 122, 0); else background(0, 128, 0);

키보드 21 key keycode keypressed() keypressed keyreleased() keytyped()

화면저장 22 size(600, 400); stroke(0, 0, 255); line(200, 200, mousex, mousey); void keypressed() { if(key == a ) saveframe("a.png"); else background(0, 128, 0);

응용프로그램만들기 23 파일 > 어플리케이션으로내보내기

햄스터

라이브러리사용 25 스케치 > 내부라이브러리... > hamster

기본동작 26 import org.roboid.robot.*; import processing.hamster.*; Hamster hamster; hamster = new Hamster(this); // don't forget 'draw' createhamster() 로변경예정 run() 으로변경예정 void control() { // move forward hamster.write(hamster.left_wheel, 50); hamster.write(hamster.right_wheel, 50); delay(500); // ms // move backward hamster.write(hamster.left_wheel, -50); hamster.write(hamster.right_wheel, -50); delay(500); // stop hamster.write(hamster.left_wheel, 0); hamster.write(hamster.right_wheel, 0); // disconnect hamster.dispose();

LED 켜기 import org.roboid.robot.*; import processing.hamster.*; 27 Hamster hamster; hamster = new Hamster(this); // dont' forget 'draw' void control() { hamster.write(hamster.left_led, Hamster.LED_RED); hamster.write(hamster.right_led, Hamster.LED_GREEN); delay(500); hamster.write(hamster.left_led, Hamster.LED_OFF); hamster.write(hamster.right_led, Hamster.LED_OFF); // disconnect hamster.dispose();

반복 import org.roboid.robot.*; import processing.hamster.*; 28 Hamster hamster; hamster = new Hamster(this); void control() { for(int i = 0; i < 10; ++i) { hamster.write(hamster.left_wheel, 50); hamster.write(hamster.right_wheel, 50); delay(500); hamster.write(hamster.left_wheel, -50); hamster.write(hamster.right_wheel, -50); delay(500); hamster.dispose();

반복 import org.roboid.robot.*; import processing.hamster.*; 29 Hamster hamster; hamster = new Hamster(this); void repeat() { hamster.write(hamster.left_wheel, 50); hamster.write(hamster.right_wheel, 50); delay(500); hamster.write(hamster.left_wheel, -50); hamster.write(hamster.right_wheel, -50); delay(500);

근접센서 import org.roboid.robot.*; import processing.hamster.*; 30 Hamster hamster; hamster = new Hamster(this); void repeat() { int proximity = hamster.read(hamster.left_proximity); if(proximity < 50) { hamster.write(hamster.left_wheel, 50); hamster.write(hamster.right_wheel, 50); else { hamster.write(hamster.left_wheel, -50); hamster.write(hamster.right_wheel, -50);

라인트레이서 import org.roboid.robot.*; import processing.hamster.*; 31 Hamster hamster; hamster = new Hamster(this); void repeat() { int leftfloor = hamster.read(hamster.left_floor); int rightfloor = hamster.read(hamster.right_floor); int diff = leftfloor - rightfloor; hamster.write(hamster.left_wheel, int(30 + diff * 0.4)); hamster.write(hamster.right_wheel, int(30 - diff * 0.4));

멀티로봇 import org.roboid.robot.*; import processing.hamster.*; 32 Hamster hamster1; Hamster hamster2; hamster1 = new Hamster(this); hamster2 = new Hamster(this); void repeat() { hamster1.write(hamster.left_wheel, 50); hamster1.write(hamster.right_wheel, 50); hamster2.write(hamster.left_wheel, -50); hamster2.write(hamster.right_wheel, 50); delay(500); hamster1.write(hamster.left_wheel, -50); hamster1.write(hamster.right_wheel, -50); hamster2.write(hamster.left_wheel, 50); hamster2.write(hamster.right_wheel, -50); delay(500);

햄스터 + 그래픽

손따라가기 1/2 import org.roboid.robot.*; import processing.hamster.*; 34 Hamster hamster; int leftproximity; int rightproximity; size(200,200); nostroke(); hamster = new Hamster(this); background(255); fill(0); text("left: " + leftproximity, 28, 185); text("right: " + rightproximity, 125, 185); // draw bar graph rect(30, 20, 30, 150); rect(130, 20, 30, 150); fill(255); rect(30, 20, 30, leftproximity * 2); rect(130, 20, 30, rightproximity * 2);

손따라가기 2/2 35 void repeat() { leftproximity = hamster.read(hamster.left_proximity); rightproximity = hamster.read(hamster.right_proximity); // left wheel if(leftproximity > 15) { hamster.write(hamster.left_wheel, (40 - leftproximity) * 4); else { hamster.write(hamster.left_wheel, 0); // right wheel if(rightproximity > 15) { hamster.write(hamster.right_wheel, (40 - rightproximity) * 4); else { hamster.write(hamster.right_wheel, 0);

마우스조종기 1/2 import org.roboid.robot.*; import processing.hamster.*; 36 Hamster hamster; int centerx, centery; size(200,200); centerx = 100; centery = 100; hamster = new Hamster(this); background(255); fill(0); text("press a button to move..", 10, 16); ellipse(100,100, 30, 30); line(100,100, mousex, mousey);

마우스조종기 2/2 37 void repeat() { int dx = centerx - mousex; int dy = centery - mousey; hamster.write(hamster.left_wheel, 0); hamster.write(hamster.right_wheel, 0); if(!mousepressed) return; if(abs(dx) > 15 abs(dy) > 15) { if(dy < 0) { hamster.write(hamster.left_wheel, dy / 2 + dx / 2); hamster.write(hamster.right_wheel, dy / 2 - dx / 2); else { hamster.write(hamster.left_wheel, dy / 2 - dx / 2); hamster.write(hamster.right_wheel, dy / 2 + dx / 2);

키보드조종기 import processing.hamster.*; import org.roboid.robot.*; Hamster hamster; hamster = new Hamster(this); 38 void keypressed() { if(key == CODED) { switch(keycode) { case UP: hamster.write(hamster.left_wheel, 30); hamster.write(hamster.right_wheel, 30); break; case DOWN: hamster.write(hamster.left_wheel, -30); hamster.write(hamster.right_wheel, -30); break; case LEFT: hamster.write(hamster.left_wheel, -30); hamster.write(hamster.right_wheel, 30); break; case RIGHT: hamster.write(hamster.left_wheel, 30); hamster.write(hamster.right_wheel, -30); break; else if(key == ' ') { hamster.write(hamster.left_wheel, 0); hamster.write(hamster.right_wheel, 0);

확장보드

확장보드 40

외부확장포트 41 보조전원단자 3.7V 리튬폴리머전지 외부입출력단자 ( 포트 A, 포트 B) 디지털입력, ADC 입력디지털출력, 아날로그 (PWM) 출력아날로그서보제어출력

핀 / 소켓배치살펴보기 42 VCC GND 포트 A 포트 B 포트 A 포트 B

디지털입력 : 버튼을누르면삐소리가나요 43 저항값읽는방법

디지털입력 : 버튼을누르면삐소리가나요 44 PORT B PORT B PUSH BUTTON GND PUSH BUTTON GND 플로팅상태

디지털입력 : 버튼을누르면삐소리가나요 45 PORT B VCC PUSH BUTTON GND PORT B VCC PUSH BUTTON GND

디지털입력 : 버튼을누르면삐소리가나요 46 풀업저항 PORT B VCC 220 PUSH BUTTON GND PORT B VCC 220 PUSH BUTTON GND

디지털입력 : 버튼을누르면삐소리가나요 47 풀다운저항 PORT B VCC PUSH BUTTON 220 GND PORT B VCC PUSH BUTTON 220 GND

디지털입력 : 버튼을누르면삐소리가나요 48 import processing.hamster.*; import org.roboid.robot.*; Hamster hamster; hamster = new Hamster(this); hamster.write(hamster.io_mode_b, Hamster.IO_MODE_DI); void repeat() { if(hamster.read(hamster.input_b) == 0) { hamster.write(hamster.buzzer, 1000); else { hamster.write(hamster.buzzer, 0);

디지털출력 : 반짝반짝 LED 를깜박여요 Active High 49 Active Low

디지털출력 : 반짝반짝 LED 를깜박여요 50 import processing.hamster.*; import org.roboid.robot.*; Hamster hamster; hamster = new Hamster(this); hamster.write(hamster.io_mode_a, Hamster.IO_MODE_DO); void repeat() { hamster.write(hamster.output_a, 1); delay(1000); hamster.write(hamster.output_a, 0); delay(1000);

아날로그입력 : 포텐셔미터를돌리면음높이가달라져요 51 import processing.hamster.*; import org.roboid.robot.*; Hamster hamster; hamster = new Hamster(this); hamster.write(hamster.io_mode_a, Hamster.IO_MODE_ADC); void repeat() { int hz = hamster.read(hamster.input_a) * 10; hamster.write(hamster.buzzer, hz);

아날로그입력 : 빛을따라움직여요 52 import processing.hamster.*; import org.roboid.robot.*; Hamster hamster; hamster = new Hamster(this); hamster.write(hamster.io_mode_a, Hamster.IO_MODE_ADC); void repeat() { if(hamster.read(hamster.light) > 180) { hamster.write(hamster.left_wheel, 30); hamster.write(hamster.right_wheel, 30); else if(hamster.read(hamster.input_a) > 100) { hamster.write(hamster.left_wheel, -30); hamster.write(hamster.right_wheel, -30); else { hamster.write(hamster.left_wheel, 0); hamster.write(hamster.right_wheel, 0);

PWM 출력 : LED 촛불이바람에흔들려요 53 import processing.hamster.*; import org.roboid.robot.*; Hamster hamster; hamster = new Hamster(this); hamster.write(hamster.io_mode_a, Hamster.IO_MODE_PWM); hamster.write(hamster.io_mode_b, Hamster.IO_MODE_PWM); void repeat() { hamster.write(hamster.output_a, int(random(100, 256))); hamster.write(hamster.output_b, int(random(100, 256))); delay(int(random(0, 100)));

서보출력 : 햄스터로봇에게꼬리가생겼어요 import processing.hamster.*; import org.roboid.robot.*; 54 Hamster hamster; hamster = new Hamster(this); hamster.write(hamster.io_mode_a, Hamster.IO_MODE_SERVO); void repeat() { hamster.write(hamster.output_a, 10); delay(1000); hamster.write(hamster.output_a, 180); delay(1000);

미션 55 햄스터조종기 (2 인 1 조 ) 첫번째햄스터의포텐셔미터를돌려서 두번째햄스터를조종하기 두번째햄스터는방향에따라 LED 깜박이기

수고하셨습니다. http://hamster.school akaii@kw.ac.kr