2026年1月10日 星期六

[OTTO Biped] OTTO雙足機器人蜂鳴器測試(二)

(Gemini) 
OTTO積木涵蓋了從基本情緒音效進階頻率控制的功能。以下為您詳細說明這四種聲音積木的作用與差異:

1. 內建情緒音效積木 (預設快捷鍵)

  • 外觀: sound [happy1]

  • 作用: 這是最簡單的指令,直接呼叫 Otto 內建的「情緒音效包」。

  • 特點: 你不需要設定頻率或節奏,只需從下拉選單選擇情緒(如:happy, confused, fart),機器人就會播放一段固定的小旋律。

  • 適合用途: 快速測試機器人的情緒反應與動作組合。


2. 音符與節拍積木 (鋼琴模式)

  • 外觀: [譜號] [C4 | Do4] [音符圖標]

  • 作用: 讓機器人像彈鋼琴一樣發出特定的音階。

  • 控制參數:

    • 音高: 可選擇 Do、Re、Mi 等特定音階(例如 C4 代表中音 Do)。

    • 時長: 可選擇全音符、二分音符或四分音符(節拍長短)。

  • 適合用途: 如果你想讓機器人唱出一首真實的歌曲(如《小星星》),就要用這種積木。


3. 基礎頻率控制 (手動發聲)

  • 外觀: Hz [10] [時鐘] [261] [靜音] [500]

  • 作用: 透過直接設定物理頻率 (Hz) 來發聲,不侷限於標準音階。

  • 參數解說:

    • Hz (10): 起始頻率。

    • 時鐘 (261): 聲音持續的時間(毫秒)。

    • 靜音 (500): 播放完後的停頓時間。

  • 適合用途: 製作簡單的警告音、嗶聲或客製化的短音效。


4. 進階滑音/調變控制 (專業模式)

  • 外觀: Hz1 [880] Hz2 [2093] P [1.02] [時鐘] [18] [靜音] [1]

  • 作用: 這是最強大的發聲積木,能做出滑音 (Slide)震盪音效果。

  • 參數解說:

    • Hz1 & Hz2: 聲音會從頻率 1 變動到 頻率 2(例如從低音滑向高音)。

    • P (1.02): 週期或變動率,決定聲音變化的曲線。

    • 時鐘 & 靜音: 控制聲音長短與間隔。

  • 適合用途: 製作極具「科幻感」的機械音、雷射槍聲,或是像圖片中 fart(放屁聲)那種不規則的震動音。

範例一、音效測試


arduino程式:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#include <Otto.h>
Otto Otto;

#define LeftLeg 2 // left leg pin, servo[0]
#define RightLeg 3 // right leg pin, servo[1]
#define LeftFoot 4 // left foot pin, servo[2]
#define RightFoot 5 // right foot pin, servo[3]
#define Buzzer 13 //buzzer pin


void setup() {
  Otto.init(LeftLeg, RightLeg, LeftFoot, RightFoot, true, Buzzer);
Otto.home();


}

void loop() {
    Otto.sing(S_superHappy);

}

範例二、隨機音效加上表情動作

arduino程式:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <Otto.h>
Otto Otto;

int random_sound = 0;

#define LeftLeg 2 // left leg pin, servo[0]
#define RightLeg 3 // right leg pin, servo[1]
#define LeftFoot 4 // left foot pin, servo[2]
#define RightFoot 5 // right foot pin, servo[3]
#define Buzzer 13 //buzzer pin

double random_int(int a,int b) {
  if (a > b) {
    int c = a;
    a = b;
    b = c;
  }
  return (double) random(a,b+1);
}

void setup() {
  Otto.init(LeftLeg, RightLeg, LeftFoot, RightFoot, true, Buzzer);
Otto.home();

    Otto.home();

}

void loop() {
    random_sound = random_int(1, 3);
    if (random_sound == 1) {
      Otto.sing(S_superHappy);
      Otto.playGesture(OttoSuperHappy);
    }
    if (random_sound == 2) {
      Otto.sing(S_confused);
      Otto.playGesture(OttoConfused);
    }
    if (random_sound == 3) {
      Otto.sing(S_fart1);
      Otto.playGesture(OttoFart);
    }

}

範例三、音符節拍和頻率控制


沒有留言:

張貼留言