RobotC(Sound)

Download Report

Transcript RobotC(Sound)

- 보이스 로봇(Voice Robot) -
사운드 센서
• 사운드 센서는 데시벨 레벨, 즉, 소리의 크기 또는 강도를
감지한다.
• 주변의 소리를 인식하여 소리의 크기를 0~100%로 값을
변환한다.
2
사운드 센서 모드
• 사운드센서는 2가지 모드로 작동
– dB(decibel) 모드 : 소리의 상대적인 크기를 나타내는 단위
• Bell 단위가 너무 커서 10분의 1(deci)로 줄인 단위로 사용
• 저주파부터 고주파까지 모든 소리를 감지하며 소리의 상대적인 크기를 나타
내는 단위  인간이 듣기에 너무 높거나 낮은 소리 포함
– dBA(acoustic decibell) 모드 : 사람이 감지할 수 있는 소리 크기에 맞춘 기준
사운드센서의 동작 (상태값)
4
사운드센서의 동작 (상태값) - View
• 사운드센서 상태 값 확인
5
1.
2.
3.
NXT와 사운드센서 2번 포트로 연결
NXT ‘view’ 메뉴 선택
‘sound dB’ 혹은 ‘sound dBA’ 선택
4.
5.
2번 포트 선택
LCD 수치 확인 : 입김을 불거나 소리크기를 변형하면서 Sound
크기를 확인
사운드 센서의 응용 1
• 큰 소리에만 작동하는 로봇
– 사운드 센서에 입력되는 소리가 크면(70이상) 전진하고, 작으면
(70이하) 정지하는 로봇을 만든다. 터치센서를 누르면 로봇 행위
는 종료한다.
• (순서도)
6
사운드 센서의 응용 1
사운드센서에 입력되는 소리가 70이상인 동안 전진하고,
70보다 작아지면 정지
7
사운드 센서의 응용 2
• 입김으로 드리블 하는 로봇
– 소리 크기에 따라 전진, 우회전, 좌회전, 정지하는 로봇
• (순서도)
사운드 센서의 응용 2
9
사운드 센서의 응용 3
• 박수소리 회수에 따라 움직이는 로봇
사운드 센서의 응용 3
void Turn(int);
사운드 센서의 응용 3
도전과제 1
• 소리 크게 지르기 게임
– 5m 거리에서 각각 1초간 소리를 지르며 가장 큰 값을
화면에 출력하는 게임
– 터치센서를 누르면 시작, 1초간 소리크기 측정
– 측정된 소리와 현재까지 가장 큰 소리의 크기를 화면
에 출력
– 측정된 소리가 가장 크면
– “You Win” 과 soundFastUpwardTones 출력
– 그렇지 않으면
– “You Lose”와 soundException 출력
– 터치센서를 다시 누르면 다음 사람이 측정을 반복
task main()
#pragma config(Sensor, S1, touch, sensorTouch)
#pragma config(Sensor, S2, sound, sensorSoundDBA) {
while(1) {
while(SensorValue(touch) ==0);
int curmax=0;
while(SensorValue(touch) ==1);
int allmax=0;
StartTask(CurrentMaxSound);
wait1Msec(1000);
StopTask(CurrentMaxSound);
task CurrentMaxSound()
{
int csound=0;
curmax=0;
while(1) {
csound=SensorValue(sound);
if (csound>curmax) curmax=csound;
}
}
if (allmax < curmax) {
allmax=curmax;
PlaySound(soundFastUpwardTones);
nxtDisplayBigTextLine(5, "You Win");
}
else {
PlaySound(soundException);
nxtDisplayBigTextLine(5, "You Lose");
}
nxtDisplayTextLine(1, "Cur Max : %d", curmax);
nxtDisplayTextLine(2, "Maxium : %d", allmax);
}
}
도전과제 2
• 소리 나는 쪽으로 고개 돌리기
– 사운드 센서 2개를 사람의 귀에 해당되도록 사람의
머리처럼 로봇을 제작하고 박수를 쳐서 소리가 나는
곳으로 고개를 돌리는 로봇을 만들자.
– 사운드 센서가 50% 이상일 때 소리가 난 것으로 간주
– 왼쪽과 오른쪽 사운드 센서가 모두 100%일 때는 소
리를 내며 머리를 한 바퀴 회전한다.