다운로드 교육자료 문제해결 레퍼런스 구입방법

교육 자료 : 프로세싱 : 애니메이션

기본 형태 만들기
지금까지 작성한 코드와 같은 방식을 정적 스케치(Static Sketch)라고 합니다. 화면의 그림이 변하지 않는다는 의미입니다. 이제 화면의 그림이 시간에 따라 변하도록 해봅시다. 코드의 기본 형태는 다음과 같습니다.

void setup() {
}

void draw() {
}

색상 애니메이션
프로세싱의 frameCount 변수는 현재 프레임 번호를 나타냅니다. 1부터 시작하여 draw() 함수가 호출될 때마다 1씩 증가합니다.

frameCount를 256으로 나눈 나머지는 0부터 255까지의 값을 가지는데 도형을 채우는 색상의 빨간색 성분으로 사용하도록 합시다.

void setup() {
    size(600, 400);
    stroke(0, 0, 255);
    strokeWeight(4);
}

void draw() {
    background(255, 122, 0);
    text("frame: " + frameCount, 20, 20);
    fill(frameCount % 256, 0, 0);
    rect(50, 50, 300, 200);
}

fill() 함수에 의해 글자 색도 변하게 되는데 글자 색은 그대로 두고 도형의 내부 색상만 변하도록 해봅시다.
pushStyle() 함수는 현재 스타일(색상, 선의 두께, 글자 크기 등)을 저장합니다. popStyle() 함수는 저장된 스타일로 되돌아 갑니다.

void setup() {
    size(600, 400);
    stroke(0, 0, 255);
    strokeWeight(4);
}

void draw() {
    background(255, 122, 0);
    text("frame: " + frameCount, 20, 20);
    pushStyle();
    fill(frameCount % 256, 0, 0);
    rect(50, 50, 300, 200);
    popStyle();
}
직선 예술
random(low, high) 함수는 low부터 high까지(high는 포함되지 않음)의 무작위 수를 float형으로 반환합니다. random(high)와 같이 값을 하나만 입력하면 0부터 high까지(high는 포함되지 않음)의 무작위 수를 float형으로 반환합니다.

프로세싱의 width 변수는 현재 창의 폭, height 변수는 현재 창의 높이를 나타냅니다.

random(255)를 호출하면 0부터 255까지(255는 제외)의 무작위 수가 반환되기 때문에 색상 값으로 사용합시다. 선의 좌표는 창의 폭과 높이를 벗어나지 않도록 random(width)와 random(height)로 설정합시다.

void setup() {
    size(600, 400);
    background(255);
}

void draw() {
    stroke(random(255), random(255), random(255)); // R, G, B
    line(random(width), random(height), random(width), random(height)); // x1, y1, x2, y2
}
사각형 이동하기
주황색 사각형을 이동시켜 봅시다.

void setup() {
    size(600, 400);
    fill(255, 122, 0);
    noStroke();
}

void draw() {
    background(255);
    rect(frameCount % width, 50, 100, 100);
}

frameRate() 함수는 draw() 함수를 초당 몇 번(fps) 호출할지 설정합니다. 초기값은 60 fps입니다. 즉, 초당 60번 호출합니다.

사각형을 천천히 움직여 봅시다.

void setup() {
    size(600, 400);
    fill(255, 122, 0);
    noStroke();
    frameRate(10);
}

void draw() {
    background(255);
    rect(frameCount % width, 50, 100, 100);
}

이번에는 빠르게 움직여 봅시다.

void setup() {
    size(600, 400);
    fill(255, 122, 0);
    noStroke();
    frameRate(120);
}

void draw() {
    background(255);
    rect(frameCount % width, 50, 100, 100);
}
목차
수업 자료 내려 받기
수업 준비
  1. 하드웨어 살펴보기
  2. 햄스터 · 햄스터S · USB 동글 PDF · PPT
  3. 소프트웨어 설치 (설치 파일을 내려 받은 경우)
  4. PDF · PPT
  5. 소프트웨어 설치 (라이브러리 파일을 내려 받은 경우)
  6. PDF · PPT
  7. 로봇과 컴퓨터 연결
  8. PDF · PPT
  9. 소프트웨어 실행
  10. PDF · PPT
  11. 환경 설정
  12. PDF · PPT
프로세싱 기초
  1. 도형 그리기
  2. 애니메이션
  3. 마우스와 키보드 이벤트
햄스터 기초
  1. 코드의 기본 형태 만들기
  2. 클라우드 컴퓨터 환경에서 작업하기 (선택 사항)
  3. 말판 이동하기 #1 (순차, 횟수 반복)
  4. 이동하고 회전하기
  5. LED 켜고 소리 내기
  6. 순서대로, 반복하여 명령하기
  7. 키보드 이벤트
  8. 근접 센서 사용하기
  9. 말판 이동하기 #2 (~인 동안 반복)
  10. 바닥 센서 사용하기
  11. 밝기 센서와 가속도 센서 사용하기
  12. 브레이튼버그의 로봇
햄스터 심화
  1. 보드 게임 만들기
  2. 그래픽 인터페이스
  3. 센서 한 개를 사용한 라인 트레이서
  4. 센서 두 개를 사용한 라인 트레이서
  5. 햄스터 친구 따라가기 (2인 1조)
  6. 벽 따라가기
  7. 로봇 청소기 흉내 내기
  8. 라인 트레이서 교차로 주행하기
  9. 미로 탈출
확장 키트
  1. 조립하기
  2. 핀/소켓 배치 살펴보기
  3. 디지털 입력 - 버튼을 누르면 삐 소리가 나요
  4. 디지털 출력 - 어두우면 LED 불이 켜져요
  5. 디지털 출력 - 반짝반짝 LED를 깜박여요
  6. 디지털 출력 - 기울이는 방향으로 LED가 켜져요
  7. 아날로그 입력 - 포텐셔미터를 돌리면 음 높이가 달라져요
  8. 아날로그 입력 - 뜨겁지 않게 해주세요
  9. 아날로그 입력 - 빛을 따라 움직여요
  10. PWM 출력 - LED 불이 부드럽게 밝아졌다 어두워져요
  11. PWM 출력 - LED 촛불이 바람에 흔들려요
  12. 아날로그 서보 출력 - 햄스터 로봇에게 꼬리가 생겼어요
햄스터 고급
  1. 행위 기반의 로봇 제어
  2. 경로 탐색
  3. 자리 바꾸기
Copyright 로봇SW교육원 All rights reserved.
어려운 일이 있으면 광운대학교 로봇학부 박광현 교수(akaii@kw.ac.kr)에게 연락하세요.