LED 켜고 앞으로 이동하기
햄스터 로봇이 양쪽 LED를 파란색으로 켜고 앞으로 이동하게 해봅시다.
import org.roboid.core.*;
import processing.hamster.*;
import org.roboid.robot.*;
Hamster hamster;
void setup() {
hamster = Hamster.create(this);
}
void draw() {
}
void run() {
hamster.leds(Hamster.LED_BLUE, Hamster.LED_BLUE); // 왼쪽 LED와 오른쪽 LED를 파란색으로 켠다.
hamster.wheels(30, 30); // 앞으로 이동한다.
}
파란색에 해당하는 숫자를 입력해도 됩니다.
void run() {
hamster.leds(1, 1); // 왼쪽 LED와 오른쪽 LED를 파란색으로 켠다.
hamster.wheels(30, 30); // 앞으로 이동한다.
}
햄스터 로봇의 LED는 7가지 색상을 표현할 수 있으며, LED를 끄기 위해서는 Hamster.LED_OFF 또는 0을 입력하면 됩니다.
LED 색상 |
숫자 |
설명 |
Hamster.LED_OFF |
0 |
LED를 끈다. |
Hamster.LED_BLUE |
1 |
LED를 파란색으로 켠다. (R: 0, G: 0, B: 255) |
Hamster.LED_GREEN |
2 |
LED를 초록색으로 켠다. (R: 0, G: 255, B: 0) |
Hamster.LED_CYAN |
3 |
LED를 하늘색으로 켠다. (R: 0, G: 255, B: 255) |
Hamster.LED_RED |
4 |
LED를 빨간색으로 켠다. (R: 255, G: 0, B: 0) |
Hamster.LED_MAGENTA |
5 |
LED를 보라색으로 켠다. (R: 255, G: 0, B: 255) |
Hamster.LED_YELLOW |
6 |
LED를 노란색으로 켠다. (R: 255, G: 255, B: 0) |
Hamster.LED_WHITE |
7 |
LED를 하얀색으로 켠다. (R: 255, G: 255, B: 255) |
양쪽 LED를 다양한 색상으로 켜고 앞으로 이동하게 해봅시다.
LED 켜고 제자리 돌기
회전하는 방향으로 한쪽 LED만 초록색으로 켜고 제자리에서 돌게 해봅시다.
import org.roboid.core.*;
import processing.hamster.*;
import org.roboid.robot.*;
Hamster hamster;
void setup() {
hamster = Hamster.create(this);
}
void draw() {
}
void run() {
hamster.leds(Hamster.LED_GREEN, Hamster.LED_OFF); // 왼쪽 LED를 초록색으로 켜고 오른쪽 LED를 끈다.
hamster.wheels(-30, 30); // 제자리에서 왼쪽으로 돈다.
}
색상에 해당하는 숫자를 입력해도 됩니다.
void run() {
hamster.leds(2, 0); // 왼쪽 LED를 초록색으로 켜고 오른쪽 LED를 끈다.
hamster.wheels(-30, 30); // 제자리에서 왼쪽으로 돈다.
}
다음 버전에서
왼쪽 LED 또는 오른쪽 LED, 하나의 값만 설정하기 위해서는 leftLed() 또는 rightLed() 메소드를 사용하여도 됩니다.
void run() {
hamster.leftLed(Hamster.LED_CYAN); // 왼쪽 LED를 하늘색으로 켠다.
hamster.wheels(-30, 30); // 제자리에서 왼쪽으로 돈다.
}
|
void run() {
hamster.rightLed(Hamster.LED_RED); // 오른쪽 LED를 빨간색으로 켠다.
hamster.wheels(30, -30); // 제자리에서 오른쪽으로 돈다.
}
|
한쪽 LED를 다양한 색상으로 켜고 제자리에서 왼쪽 또는 오른쪽으로 돌게 해봅시다.
소리 내며 뒤로 이동하기
햄스터 로봇이 소리를 내면서 뒤로 이동하게 해봅시다.
버저 소리의 음 높이를 주파수[Hz]로 입력하면 됩니다.
import org.roboid.core.*;
import processing.hamster.*;
import org.roboid.robot.*;
Hamster hamster;
void setup() {
hamster = Hamster.create(this);
}
void draw() {
}
void run() {
hamster.buzzer(1000); // 버저 소리의 음 높이를 1000 Hz로 설정한다.
hamster.wheels(-30, -30); // 뒤로 이동한다.
}
버저 소리의 음 높이는 소수점 둘째 자리까지 입력할 수 있으며,
버저 소리를 끄기 위해서는 0을 입력하면 됩니다.
void run() {
hamster.buzzer(261.63); // 버저 소리의 음 높이를 261.63 Hz로 설정한다.
hamster.wheels(-30, -30); // 뒤로 이동한다.
}
다양한 음 높이로 소리를 내면서 뒤로 이동하게 해봅시다.
청력 테스트
햄스터 로봇의 버저 소리는 0 ~ 167772.15 Hz까지 입력할 수 있는데,
나이에 따라 사람이 들을 수 있는 최고 음의 높이가 다릅니다.
버저 소리의 음 높이를 다양하게 변경하면서
자신이 얼마나 높은 주파수의 음까지 들을 수 있는지 측정해 봅시다.
나이 |
최고 가청 주파수 |
보청기 필요 |
8000 Hz |
50대 이후 |
10000 Hz |
40대 정도 |
12000 Hz |
30대 정도 |
14100 Hz |
20대 후반 |
14900 Hz |
20대 중반 |
15800 Hz |
20대 초반 |
16700 Hz |
10대 후반 |
17700 Hz |
10대 초반 |
18800 Hz |
10대 이하 |
19900 Hz |
동물 수준 |
21100 Hz |
정확한 음정 내기
buzzer() 메소드를 사용한 경우에는 연속적인 주파수의 음을 낼 수 있지만
소수점 둘째 자리까지밖에 입력할 수 없다는 한계가 있습니다.
좀 더 정확한 음을 내보도록 합시다.
오차 0.01% 이하의 정확한 음정을 낼 수 있습니다.
소리를 끄기 위해서는 Hamster.NOTE_OFF 또는 0을 입력하면 됩니다.
import org.roboid.core.*;
import processing.hamster.*;
import org.roboid.robot.*;
Hamster hamster;
void setup() {
hamster = Hamster.create(this);
}
void draw() {
}
void run() {
hamster.note(Hamster.NOTE_C_4); // 4옥타브 도 음을 소리낸다.
}
4옥타브 도 음에 해당하는 숫자를 입력해도 됩니다.
void run() {
hamster.note(40); // 4옥타브 도 음을 소리낸다.
}
유효한 값은 1 ~ 88이며 피아노의 88 건반에 해당합니다.
다양한 음을 소리내면서 햄스터 로봇이 이동하거나 회전하게 해봅시다.
음 높이 |
숫자 |
설명 |
Hamster.NOTE_OFF |
0 |
소리를 끈다. |
Hamster.NOTE_A_0 |
1 |
0번째 옥타브의 라 음 |
Hamster.NOTE_A_SHARP_0 |
2 |
0번째 옥타브의 라# 음 |
Hamster.NOTE_B_FLAT_0 |
2 |
0번째 옥타브의 시b 음 |
Hamster.NOTE_B_0 |
3 |
0번째 옥타브의 시 음 |
Hamster.NOTE_C_1 |
4 |
1번째 옥타브의 도 음 |
Hamster.NOTE_C_SHARP_1 |
5 |
1번째 옥타브의 도# 음 |
Hamster.NOTE_D_FLAT_1 |
5 |
1번째 옥타브의 레b 음 |
Hamster.NOTE_D_1 |
6 |
1번째 옥타브의 레 음 |
Hamster.NOTE_D_SHARP_1 |
7 |
1번째 옥타브의 레# 음 |
Hamster.NOTE_E_FLAT_1 |
7 |
1번째 옥타브의 미b 음 |
Hamster.NOTE_E_1 |
8 |
1번째 옥타브의 미 음 |
Hamster.NOTE_F_1 |
9 |
1번째 옥타브의 파 음 |
Hamster.NOTE_F_SHARP_1 |
10 |
1번째 옥타브의 파# 음 |
Hamster.NOTE_G_FLAT_1 |
10 |
1번째 옥타브의 솔b 음 |
Hamster.NOTE_G_1 |
11 |
1번째 옥타브의 솔 음 |
Hamster.NOTE_G_SHARP_1 |
12 |
1번째 옥타브의 솔# 음 |
Hamster.NOTE_A_FLAT_1 |
12 |
1번째 옥타브의 라b 음 |
Hamster.NOTE_A_1 |
13 |
1번째 옥타브의 라 음 |
Hamster.NOTE_A_SHARP_1 |
14 |
1번째 옥타브의 라# 음 |
Hamster.NOTE_B_FLAT_1 |
14 |
1번째 옥타브의 시b 음 |
Hamster.NOTE_B_1 |
15 |
1번째 옥타브의 시 음 |
Hamster.NOTE_C_2 |
16 |
2번째 옥타브의 도 음 |
Hamster.NOTE_C_SHARP_2 |
17 |
2번째 옥타브의 도# 음 |
Hamster.NOTE_D_FLAT_2 |
17 |
2번째 옥타브의 레b 음 |
Hamster.NOTE_D_2 |
18 |
2번째 옥타브의 레 음 |
Hamster.NOTE_D_SHARP_2 |
19 |
2번째 옥타브의 레# 음 |
Hamster.NOTE_E_FLAT_2 |
19 |
2번째 옥타브의 미b 음 |
Hamster.NOTE_E_2 |
20 |
2번째 옥타브의 미 음 |
Hamster.NOTE_F_2 |
21 |
2번째 옥타브의 파 음 |
Hamster.NOTE_F_SHARP_2 |
22 |
2번째 옥타브의 파# 음 |
Hamster.NOTE_G_FLAT_2 |
22 |
2번째 옥타브의 솔b 음 |
Hamster.NOTE_G_2 |
23 |
2번째 옥타브의 솔 음 |
Hamster.NOTE_G_SHARP_2 |
24 |
2번째 옥타브의 솔# 음 |
Hamster.NOTE_A_FLAT_2 |
24 |
2번째 옥타브의 라b 음 |
Hamster.NOTE_A_2 |
25 |
2번째 옥타브의 라 음 |
Hamster.NOTE_A_SHARP_2 |
26 |
2번째 옥타브의 라# 음 |
Hamster.NOTE_B_FLAT_2 |
26 |
2번째 옥타브의 시b 음 |
Hamster.NOTE_B_2 |
27 |
2번째 옥타브의 시 음 |
Hamster.NOTE_C_3 |
28 |
3번째 옥타브의 도 음 |
Hamster.NOTE_C_SHARP_3 |
29 |
3번째 옥타브의 도# 음 |
Hamster.NOTE_D_FLAT_3 |
29 |
3번째 옥타브의 레b 음 |
Hamster.NOTE_D_3 |
30 |
3번째 옥타브의 레 음 |
Hamster.NOTE_D_SHARP_3 |
31 |
3번째 옥타브의 레# 음 |
Hamster.NOTE_E_FLAT_3 |
31 |
3번째 옥타브의 미b 음 |
Hamster.NOTE_E_3 |
32 |
3번째 옥타브의 미 음 |
Hamster.NOTE_F_3 |
33 |
3번째 옥타브의 파 음 |
Hamster.NOTE_F_SHARP_3 |
34 |
3번째 옥타브의 파# 음 |
Hamster.NOTE_G_FLAT_3 |
34 |
3번째 옥타브의 솔b 음 |
Hamster.NOTE_G_3 |
35 |
3번째 옥타브의 솔 음 |
Hamster.NOTE_G_SHARP_3 |
36 |
3번째 옥타브의 솔# 음 |
Hamster.NOTE_A_FLAT_3 |
36 |
3번째 옥타브의 라b 음 |
Hamster.NOTE_A_3 |
37 |
3번째 옥타브의 라 음 |
Hamster.NOTE_A_SHARP_3 |
38 |
3번째 옥타브의 라# 음 |
Hamster.NOTE_B_FLAT_3 |
38 |
3번째 옥타브의 시b 음 |
Hamster.NOTE_B_3 |
39 |
3번째 옥타브의 시 음 |
Hamster.NOTE_C_4 |
40 |
4번째 옥타브의 도 음 |
Hamster.NOTE_C_SHARP_4 |
41 |
4번째 옥타브의 도# 음 |
Hamster.NOTE_D_FLAT_4 |
41 |
4번째 옥타브의 레b 음 |
Hamster.NOTE_D_4 |
42 |
4번째 옥타브의 레 음 |
Hamster.NOTE_D_SHARP_4 |
43 |
4번째 옥타브의 레# 음 |
Hamster.NOTE_E_FLAT_4 |
43 |
4번째 옥타브의 미b 음 |
Hamster.NOTE_E_4 |
44 |
4번째 옥타브의 미 음 |
Hamster.NOTE_F_4 |
45 |
4번째 옥타브의 파 음 |
Hamster.NOTE_F_SHARP_4 |
46 |
4번째 옥타브의 파# 음 |
Hamster.NOTE_G_FLAT_4 |
46 |
4번째 옥타브의 솔b 음 |
Hamster.NOTE_G_4 |
47 |
4번째 옥타브의 솔 음 |
Hamster.NOTE_G_SHARP_4 |
48 |
4번째 옥타브의 솔# 음 |
Hamster.NOTE_A_FLAT_4 |
48 |
4번째 옥타브의 라b 음 |
Hamster.NOTE_A_4 |
49 |
4번째 옥타브의 라 음 |
Hamster.NOTE_A_SHARP_4 |
50 |
4번째 옥타브의 라# 음 |
Hamster.NOTE_B_FLAT_4 |
50 |
4번째 옥타브의 시b 음 |
Hamster.NOTE_B_4 |
51 |
4번째 옥타브의 시 음 |
Hamster.NOTE_C_5 |
52 |
5번째 옥타브의 도 음 |
Hamster.NOTE_C_SHARP_5 |
53 |
5번째 옥타브의 도# 음 |
Hamster.NOTE_D_FLAT_5 |
53 |
5번째 옥타브의 레b 음 |
Hamster.NOTE_D_5 |
54 |
5번째 옥타브의 레 음 |
Hamster.NOTE_D_SHARP_5 |
55 |
5번째 옥타브의 레# 음 |
Hamster.NOTE_E_FLAT_5 |
55 |
5번째 옥타브의 미b 음 |
Hamster.NOTE_E_5 |
56 |
5번째 옥타브의 미 음 |
Hamster.NOTE_F_5 |
57 |
5번째 옥타브의 파 음 |
Hamster.NOTE_F_SHARP_5 |
58 |
5번째 옥타브의 파# 음 |
Hamster.NOTE_G_FLAT_5 |
58 |
5번째 옥타브의 솔b 음 |
Hamster.NOTE_G_5 |
59 |
5번째 옥타브의 솔 음 |
Hamster.NOTE_G_SHARP_5 |
60 |
5번째 옥타브의 솔# 음 |
Hamster.NOTE_A_FLAT_5 |
60 |
5번째 옥타브의 라b 음 |
Hamster.NOTE_A_5 |
61 |
5번째 옥타브의 라 음 |
Hamster.NOTE_A_SHARP_5 |
62 |
5번째 옥타브의 라# 음 |
Hamster.NOTE_B_FLAT_5 |
62 |
5번째 옥타브의 시b 음 |
Hamster.NOTE_B_5 |
63 |
5번째 옥타브의 시 음 |
Hamster.NOTE_C_6 |
64 |
6번째 옥타브의 도 음 |
Hamster.NOTE_C_SHARP_6 |
65 |
6번째 옥타브의 도# 음 |
Hamster.NOTE_D_FLAT_6 |
65 |
6번째 옥타브의 레b 음 |
Hamster.NOTE_D_6 |
66 |
6번째 옥타브의 레 음 |
Hamster.NOTE_D_SHARP_6 |
67 |
6번째 옥타브의 레# 음 |
Hamster.NOTE_E_FLAT_6 |
67 |
6번째 옥타브의 미b 음 |
Hamster.NOTE_E_6 |
68 |
6번째 옥타브의 미 음 |
Hamster.NOTE_F_6 |
69 |
6번째 옥타브의 파 음 |
Hamster.NOTE_F_SHARP_6 |
70 |
6번째 옥타브의 파# 음 |
Hamster.NOTE_G_FLAT_6 |
70 |
6번째 옥타브의 솔b 음 |
Hamster.NOTE_G_6 |
71 |
6번째 옥타브의 솔 음 |
Hamster.NOTE_G_SHARP_6 |
72 |
6번째 옥타브의 솔# 음 |
Hamster.NOTE_A_FLAT_6 |
72 |
6번째 옥타브의 라b 음 |
Hamster.NOTE_A_6 |
73 |
6번째 옥타브의 라 음 |
Hamster.NOTE_A_SHARP_6 |
74 |
6번째 옥타브의 라# 음 |
Hamster.NOTE_B_FLAT_6 |
74 |
6번째 옥타브의 시b 음 |
Hamster.NOTE_B_6 |
75 |
6번째 옥타브의 시 음 |
Hamster.NOTE_C_7 |
76 |
7번째 옥타브의 도 음 |
Hamster.NOTE_C_SHARP_7 |
77 |
7번째 옥타브의 도# 음 |
Hamster.NOTE_D_FLAT_7 |
77 |
7번째 옥타브의 레b 음 |
Hamster.NOTE_D_7 |
78 |
7번째 옥타브의 레 음 |
Hamster.NOTE_D_SHARP_7 |
79 |
7번째 옥타브의 레# 음 |
Hamster.NOTE_E_FLAT_7 |
79 |
7번째 옥타브의 미b 음 |
Hamster.NOTE_E_7 |
80 |
7번째 옥타브의 미 음 |
Hamster.NOTE_F_7 |
81 |
7번째 옥타브의 파 음 |
Hamster.NOTE_F_SHARP_7 |
82 |
7번째 옥타브의 파# 음 |
Hamster.NOTE_G_FLAT_7 |
82 |
7번째 옥타브의 솔b 음 |
Hamster.NOTE_G_7 |
83 |
7번째 옥타브의 솔 음 |
Hamster.NOTE_G_SHARP_7 |
84 |
7번째 옥타브의 솔# 음 |
Hamster.NOTE_A_FLAT_7 |
84 |
7번째 옥타브의 라b 음 |
Hamster.NOTE_A_7 |
85 |
7번째 옥타브의 라 음 |
Hamster.NOTE_A_SHARP_7 |
86 |
7번째 옥타브의 라# 음 |
Hamster.NOTE_B_FLAT_7 |
86 |
7번째 옥타브의 시b 음 |
Hamster.NOTE_B_7 |
87 |
7번째 옥타브의 시 음 |
Hamster.NOTE_C_8 |
88 |
8번째 옥타브의 도 음 |
목차
심화
- 컵 따라 돌기
- 로봇 청소기
- 라인 트레이서
- 햄스터 친구 따라가기
- 미로 탈출
확장 키트
- 디지털 입력 - 버튼을 누르면 삐 소리가 나요
- 디지털 출력 - 어두우면 LED 불이 켜져요
- 디지털 출력 - 반짝반짝 LED를 깜박여요
- 디지털 출력 - 기울이는 방향으로 LED가 켜져요
- 아날로그 입력 (ADC) - 포텐셔미터를 돌리면 음 높이가 달라져요
- 아날로그 입력 (ADC) - 뜨겁지 않게 해주세요
- 아날로그 입력 (ADC) - 빛을 따라 움직여요
- PWM 출력 - LED 불이 부드럽게 밝아졌다 어두워져요
- PWM 출력 - LED 촛불이 바람에 흔들려요
- 아날로그 서보 출력 - 햄스터 로봇에게 꼬리가 생겼어요
영재반
- 브레이튼버그의 로봇
- 행위 기반의 로봇 제어
- 경로 탐색
- 자리 바꾸기
Copyright Robot Software Education Institute. All rights reserved.
Please contact prof. Kwang-Hyun Park (
akaii@kw.ac.kr) if you have any problem.