(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); } |
範例二、隨機音效加上表情動作
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); } } |
範例三、音符節拍和頻率控制
沒有留言:
張貼留言