龔瑩瑜+謝作如
提線木偶是古老的漢族木偶戲的一種,表演時(shí),藝人用線牽引木偶表演動(dòng)作(如圖1)。當(dāng)看到提線木偶的表演時(shí),一個(gè)有趣的念頭突然出現(xiàn)在筆者的腦海中,如果將提線木偶與Arduino結(jié)合在一起,用現(xiàn)代化的技術(shù)重新闡述這門古老的藝術(shù),一定能夠綻放異樣的火花!這樣做,既能讓學(xué)生積極參與動(dòng)手創(chuàng)作,又能讓他們感受到中華藝術(shù)的博大精深,何樂而不為呢?
● 原理分析
提線木偶,顧名思義就是通過提拉線使木偶完成特定的動(dòng)作。提線木偶一般會(huì)由五條線來控制,這五條線分別連著四肢和頭頂,提拉每一根線都會(huì)出現(xiàn)相應(yīng)的反應(yīng),同時(shí)提拉幾根線則可以完成一系列連貫的動(dòng)作,這就形成了表演。
舵機(jī)是常見的動(dòng)作輸出電子模塊,多用在需要角度轉(zhuǎn)換的作品中,用以精準(zhǔn)控制角度。舵機(jī)本身能轉(zhuǎn)動(dòng),加上搖臂之后,就能帶動(dòng)搖臂轉(zhuǎn)過一定的角度,在這個(gè)轉(zhuǎn)動(dòng)的過程中,搖臂上的每個(gè)點(diǎn)都沿著弧線走過一段距離(如圖2),其中離中心最遠(yuǎn)的點(diǎn)運(yùn)動(dòng)的半圓最大,走過的距離也最長(zhǎng)。本次實(shí)驗(yàn)就是利用這一原理,把提線木偶的線綁在搖臂上,然后讓舵機(jī)轉(zhuǎn)動(dòng),帶動(dòng)搖臂運(yùn)動(dòng),這樣與搖臂直接相連的線也就能夠被拉動(dòng),從而可以完成讓木偶做動(dòng)作的效果。
● 原型設(shè)計(jì)
這個(gè)作品用到的材料并不多,僅需Arduino主控板、擴(kuò)展板和五個(gè)舵機(jī),外加按鈕、鞋盒子和雙面膠、棉線之類。
首先,木偶都是在舞臺(tái)上表演的,我們需要先設(shè)計(jì)一個(gè)適合的舞臺(tái),這里選擇最常見的小鞋盒作為舞臺(tái)的背景,把提線木偶安裝在舞臺(tái)上。用鞋盒做舞臺(tái)背景有一個(gè)很特殊的優(yōu)點(diǎn),即鞋盒是一個(gè)長(zhǎng)方形的立體空間,主板、舵機(jī)、按鈕和電池都能完美地被隱藏在“幕布”之后,因此會(huì)讓整個(gè)作品變得非常整潔(如上頁圖3)。
為了讓提線木偶的線能方便地被舵機(jī)拉扯,我們可以在四肢對(duì)應(yīng)的鞋盒上鉆幾個(gè)洞,以便讓線通過洞與鞋盒中的舵機(jī)相連(如圖4)。
確定好四肢線的位置之后,將舵機(jī)安裝在盒子背后的相應(yīng)位置,為了讓舵機(jī)的轉(zhuǎn)動(dòng)最大化地變成線的移動(dòng),我們需要用雙面膠把舵機(jī)固定在鞋盒上。隨后,我們?cè)侔讯鏅C(jī)連接到擴(kuò)展板上,使舵機(jī)的初始狀態(tài)能夠貼近盒子,這就為之后搖臂的運(yùn)動(dòng)提供了充足的運(yùn)動(dòng)空間。
舵機(jī)轉(zhuǎn)動(dòng)帶動(dòng)搖臂轉(zhuǎn)過一定的角度,再拉扯線就能夠使木偶做運(yùn)動(dòng)。木偶的動(dòng)作需要讓觀眾清楚地感受到,這就要求線運(yùn)動(dòng)的距離要長(zhǎng),不能只是輕微地拉一下,那如何才能讓線走過的距離盡可能地長(zhǎng)呢?
做圓周運(yùn)動(dòng)的物體有兩個(gè)速度,分別是角速度和線速度,線速度=角速度×半徑。在舵機(jī)轉(zhuǎn)速既定的情況下,搖臂做的圓周運(yùn)動(dòng)角速度既定,而直接影響木偶扯線運(yùn)動(dòng)距離的則是搖臂上與扯線相連的點(diǎn)的線速度,該點(diǎn)的線速度越大,扯線的運(yùn)動(dòng)距離越大。根據(jù)上面的公式可知,要增大該點(diǎn)的線速度,我們可以通過加長(zhǎng)連接點(diǎn)的運(yùn)動(dòng)半徑,也就是加長(zhǎng)搖臂的長(zhǎng)度來實(shí)現(xiàn)這一效果。本實(shí)驗(yàn)選擇在舵機(jī)原有的搖臂上另接一段木棍,再將扯線綁在木棍上(如圖5)。
● 編程控制
制作完提線木偶的外觀之后,我們就可以開始進(jìn)入編程階段,本次實(shí)驗(yàn)使用的是Mixly的編程環(huán)境。
在編寫代碼之前,我們應(yīng)先為木偶設(shè)計(jì)幾個(gè)基本動(dòng)作。木偶的四肢都連接了線,所以可以設(shè)置幾個(gè)四肢運(yùn)動(dòng)的基本動(dòng)作,如抬左右手、踢腳等。如圖6所示,提拉每個(gè)部位相應(yīng)的線,就能達(dá)到所需的效果。
設(shè)計(jì)好基本動(dòng)作之后,我們就可以編程了。Mixly的執(zhí)行器中有舵機(jī)控制的節(jié)點(diǎn),利用該節(jié)點(diǎn),我們可以方便地控制舵機(jī)轉(zhuǎn)動(dòng)特定的角度(如圖7)。
舵機(jī)是執(zhí)行器,因此要連接在數(shù)字引腳中,而且舵機(jī)的轉(zhuǎn)動(dòng)角度是一定范圍內(nèi)可選擇的,因此可把舵機(jī)接在PWM腳處,這里以3,4,6,7引腳為例。
經(jīng)過調(diào)試得知,當(dāng)3號(hào)引腳舵機(jī)的角度是150度時(shí),舵機(jī)能夠貼近盒子,因此,把150度作為左腳放下的狀態(tài)。調(diào)整3號(hào)引腳的角度,當(dāng)調(diào)節(jié)到50度的時(shí)候,木偶的右腳能夠被提起到合適的高度(舵機(jī)的安裝狀態(tài)不同,初始位置的角度和拉扯線的角度都會(huì)有差別,因此角度需要根據(jù)自己的情況而定)。右手、右腳、左手的角度調(diào)試和左腳相同。為了方便之后的動(dòng)作調(diào)用,我們可以利用Mixly的函數(shù)功能模塊,把四肢的基礎(chǔ)運(yùn)動(dòng)都封裝成函數(shù)。因?yàn)樗闹\(yùn)動(dòng)有快有慢,有不同的運(yùn)動(dòng)頻率,所以可使用帶有參數(shù)傳遞的函數(shù)節(jié)點(diǎn)(如圖8)。
四肢運(yùn)動(dòng)的參考代碼分別如圖9、圖10、圖11、圖12所示。
除了最簡(jiǎn)單的動(dòng)四肢外,我們還可以放飛想象,制作一些復(fù)合的動(dòng)作,如雙手一起舞動(dòng),雙腳一起跳躍,四肢一起舞動(dòng),等等。
● 拓展提升
制作完基本動(dòng)作之后,我們就可以給木偶安排表演的曲目了。選擇一曲節(jié)奏感強(qiáng)的歌曲,并想象在這樣的歌曲中,你會(huì)如何舞動(dòng),然后把你的動(dòng)作附給木偶,讓木偶和你一起舞動(dòng),這絕對(duì)是件愜意的事情!
● 小結(jié)
舵機(jī)是一個(gè)十分實(shí)用的零件,與馬達(dá)相比,它能夠方便地控制轉(zhuǎn)動(dòng)的角度,如果再配合轉(zhuǎn)盤和搖臂,就能夠?qū)嵌群途嚯x等量進(jìn)行準(zhǔn)確的控制,本次實(shí)驗(yàn)用到的就是舵機(jī)對(duì)距離的控制。這樣的使用方式還能遷移到其他設(shè)計(jì)中,如把軟的線換成鐵絲,把木偶變成一個(gè)機(jī)器人的臉,利用以上原理就能夠讓機(jī)器人的五官動(dòng)起來,做出不同的表情;把木偶換成皮影,把線變成鐵絲或木棍,皮影戲是不是也就能夠完成了?
同樣的原理,應(yīng)用在不同的場(chǎng)景中就能有不同的效果。創(chuàng)客就是這么神奇,大家都開始動(dòng)手試試吧!