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

교육 자료 : C 언어 : LED 켜고 소리 내기

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

#include "roboid.h"

int main(int argc, char *argv[]) {
    hamster_create();

    hamster_leds("blue", "blue"); // 왼쪽 LED와 오른쪽 LED를 파란색으로 켠다.
    hamster_wheels(30, 30); // 앞으로 이동한다.

    wait(1000); // 1초 기다린다.

    hamster_leds("off", "off"); // 왼쪽 LED와 오른쪽 LED를 끈다.
    hamster_stop(); // 정지한다.

    dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.

    return 0;
}

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

#include "roboid.h"

int main(int argc, char *argv[]) {
    hamster_create();

    hamster_leds(1, 1); // 왼쪽 LED와 오른쪽 LED를 파란색으로 켠다.
    hamster_wheels(30, 30); // 앞으로 이동한다.

    wait(1000); // 1초 기다린다.

    hamster_leds("off", "off"); // 왼쪽 LED와 오른쪽 LED를 끈다.
    hamster_stop(); // 정지한다.

    dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.

    return 0;
}

햄스터 로봇의 LED는 7가지 색상을 표현할 수 있으며, LED를 끄기 위해서는 "off"를 입력하면 됩니다. 대소문자는 구분하지 않습니다.

LED 색상 설명
"off" LED를 끈다.
"red" LED를 빨간색으로 켠다. (R: 255, G: 0, B: 0)
"yellow" LED를 노란색으로 켠다. (R: 255, G: 255, B: 0)
"green" LED를 초록색으로 켠다. (R: 0, G: 255, B: 0)
"sky blue" LED를 하늘색으로 켠다. (R: 0, G: 255, B: 255)
"blue" LED를 파란색으로 켠다. (R: 0, G: 0, B: 255)
"purple" LED를 보라색으로 켠다. (R: 255, G: 0, B: 255)
"white" LED를 하얀색으로 켠다. (R: 255, G: 255, B: 255)

양쪽 LED를 다양한 색상으로 켜고 앞으로 이동하게 해봅시다.
LED 켜고 제자리에서 5초 돌기
회전하는 방향으로 한쪽 LED만 초록색으로 켜고 제자리에서 5초 동안 돌게 해봅시다.

#include "roboid.h"

int main(int argc, char *argv[]) {
    hamster_create();

    hamster_leds("green", "off"); // 왼쪽 LED를 초록색으로 켜고 오른쪽 LED를 끈다.
    hamster_wheels(-30, 30); // 제자리에서 왼쪽으로 돈다.

    wait(5000); // 5초 기다린다.

    hamster_leds("off", "off"); // 왼쪽 LED와 오른쪽 LED를 끈다.
    hamster_stop(); // 정지한다.

    dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.

    return 0;
}

왼쪽 LED 또는 오른쪽 LED, 하나의 값만 설정하기 위해서는 hamster_left_led() 또는 hamster_right_led() 함수를 사용하여도 됩니다.

hamster_left_led("sky blue"); // 왼쪽 LED를 하늘색으로 켠다.
hamster_wheels(-30, 30); // 제자리에서 왼쪽으로 돈다.
hamster_right_led("red"); // 오른쪽 LED를 빨간색으로 켠다.
hamster_wheels(30, -30); // 제자리에서 오른쪽으로 돈다.

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

#include "roboid.h"

int main(int argc, char *argv[]) {
    hamster_create();

    hamster_buzzer(1000); // 버저 소리의 음 높이를 1000 Hz로 설정한다.
    hamster_wheels(-30, -30); // 뒤로 이동한다.

    wait(1000); // 1초 기다린다.

    hamster_buzzer(0); // 버저 소리를 끈다.
    hamster_stop(); // 정지한다.

    dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.

    return 0;
}

버저 소리의 음 높이는 소수점 둘째 자리까지 입력할 수 있습니다.

#include "roboid.h"

int main(int argc, char *argv[]) {
    hamster_create();

    hamster_buzzer(261.63); // 버저 소리의 음 높이를 261.63 Hz로 설정한다.
    hamster_wheels(-30, -30); // 뒤로 이동한다.

    wait(1000); // 1초 기다린다.

    hamster_buzzer(0); // 버저 소리를 끈다.
    hamster_stop(); // 정지한다.

    dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.

    return 0;
}

다양한 음 높이로 소리를 내면서 뒤로 이동하게 해봅시다.
청력 테스트
햄스터 로봇의 버저 소리는 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
정확한 음정 내기
hamster_buzzer() 함수를 사용한 경우에는 연속적인 주파수의 음을 낼 수 있지만 소수점 둘째 자리까지밖에 입력할 수 없다는 한계가 있습니다. 좀 더 정확한 음을 내보도록 합시다. 오차 0.01% 이하의 정확한 음정을 낼 수 있습니다. 소리를 끄기 위해서는 "off"를 입력하면 됩니다. 대소문자는 구분하지 않습니다.

#include "roboid.h"

int main(int argc, char *argv[]) {
    hamster_create();

    hamster_pitch("C4"); // 4옥타브 도 음을 소리낸다.
    wait(1000); // 1초 기다린다.
    hamster_pitch("off"); // 소리를 끈다.

    dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.

    return 0;
}

유효한 값은 "A0" ~ "C8"이며 피아노의 88 건반에 해당합니다. 다양한 음을 소리내면서 햄스터 로봇이 이동하거나 회전하게 해봅시다.

음 높이 설명
"off" 소리를 끈다.
"A0" 0번째 옥타브의 라 음
"A#0" 0번째 옥타브의 라# 음
"Bb0" 0번째 옥타브의 시b 음
"B0" 0번째 옥타브의 시 음
"C1" 1번째 옥타브의 도 음
"C#1" 1번째 옥타브의 도# 음
"Db1" 1번째 옥타브의 레b 음
"D1" 1번째 옥타브의 레 음
"D#1" 1번째 옥타브의 레# 음
"Eb1" 1번째 옥타브의 미b 음
"E1" 1번째 옥타브의 미 음
"F1" 1번째 옥타브의 파 음
"F#1" 1번째 옥타브의 파# 음
"Gb1" 1번째 옥타브의 솔b 음
"G1" 1번째 옥타브의 솔 음
"G#1" 1번째 옥타브의 솔# 음
"Ab1" 1번째 옥타브의 라b 음
"A1" 1번째 옥타브의 라 음
"A#1" 1번째 옥타브의 라# 음
"Bb1" 1번째 옥타브의 시b 음
"B1" 1번째 옥타브의 시 음
"C2" 2번째 옥타브의 도 음
"C#2" 2번째 옥타브의 도# 음
"Db2" 2번째 옥타브의 레b 음
"D2" 2번째 옥타브의 레 음
"D#2" 2번째 옥타브의 레# 음
"Eb2" 2번째 옥타브의 미b 음
"E2" 2번째 옥타브의 미 음
"F2" 2번째 옥타브의 파 음
"F#2" 2번째 옥타브의 파# 음
"Gb2" 2번째 옥타브의 솔b 음
"G2" 2번째 옥타브의 솔 음
"G#2" 2번째 옥타브의 솔# 음
"Ab2" 2번째 옥타브의 라b 음
"A2" 2번째 옥타브의 라 음
"A#2" 2번째 옥타브의 라# 음
"Bb2" 2번째 옥타브의 시b 음
"B2" 2번째 옥타브의 시 음
"C3" 3번째 옥타브의 도 음
"C#3" 3번째 옥타브의 도# 음
"Db3" 3번째 옥타브의 레b 음
"D3" 3번째 옥타브의 레 음
"D#3" 3번째 옥타브의 레# 음
"Eb3" 3번째 옥타브의 미b 음
"E3" 3번째 옥타브의 미 음
"F3" 3번째 옥타브의 파 음
"F#3" 3번째 옥타브의 파# 음
"Gb3" 3번째 옥타브의 솔b 음
"G3" 3번째 옥타브의 솔 음
"G#3" 3번째 옥타브의 솔# 음
"Ab3" 3번째 옥타브의 라b 음
"A3" 3번째 옥타브의 라 음
"A#3" 3번째 옥타브의 라# 음
"Bb3" 3번째 옥타브의 시b 음
"B3" 3번째 옥타브의 시 음
"C4" 4번째 옥타브의 도 음
"C#4" 4번째 옥타브의 도# 음
"Db4" 4번째 옥타브의 레b 음
"D4" 4번째 옥타브의 레 음
"D#4" 4번째 옥타브의 레# 음
"Eb4" 4번째 옥타브의 미b 음
"E4" 4번째 옥타브의 미 음
"F4" 4번째 옥타브의 파 음
"F#4" 4번째 옥타브의 파# 음
"Gb4" 4번째 옥타브의 솔b 음
"G4" 4번째 옥타브의 솔 음
"G#4" 4번째 옥타브의 솔# 음
"Ab4" 4번째 옥타브의 라b 음
"A4" 4번째 옥타브의 라 음
"A#4" 4번째 옥타브의 라# 음
"Bb4" 4번째 옥타브의 시b 음
"B4" 4번째 옥타브의 시 음
"C5" 5번째 옥타브의 도 음
"C#5" 5번째 옥타브의 도# 음
"Db5" 5번째 옥타브의 레b 음
"D5" 5번째 옥타브의 레 음
"D#5" 5번째 옥타브의 레# 음
"Eb5" 5번째 옥타브의 미b 음
"E5" 5번째 옥타브의 미 음
"F5" 5번째 옥타브의 파 음
"F#5" 5번째 옥타브의 파# 음
"Gb5" 5번째 옥타브의 솔b 음
"G5" 5번째 옥타브의 솔 음
"G#5" 5번째 옥타브의 솔# 음
"Ab5" 5번째 옥타브의 라b 음
"A5" 5번째 옥타브의 라 음
"A#5" 5번째 옥타브의 라# 음
"Bb5" 5번째 옥타브의 시b 음
"B5" 5번째 옥타브의 시 음
"C6" 6번째 옥타브의 도 음
"C#6" 6번째 옥타브의 도# 음
"Db6" 6번째 옥타브의 레b 음
"D6" 6번째 옥타브의 레 음
"D#6" 6번째 옥타브의 레# 음
"Eb6" 6번째 옥타브의 미b 음
"E6" 6번째 옥타브의 미 음
"F6" 6번째 옥타브의 파 음
"F#6" 6번째 옥타브의 파# 음
"Gb6" 6번째 옥타브의 솔b 음
"G6" 6번째 옥타브의 솔 음
"G#6" 6번째 옥타브의 솔# 음
"Ab6" 6번째 옥타브의 라b 음
"A6" 6번째 옥타브의 라 음
"A#6" 6번째 옥타브의 라# 음
"Bb6" 6번째 옥타브의 시b 음
"B6" 6번째 옥타브의 시 음
"C7" 7번째 옥타브의 도 음
"C#7" 7번째 옥타브의 도# 음
"Db7" 7번째 옥타브의 레b 음
"D7" 7번째 옥타브의 레 음
"D#7" 7번째 옥타브의 레# 음
"Eb7" 7번째 옥타브의 미b 음
"E7" 7번째 옥타브의 미 음
"F7" 7번째 옥타브의 파 음
"F#7" 7번째 옥타브의 파# 음
"Gb7" 7번째 옥타브의 솔b 음
"G7" 7번째 옥타브의 솔 음
"G#7" 7번째 옥타브의 솔# 음
"Ab7" 7번째 옥타브의 라b 음
"A7" 7번째 옥타브의 라 음
"A#7" 7번째 옥타브의 라# 음
"Bb7" 7번째 옥타브의 시b 음
"B7" 7번째 옥타브의 시 음
"C8" 8번째 옥타브의 도 음
목차
수업 준비
  1. 하드웨어 살펴보기
  2. 햄스터 · 햄스터S · USB 동글 PDF · PPT
  3. 소프트웨어 설치
  4. PDF · PPT
  5. 로봇과 컴퓨터 연결
  6. PDF · PPT
  7. 예제 프로젝트 실행
  8. PDF · PPT
기초
  1. 새 프로젝트 만들기
  2. 클라우드 컴퓨터 환경에서 작업하기 (선택 사항)
  3. 말판 이동하기 #1 (순차, 횟수 반복)
  4. 이동하고 회전하기
  5. LED 켜고 소리 내기
  6. 순서대로, 반복하여 명령하기
  7. 키보드 이벤트
  8. 근접 센서 사용하기
  9. 말판 이동하기 #2 (~인 동안 반복)
  10. 바닥 센서 사용하기
  11. 밝기 센서와 가속도 센서 사용하기
  12. 브레이튼버그의 로봇
심화
  1. 보드 게임 만들기
  2. 센서 한 개를 사용한 라인 트레이서
  3. 센서 두 개를 사용한 라인 트레이서
  4. 햄스터 친구 따라가기 (2인 1조)
  5. 여러 대의 햄스터 로봇 제어하기 (선택 사항)
  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)에게 연락하세요.