슬라이드 1

Similar documents
슬라이드 1

슬라이드 1

Week3

10장.key

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

WS12. Security

K&R2 Reference Manual 번역본

자바로

Microsoft PowerPoint - es-arduino-lecture-03

PowerPoint 프레젠테이션

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

쉽게 풀어쓴 C 프로그래밍

Microsoft Word doc

ÀüÀÚÇö¹Ì°æ-Áß±Þ

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

PowerPoint 프레젠테이션

데이터 시각화

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

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

03장.스택.key

PCB 설계를 통한 EMC대책

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

BY-FDP-4-70.hwp

PowerPoint Presentation

Microsoft PowerPoint - 14주차 강의자료

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

1

5장.key

untitled

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

MAGIC-6004M_K

PowerPoint 프레젠테이션

untitled

untitled

슬라이드 1

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

Microsoft Word - src.doc

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

Microsoft Word - PEB08_USER_GUIDE.doc

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

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

C프로-3장c03逞풚

UI TASK & KEY EVENT

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

Lab10

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

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

Microsoft PowerPoint - chap12-고급기능.pptx

PowerPoint 프레젠테이션

Spring Boot/JDBC JdbcTemplate/CRUD 예제

09-interface.key

LCD Monitor

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

歯동작원리.PDF

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

PowerPoint Presentation

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

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

[8051] 강의자료.PDF

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

KMC.xlsm

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

untitled

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

확률 및 분포

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

TViX_Kor.doc

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

PowerPoint Presentation

ez-md+_manual01

chap8.PDF

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

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

DIB-100_K(90x120)

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

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

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

PowerPoint 프레젠테이션

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

UI TASK & KEY EVENT

ThisJava ..

WISHBONE System-on-Chip Interconnection Architecture for Portable IP Cores

(Microsoft PowerPoint - \270\266\300\314\305\251\267\316\304\250USB_Host_Device_\272\316\306\256\267\316\264\365\275\307\275\300_Philip.ppt)

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

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

05-class.key

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 3. FindBugs ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 4. ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ

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

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

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Transcription:

프로세싱 (Processing) 광운대학교로봇학부박광현

기초

개요 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); background(r, g, b); background(r, g, b, a); background(#ff7a00); background(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);

정적스케치 (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); strokeweight(4); fill(255, 0, 0); arc(100, 200, 80, 90, 0, HALF_PI); // x, y, width, height, start, stop

기본형태 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);

밝기애니메이션 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));

색상표 14 size(600, 400); background(255); nostroke(); colormode(hsb, 120); rectmode(center); translate(120, 30); for(int i = 0; i < 12; ++i) { fill(i * 10, 100, 119, 60); rect(0, 0, 30, 30); rotate(radians(30)); translate(40, 0);

마우스 15 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);

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

마우스 17 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);

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

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

마우스 20 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);

키보드 21 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);

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

화면저장 23 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);

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

햄스터

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

기본동작 import org.roboid.robot.*; import processing.hamster.*; Hamster hamster; hamster = new Hamster(this); // don't forget 'draw' 27 void control() { // move forward hamster.write(hamster.left_wheel, 50); hamster.write(hamster.right_wheel, 50); delay(500); // 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.*; 28 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.*; 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); hamster.write(hamster.left_wheel, -50); hamster.write(hamster.right_wheel, 50); delay(500);

근접센서 import org.roboid.robot.*; import processing.hamster.*; 30 double note; new Hamster(this); void execute(robot hamster) { int proximity = hamster.read(hamster.left_proximity); if(proximity < 10) proximity = 0; note = (note * 9 + proximity) / 10; hamster.write(hamster.note, (int)note);

햄스터 + 그래픽

손따라가기 1/2 import org.roboid.robot.*; import processing.hamster.*; 32 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); leftproximity = hamster.read(hamster.left_proximity); rightproximity = hamster.read(hamster.right_proximity); rect(30, 20, 30, leftproximity * 2); rect(130, 20, 30, rightproximity * 2);

손따라가기 2/2 33 void execute(robot hamster) { // 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.*; 34 int centerx, centery; size(200,200); new Hamster(this); centerx = 100; centery = 100; background(255); fill(0); text("press a button to move..", 10, 16); ellipse(100,100, 30, 30); line(100,100, mousex, mousey);

마우스조종기 2/2 35 void execute(robot hamster) { 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 = new Hamster(this); 36 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);

확장보드

확장보드 38

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

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

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

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

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

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

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

디지털입력 : 버튼을누르면삐소리가나요 46 import processing.hamster.*; import org.roboid.robot.*; Hamster hamster = new Hamster(this); hamster.write(hamster.io_mode_b, Hamster.IO_MODE_DI); void execute(robot hamster) { if(hamster.read(hamster.input_b) == 0) { hamster.write(hamster.buzzer, 1000); else { hamster.write(hamster.buzzer, 0); 추가활동 버튼을누르면햄스터로봇의 LED 에불이켜지고손을떼면꺼지도록해봅시다. 햄스터로봇이앞으로달려가다가버튼을누르면정지하도록해봅시다.

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

디지털출력 : 반짝반짝 LED 를깜박여요 48 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); 추가활동앞으로달려가는햄스터로봇의앞을손으로막으면빨간색 LED 를깜박이면서뒤로후진하도록해봅시다.

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

아날로그입력 : 빛을따라움직여요 50 import processing.hamster.*; import org.roboid.robot.*; Hamster hamster = new Hamster(this); hamster.write(hamster.io_mode_a, Hamster.IO_MODE_ADC); void execute(robot hamster) { 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) > 180) { 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 촛불이바람에흔들려요 51 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.*; 52 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);

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