News Download Tutorial FAQ Reference Buy

자바스크립트 : LED 켜고 소리 내기

LED 켜고 앞으로 이동하기
햄스터 로봇이 양쪽 LED를 파란색으로 켜고 앞으로 이동하게 해봅시다.

var hamster = Hamster.create();
hamster.leds(Hamster.LED_BLUE, Hamster.LED_BLUE); // 왼쪽 LED와 오른쪽 LED를 파란색으로 켠다.
hamster.wheels(30, 30); // 앞으로 이동한다.

파란색에 해당하는 숫자를 입력해도 됩니다.

var hamster = Hamster.create();
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만 초록색으로 켜고 제자리에서 돌게 해봅시다.

var hamster = Hamster.create();
hamster.leds(Hamster.LED_GREEN, Hamster.LED_OFF); // 왼쪽 LED를 초록색으로 켜고 오른쪽 LED를 끈다.
hamster.wheels(-30, 30); // 제자리에서 왼쪽으로 돈다.

색상에 해당하는 숫자를 입력해도 됩니다.

var hamster = Hamster.create();
hamster.leds(2, 0); // 왼쪽 LED를 초록색으로 켜고 오른쪽 LED를 끈다.
hamster.wheels(-30, 30); // 제자리에서 왼쪽으로 돈다.

왼쪽 LED 또는 오른쪽 LED, 하나의 값만 설정하기 위해서는 leftLed() 또는 rightLed() 메소드를 사용하여도 됩니다.

var hamster = Hamster.create();
hamster.leftLed(Hamster.LED_CYAN); // 왼쪽 LED를 하늘색으로 켠다.
hamster.wheels(-30, 30); // 제자리에서 왼쪽으로 돈다.
var hamster = Hamster.create();
hamster.rightLed(Hamster.LED_RED); // 오른쪽 LED를 빨간색으로 켠다.
hamster.wheels(30, -30); // 제자리에서 오른쪽으로 돈다.

한쪽 LED를 다양한 색상으로 켜고 제자리에서 왼쪽 또는 오른쪽으로 돌게 해봅시다.
소리 내며 뒤로 이동하기
햄스터 로봇이 소리를 내면서 뒤로 이동하게 해봅시다. 버저 소리의 음 높이를 주파수[Hz]로 입력하면 됩니다.

var hamster = Hamster.create();
hamster.buzzer(1000); // 버저 소리의 음 높이를 1000 Hz로 설정한다.
hamster.wheels(-30, -30); // 뒤로 이동한다.

버저 소리의 음 높이는 소수점 둘째 자리까지 입력할 수 있으며, 버저 소리를 끄기 위해서는 0을 입력하면 됩니다.

var hamster = Hamster.create();
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을 입력하면 됩니다.

var hamster = Hamster.create();
hamster.note(Hamster.NOTE_C_4); // 4옥타브 도 음을 소리낸다.

4옥타브 도 음에 해당하는 숫자를 입력해도 됩니다.

var hamster = Hamster.create();
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번째 옥타브의 도 음
목차
하드웨어 살펴보기
  1. 햄스터 로봇
  2. USB 동글
수업 준비
  1. 소프트웨어 설치
  2. 로봇과 PC 연결
  3. 소프트웨어 실행
기초
  1. 코드의 기본 형태 만들기
  2. 로봇 움직이기
  3. LED 켜고 소리 내기
  4. 복잡한 명령 수행하기
  5. 센서 사용하기
심화
  1. 컵 따라 돌기
  2. 로봇 청소기
  3. 라인 트레이서
  4. 햄스터 친구 따라가기
  5. 미로 탈출
확장 키트
  1. 디지털 입력 - 버튼을 누르면 삐 소리가 나요
  2. 디지털 출력 - 어두우면 LED 불이 켜져요
  3. 디지털 출력 - 반짝반짝 LED를 깜박여요
  4. 디지털 출력 - 기울이는 방향으로 LED가 켜져요
  5. 아날로그 입력 (ADC) - 포텐셔미터를 돌리면 음 높이가 달라져요
  6. 아날로그 입력 (ADC) - 뜨겁지 않게 해주세요
  7. 아날로그 입력 (ADC) - 빛을 따라 움직여요
  8. PWM 출력 - LED 불이 부드럽게 밝아졌다 어두워져요
  9. PWM 출력 - LED 촛불이 바람에 흔들려요
  10. 아날로그 서보 출력 - 햄스터 로봇에게 꼬리가 생겼어요
영재반
  1. 브레이튼버그의 로봇
  2. 행위 기반의 로봇 제어
  3. 경로 탐색
  4. 자리 바꾸기
Copyright Robot Software Education Institute. All rights reserved.
Please contact prof. Kwang-Hyun Park (akaii@kw.ac.kr) if you have any problem.