陳新龍
沙漏也叫作沙鐘,是一種古老的時間測量裝置。一般由兩個玻璃球和一個狹窄的連接管道組成的。沙子從充滿了沙子的上部玻璃球穿過狹窄的管道流入下部玻璃球,每次流完所需的時間是相對固定的,這樣一個沙漏就可以對應一個固定的時間值了。影響時間的因素包括填充物的多少、玻璃球內壁的曲線形狀、頸部管道的寬度、填充物的類型和質量等因素。
我們利用掌控板的仿真功能,一起來制作一個仿真版的掌控板電子沙漏吧(圖1)。

在利用掌控板編寫電子沙漏程序代碼前,我們需要明確幾個知識點。
掌控板屏幕的分辨率是128*64,顯示分辨率就是屏幕上顯示的像素點個數,一個漢字要占用12*16個像素,一個英文占用8*16個像素。按照這個屏幕分辨率,長度是128,128/12=10.67,也就是一排最多顯示10個漢字。高度是64,64/16=4,也就是最多顯示4排,也就是一屏最多40個漢字。同樣最多可以顯示4排英文,共64個字母(圖2)。

正切值是指直角三角形中,某一銳角的對邊與另一相鄰直角邊的比值,tanα=b/a。
對于任意一個實數x,都對應著唯一的角,而這個角又對應著唯一確定的正切值tanx,按照這個對應法則建立的函數稱為正切函數。正切是tanα=b/a,一個角的正切值永遠是不變的(圖3)。

最后需要了解的是掌控板的三軸(X、Y、Z)加速度,由于掌控板內置有加速度傳感器,能夠測量由于重力引起的加速度,我們可以利用mPython軟件仿真模擬掌控板的運動過程。X:向前和向后傾斜,Y:向左和向右傾斜,Z:上下翻轉。由于電子沙漏只需要使用到上下翻轉我們便需要用到Z軸加速度。
以上這些便是我們制作電子沙漏需要用到的知識點,理解透徹之后,我們可以動手開始編寫代碼程序了。我們需要先確定沙漏的外形外貌以及漏沙的過程,如圖3所示。在掌控板界面中我們繪制了上下兩個相對的等腰三角形,確定五個點的坐標:左上(0,0)、右上(127,0)、左下(0,63)、右下(127,63)和中心(63,31)。
確定角α的正切值,就是tanα=32/64=0.5,由于整個大三角形是等腰三角形,所以它的對角正切值也就是0.5,當Y等于1時,X就等于2,這樣可以把所有三角形的三個頂點坐標推算出來(圖4)。

通過mPython軟件進行代碼的編寫,首先繪制兩條對角線形成一個X形狀,這樣上下就會形成兩個三角形,其次通過循環對兩個三角形中的內容進行填充,通過循環的方式給兩個三角形(兩部分主要是沙漏上半部分和沙漏下半部分)進行繪制填充,圖4給大家提供了掌控板的Z軸加速度為正數時電子沙漏成正立變化關系圖,當掌控板的Z軸加速度為負數的時候,電子沙漏成倒立關系,小陳老師已經列出沙漏正立關系變化圖,看看聰明的你能不能也表示出倒立關系圖呢(圖5)。

具體代碼如圖6:

通過掌控板的仿真工具我們完成了沙漏的計時過程,效果還是非常逼真的,小陳老師這里追加一個思考題,如果想控制沙漏滴漏的過程時長為1分鐘,該如何實現此效果呢?聰明的你快來動手嘗試吧。期待你們能夠給我帶來驚喜。