0

0
0

文字

分享

0
0
0

輕鬆使用Android裝置控制樂高機器人:單點觸控

馥林文化_96
・2012/06/26 ・2024字 ・閱讀時間約 4 分鐘 ・SR值 538 ・八年級

文/曾吉弘(CAVE教育團隊

暑假何處去?一起來玩機器人吧!本期CAVE的App Inventor機器人專欄要教您如何利用Android手機的觸碰面板來控制樂高機器人,控制起來超順暢。快亮出您的手機和手指吧!本次範例首先透過atan反正切函數將觸控點座標推算回與X軸夾角之後,再分別使用sin與cos函數轉換為左右馬達電力,您可清楚體驗不同的手指位置對於機器人動作的影響。

首先請把NXT 機器人準備好( 圖1),並將左側馬達接在NXT 的輸出端B ,右側則是輸出端C(註1)。請確認NXT 主機的藍牙是啟動的,接著將NXT 主機與Android 手機進行藍牙配對(註2),完成之後就可以把機器人放到一邊了,啟動藍牙之後你可以從NXT 主機的螢幕左上角看到藍牙的符號。

圖1  樂高NXT 機器人組裝範例。

-----廣告,請繼續往下閱讀-----

接下來依序介紹程式的各個功能:

STEP1:

首次進入程式的畫面如圖2a , 你可以看到只有 「NXT 裝置清單/ 連線」按鈕可以按,「斷線」按鈕則無法按下。點選「連線」按鈕後進入藍牙裝置清單(圖2),連線成功就可以看到黃色的觸控面板出現了。

圖2 程式首次執行的畫面→點選連線按鈕後進入藍牙裝置清單→連線成功後出現觸控面板

-----廣告,請繼續往下閱讀-----

STEP2:

接著是將ListPickerConnect 清單指定為藍牙配對裝置清單( 圖3), 點選「連線」按鈕之後, 會進入Android 裝置的藍牙連線清單(圖2),請找到剛剛配對完成的NXT 主機名稱(本範例為abc),點選之後就會由Android 裝置對NXT 主機發起藍牙連線。

圖3  ListPickerConnect 清單內容指定為藍牙配對裝置清單。

STEP3:

-----廣告,請繼續往下閱讀-----

本次程式的關鍵在於Animation 的ImageSprite 動畫精靈元件。它可根據我們手指頭拖拉而移動,也可以根據手機上Orientation sensor 的傾斜狀況來移動。或者可自行設定它的速度(speed)與指向(heading)欄位

來完成一個打磚塊遊戲(註3)。

如果要用手指頭拉動Imagesprite元件效果, 需把它放在Canvas 畫布元件中, 接著根據Canvas.Dragged事件回傳的座標來移動它的位置。ImageSprite 可讓你自由上傳圖檔做為其背景圖片, 不過別上傳太大的圖啊, 把畫面占滿就不好玩了。請在ImageSprite 的Picture 欄位點選「Add⋯」按鈕上傳圖片即可(圖4)。

圖4  上傳ImageSprite 背景圖檔。

-----廣告,請繼續往下閱讀-----

STEP4:

程式主要執行區在於Canvas.Dragged 拖拉事件。我們分段說明:

1 . 使用Ima g eSp r i t e .Mo v e To 指令,將XY欄位指定為CurrentX與CurrentY,這樣就能用手指拉著可愛的CAVE小圖走。

2. 在標籤Label上顯示XY座標,由於Canvas 的原點位於左上角,所以我們需要平移160像素才能把原點移到畫布中心。除以1.6是轉換成百分比以利後續的馬達電力換算。

-----廣告,請繼續往下閱讀-----

3. 接下來是兩個重要的變數X與Y:

• 變數X為觸碰點與X軸的夾角θ 公式為atan(y/x) – 45。atan是反正切函數, 可由y/x反推出夾角θ 。

• 變數Y為觸碰點與螢幕中心的距離,公式為√((x^2) + (y^2))。距離愈遠跑愈快,樂高NXT機器人的馬達電力範圍為100(正向全速旋轉)到-100(反向全速旋轉),數值超過上下限則就限制在100或-100。

4.最後將B馬達電力指定為sin(x)*y,C馬達電力指定為cos(x)*y。

-----廣告,請繼續往下閱讀-----

大功告成,擦擦汗吧!

圖5  Canvas.Dragged 拖拉事件,程式主執行區。

STEP5:

按下「停止」按鈕之後,會執行三件事:1. 使ImageSprite 歸位;2. 停下機器人以及3. 將畫面數值歸零。由於ImageSprite 圖案尺寸為30×30像素, 所以我們需將Canvas 畫布尺寸160 再減掉15 得出145 才會使ImageSprite 回到畫面正中間。

-----廣告,請繼續往下閱讀-----

STEP6:

按下「斷線」按鈕之後,會中止藍牙連線(BluetoothClient.Disconnect指令),並使按鈕恢復到未連線時的狀態,黃色的觸控面板也看不到了。這時候你可以再次發起連線。

圖6  按下停止按鈕停下機器人並使ImageSprite歸位。

圖7  按下「斷線」按鈕時中斷藍牙連線。

STEP7:

實際執行的時候, 請先確認NXT已經開機且藍牙也啟動了。接著在你的Android 裝置上點選程式畫面中的「連線」按鈕,會進到如圖2a 的藍牙清單畫面,點選NXT 主機名稱連線成功後就會出現觸控面板。快亮出你的手指頭來控制機器人吧。沿著畫面中心上下(Y 軸)拉動手指會讓機器人前進或後退;左右拉動(X 軸)則是原地左右轉。你可以從停止按鈕上的兩個數字看到ImageSprite 的XY 座標。

圖8  手指往左上方拖動時,機器人向左前方前進。/手指往右下方拖動時,機器人向右後方後退。

就本團隊的教學經驗而言,本範例是結合三角函數的絕佳範例。在筆者高中時期,三角函數只是生硬的公式,不過就是背背sin2θ 與sinθ 之間的關係式,無法有實際的應用。但在機器人領域中,三角函數是相當重要的技巧,可讓機器人用來定位、推算方位角等等。相信你在練習過本範例之後,對於三角函數的應用以及角度與數值之間的關係都會非常清楚唷!

圖9 座標示意圖

本程式可直接由Google Play 下載,請在GooglePlay 搜尋「CAVE 教育團隊」就找得到了,或掃描以下的QRCode 也可以唷!

註1: 機器人運動方向有可能因為車頭指向而和程式設定相反,只要將左右馬達電線互換即可。

註2:將Android 手機設定為可安裝非Market 下載的程式以及讓手機與樂高NXT 主機連線等說明請參考:http://www.appinventor.tw。

註3:打磚塊遊戲請由http://www.appinventor.tw 下載。

文章原文刊載於《ROBOCON》國際中文版2012/7月號

-----廣告,請繼續往下閱讀-----
文章難易度
馥林文化_96
54 篇文章 ・ 5 位粉絲
馥林文化是由泰電電業股份有限公司於2002年成立的出版部門,有鑒於21世紀將是數位、科技、人文融合互動的世代,馥林亦出版科技機械類雜誌及相關書籍。馥林文化出版書籍http://www.fullon.com.tw/

0

0
0

文字

分享

0
0
0
為什麼越累越難睡?當大腦想下班,「腸道」卻還在加班!
鳥苷三磷酸 (PanSci Promo)_96
・2026/04/30 ・2519字 ・閱讀時間約 5 分鐘

本文與  益福生醫 合作,泛科學企劃執行

昨晚,你又在床上翻來覆去、無法入眠了嗎?這或許是現代社會最普遍的深夜共鳴。儘管換了昂貴的乳膠枕、拉上百分之百遮光的窗簾,甚至在腦海中數了幾百隻羊,大腦的那個「睡眠開關」卻彷彿生鏽般卡住。這種渴望休息卻睡不著的過程,讓失眠成了一場耗損身心的極限馬拉松 。

皮質醇:你體內那位「永不熄滅」的深夜警報器

要理解失眠,我們得先認識身體的一套精密防衛系統:下視丘-垂體-腎上腺軸(HPA axis) 。這套系統原本是演化給我們的禮物,讓我們在面對劍齒虎或突如其來的危險時,能迅速進入「戰鬥或快逃」的備戰狀態。當這套系統啟動,腎上腺就會分泌皮質醇 (壓力荷爾蒙),這種荷爾蒙能調動能量、提高警覺性,讓我們在危機中保持清醒 。

然而,現代人的「劍齒虎」不再是野獸,而是無止盡的專案進度、電子郵件與職場競爭。對於長期處於高壓或高強度工作環境的人們來說,身體的警報系統可能處於一種「切換不掉」的狀態。

-----廣告,請繼續往下閱讀-----

在理想的狀態下,人類的生理時鐘像是一場精確的接力賽。入夜後,身體會進入「修復模式」,此時壓力荷爾蒙「皮質醇」的濃度應該降至最低點,讓「睡眠荷爾蒙」褪黑激素(Melatonin)接棒主導。褪黑激素不僅負責傳遞「天黑了」的訊號,它還能抑制腦中負責維持清醒的食慾素(Orexin)神經元,幫助大腦順利關閉覺醒開關。

對於長期處於高壓或高強度工作環境的人們來說,身體的警報系統可能處於一種「切換不掉」的狀態 / 圖片來源:envato

然而,當壓力介入時,這場接力賽就會變成跑不完的馬拉松賽。研究指出,長期的高壓環境會導致 HPA 軸過度活化,使得夜間皮質醇異常分泌。這不僅會抑制褪黑激素的分泌,更會讓食慾素在深夜裡持續活化,強迫大腦維持在「高覺醒狀態(Hyperarousal)」。 這種令人崩潰的狀態就是,明明你已經累到不行,但大腦卻像停不下來的發電機!

長期的睡眠不足會導致體內促發炎細胞激素上升,而發炎反應又會進一步活化 HPA 軸,分泌更多皮質醇來試圖消炎,高濃度的皮質醇會進一步干擾深層睡眠與快速動眼期(REM),導致睡眠品質變得低弱又破碎,最終形成「壓力-發炎-失眠」的惡行循環。也就是說,你不是在跟睡眠上的意志力作對,而是在跟失控的生理長期鬥爭。

從腸道重啟好眠開關:PS150 菌株如何調校你的生理時鐘

面對這種煞車失靈的失眠困局,科學家們將目光投向了人體內另一個繁榮的生態系:腸道。腸道與大腦之間存在著一條雙向通訊的高速公路,這就是「菌-腸-腦軸 (Microbiome-Gut-Brain Axis, MGBA)」,而某些特殊菌株不僅能幫助消化、排便,更能透過神經與內分泌途徑與大腦對話,直接參與調節我們的壓力調節與睡眠節律。這種菌株被科學家稱為「精神益生菌」(Psychobiotics)。

-----廣告,請繼續往下閱讀-----
腸道與大腦之間存在著一條雙向通訊的高速公路,這就是「菌-腸-腦軸 (Microbiome-Gut-Brain Axis, MGBA)」/圖片來源:益福生醫

在眾多研究菌株中,發酵乳桿菌 Limosilactobacillus fermentum PS150 的表現格外引人注目。PS150菌株源於亞洲益生菌權威「蔡英傑教授」團隊的專業研發,累積多年功能性菌株研發經驗的科學成果。針對臨床常見的「初夜效應」(First Night Effect, FNE),也就是現代人因出差、換床或環境改變導致的入睡困難,俗稱認床。科學家在進行實驗時發現,補充 PS150 菌株能顯著恢復非快速動眼期(NREM)的睡眠長度,且入睡更快,起床後也更容易清醒。更重要的是,不同於常見的藥物助眠手段(如抗組織胺藥物 DIPH)容易造成快速動眼期(REM)剝奪或導致睡眠破碎化,PS150 菌株展現出一種更為「溫和且自然」的調節力,它能有效縮短入睡所需的時間,並恢復睡眠中代表深層修復的「Delta 波」能量。

科學家發現,即便將 PS150 菌株經過特殊的熱處理(Heat-treated),轉化為不具活性但保有關鍵成分的「後生元」(Postbiotics),其生物活性依然能與活菌媲美 。HT-PS150 技術解決了益生菌在儲存與攝取過程中容易失去活性的痛點,讓這些腸道通訊員能更穩定地發揮作用 。

在臨床實驗中,科學家觀察到一個耐人尋味的現象:當詢問受試者的主觀感受時,往往會遇到強大的「安慰劑效應」,無論是服用 HT-PS150 還是安慰劑的人,主觀上大多表示睡眠變好了。這種「體感上的進步」有時會掩蓋真相,讓人分不清是心理作用還是真實效益。

然而,客觀的生理數據(Biomarkers)卻揭開了關鍵的差異。在排除主觀偏誤後,實驗數據顯示 HT-PS150 組有更高比例的人(84.6%)出現了夜間褪黑激素分泌增加,且壓力荷爾蒙(皮質醇)顯著下降,這證明了菌株確實啟動了體內的睡眠調控系統,而不僅僅是心理安慰。

-----廣告,請繼續往下閱讀-----

最值得關注的是,對於那些失眠指數較高(ISI ≧ 8)的族群,這種「生理修復」與「主觀體感」終於達成了一致。這群人在補充 HT-PS150 後,不僅生理標記改善,連原本嚴重困擾的主觀睡眠效率、持續時間,以及焦慮感也出現了顯著的進步。

了解更多PS150助眠益生菌:https://lihi3.me/KQ4zi

重新定義深層睡眠:構建全方位的深夜修復計畫

睡眠從來就不只是單純的休息,而是一場生理功能的全面重整。想要重獲高品質的睡眠,關鍵在於為自己建立一個全方位的修復生態系。

這套系統的基石,始於良好的生活習慣。從減少睡前數位螢幕的干擾、優化室內環境,到作息調整。當我們透過規律作息來穩定神經系統,並輔以現代科學對於 PS150 菌株的調節力發現,身體便能更順暢地啟動睡眠開關,回歸自然的運作節律。

-----廣告,請繼續往下閱讀-----

與其將失眠視為意志力的抗爭,不如將其看作是生理機能與腸道微生態的深度溝通。透過生活作息的調整與科學實證的支持,每個人都能擁有掌控睡眠的主動權。現在就從優化生活型態開始,為自己按下那個久違的、如嬰兒般香甜的關機鍵吧。

與其將失眠視為意志力的抗爭,不如將其看作是生理機能與腸道微生態的深度溝通 / 圖片來源 : envato

-----廣告,請繼續往下閱讀-----
文章難易度

討論功能關閉中。

鳥苷三磷酸 (PanSci Promo)_96
247 篇文章 ・ 319 位粉絲
充滿能量的泛科學品牌合作帳號!相關行銷合作請洽:contact@pansci.asia

0

0
0

文字

分享

0
0
0
肺部為何會「結疤」?揭開比癌症更致命的「菜瓜布肺」,科學家如何找到破解惡性循環的新契機
鳥苷三磷酸 (PanSci Promo)_96
・2026/05/08 ・2041字 ・閱讀時間約 4 分鐘

-----廣告,請繼續往下閱讀-----

本文由 肺纖維化(菜瓜布肺)社團衛教 合作,泛科學撰文

在現代醫學的警示清單裡,乳癌、大腸癌這些疾病大家都不陌生;但有一個「隱蔽且致命」的威脅卻常被忽視,那就是「肺纖維化」。其中最常見的類型「特發性肺纖維化」(IPF),其預後往往不太樂觀,確診後的五年存活率甚至比許多常見的癌症還低。

首先,我們得先破解一個迷思:肺纖維化並不是單一疾病,而是許多種間質性肺病的共同表現。當我們聽到「肺纖維化」,腦中常浮現「菜瓜布肺」的形象,患者的肺部外觀充滿一個個空洞與疤痕,像極了乾燥的絲瓜。這精準描繪了肺部組織逐漸硬化、失去彈性的過程。

更重要的是,IPF 這類肺纖維化的威脅在於「不可逆」的特性,一旦形成就很難逆轉。這跟部分 COVID-19 康復者身上、仍有機會復原的肺纖維化,是兩種完全不同的概念。

-----廣告,請繼續往下閱讀-----
IPF 這類肺纖維化的威脅在於「不可逆」的特性,一旦形成就很難逆轉 / 圖示來源:shutterstock

肺部為何會變成「菜瓜布」?

為什麼好端端的肺會變成菜瓜布?這其實是一場身體修復機制失控的結果。

「纖維化」的組織,就是肺部間質組織(interstitium)的疤痕化。間質是圍繞在肺泡周圍,包含血管與支持肺部結構的結締組織。在正常情況下,肺部損傷後會啟動修復機制,並再生健康組織。但在肺纖維化的患者體內,這套修復機制卻「當機」了。

身體會不斷地發出訊號,導致負責修復工作的「纖維母細胞」(fibroblasts)被過度活化,進而失控地沉積膠原蛋白疤痕組織,最終在肺部形成永久性的纖維化。

科學家發現,這個過程之所以棘手,在於它是一個「惡性循環」,肺部同時存在著「發炎反應」與「纖維化」這兩條路徑 ,它們相互加乘,演變成難以阻斷的強大破壞力。

-----廣告,請繼續往下閱讀-----

雖然特發性肺纖維化 (IPF) 的具體成因不明 ,但已知某些特定族群的風險更高。例如抽菸,特定年齡與性別(50歲以上男性)、長期暴露於粉塵環境的工作者(農業、畜牧業、採礦業…)、胃食道逆流者。此外,患有自體免疫疾病(如類風濕性關節炎、乾燥症、硬皮症、皮肌炎/多發性肌炎,)的患者,他們併發肺纖維化的機率遠高於一般人,必須特別警覺。

雖然特發性肺纖維化 (IPF) 的具體成因不明 ,但已知某些特定族群的風險更高。/ 圖示來源:shutterstock

打斷惡性循環的挑戰,為何只對抗「纖維化」還不夠?

面對這個不可逆的疾病,醫學界長年束手無策,直到 2014 年才迎來一道曙光。美國 FDA 批准了兩種機制不同的新藥:Nintedanib 和 Pirfenidone。這兩種藥物的出現是治療史上的分水嶺,首度被證實能夠「延緩」IPF 患者肺功能的惡化速度。

然而,這場戰役尚未結束。現有的治療雖然帶來了希望,卻也凸顯了「未被滿足的醫療需求」。從機制上來看,這些藥物主要抑制的是「纖維化路徑」。

這讓科學界開始思考這個未被滿足的棘手問題:既然疾病的本質是「發炎」與「纖維化」的雙重打擊,那麼,我們是否能找到「同時抑制」這兩條路徑的全新策略,從而更有效地打斷這個惡性循環?

-----廣告,請繼續往下閱讀-----

找到同時調控「發炎」與「纖維化」的新靶點

為了解決難題,科學家將目光鎖定在一個細胞內的酵素:磷酸二酯酶 4B(PDE4B)

為什麼鎖定它?讓我們看看它的「雙重作用」機制:

  1. 關鍵位置: PDE4B 同時存在於免疫細胞(與發炎有關)與纖維母細胞(與纖維化有關)當中。
  2. 作用機制: PDE4B 的主要工作是降解細胞內一種叫 cAMP(環磷酸腺苷) 的訊號分子。cAMP 可以被視為細胞內的「穩定信號」。
  3. 雙重抑制: 當我們使用藥物抑制了 PDE4B 的活性,細胞內的 cAMP 就不會被分解,濃度會隨之升高。高濃度的 cAMP 能穩定免疫細胞和纖維母細胞,同時產生抗發炎抗纖維化的雙重效應。

簡單來說,鎖定並抑制 PDE4B,就像是同時抑制了免疫風暴與纖維化的工程,有望從雙從抑制打擊這個惡性循環。

全球臨床試驗帶來的新希望

近十年來,全球在肺纖維化領域投入了大量的臨床試驗,我們相信,在科學家逐步破解肺纖維化惡性循環的複雜難題後,期盼未來能為無數患者爭取到更安全、健康的生活與未來。

-----廣告,請繼續往下閱讀-----

最後,我們必須再次提醒,特發性肺纖維化(IPF)與漸進性肺纖維化(PPF)是極具破壞性、且不可逆的疾病。面對這個比癌症更致命的對手,雖然現有的治療手段能延緩惡化,但無法逆轉已經形成的肺部疤痕組織,因此「早期診斷、早期治療」仍是對抗肺纖維化最重要的黃金時刻。

必須再次提醒,特發性肺纖維化(IPF)與漸進性肺纖維化(PPF)是極具破壞性、且不可逆的疾病。/ 圖示來源:


-----廣告,請繼續往下閱讀-----
文章難易度

討論功能關閉中。

鳥苷三磷酸 (PanSci Promo)_96
247 篇文章 ・ 319 位粉絲
充滿能量的泛科學品牌合作帳號!相關行銷合作請洽:contact@pansci.asia

0

0
0

文字

分享

0
0
0
輕鬆使用Android裝置控制樂高機器人:「說」出機器人感測器的狀態
馥林文化_96
・2013/04/22 ・2764字 ・閱讀時間約 5 分鐘 ・SR值 523 ・七年級

-----廣告,請繼續往下閱讀-----

文/曾吉弘(CAVE教育團隊

我們已經在前兩期的專欄中(2013年1月號、2013年3月號)介紹如何用Android手機上的姿態感測器來控制樂高機器人。搭配手機的感測器,您可以像玩Wii遊戲機一樣,以體感的方式來與機器人互動。本次專欄將使用App Inventor中的TextToSpeech元件(本文後簡稱TTS元件),讓手機「說」出機器人感測器的狀態(圖1)。程式執行的過程中,我們還可以即時更改感測器的類型,是很實用的功能呢!

App Inventor的TextToSpeech元件可以讓Android手機以語音方式輸出指定的文字或數值內容,本範例就是讓手機每秒播報一次感測器數值。除此之外還可指定語系與國家,預設值是eng(英語)與USA(美國),代表美式英語。您可以參考App Inventor中文學習網來改為其他歐陸語系,例如德語、法語或義大利語,會有更有趣的效果。

圖1 讓TextToSpeech元件說「hello」。

-----廣告,請繼續往下閱讀-----

請注意!目前App Inventor不支援中文等亞洲語系的語音輸出。

開始玩機器人

請把NXT機器人組裝好,並將左側馬達接在NXT的輸出端B,右側則是輸出端C(註1)。請確認NXT主機的藍牙是啟動的,接著將NXT主機與Android手機進行藍牙配對(註2),完成之後就可以把機器人放到一邊了。啟動藍牙之後您可以從NXT主機的螢幕左上角看到藍牙的符號。

接下來依序介紹程式的各個功能:

STEP1  登入畫面:

-----廣告,請繼續往下閱讀-----

首次進入程式的畫面如圖2a,只有「NXT裝置清單/連線」按鈕可以按,其它所有按鈕都無法操作。點選[NXT裝置清單/連線]按鈕後進入藍牙裝置清單(圖2b),請找到剛剛配對完成的NXT主機名稱(本範例為abc),點選之後就會由Android裝置對NXT主機發起藍牙連線。順利連線成功的話,就可接續選擇感測器類型(圖2c)。

圖2a 程式首次執行的畫面。 圖2b 點選連線按鈕後進入藍牙裝置清單。 圖2c 連線成功後才可選擇感測器類型。

STEP2  程式初始化:

在點選連線清單之前(ListPickerConnect的BeforePicking事件),需先將清單內容指定為Android裝置上的藍牙配對清單(圖3a)。點選之後則先測試連線是否成功,成功則將「選擇感測器」與「開始念/停止」設為可點選(圖3b)。

-----廣告,請繼續往下閱讀-----

圖3a 指定藍牙配對裝置清單。

圖3b 連線成功後啟動相關元件。

STEP3 選擇感測器類型:

為了節省畫面空間,我們使用了Listpicker搭配清單來達到下拉式選單的效果。首先需要宣告一個清單,內容為(color.jpg, sound.jpg, light.jpg, ultra.jpg),就是使用的感測器圖檔名稱(圖4a)。編號index則依序由1到4。本範例就是使用這個編號來更改顯示的圖片與感測器類型。

-----廣告,請繼續往下閱讀-----

由圖4b中可看到當我們點選了要使用的感測器之後,就要把「開始念/停止」按鈕設為可點選,代表我們準備好要念出感測器數值了。另外還把這個編號所代表的項目內容顯示在畫面上,最後則將Image元件的圖片換成這個編號所代表的圖檔(select list item指令)。例如圖4a中的sensorList清單中的第3號的項目內容就是「light.jpg」。

圖4a 宣告一個陣列來存放圖檔。

圖4b 點選感測器類型之前與之後事件。

注意!List清單實際上就是一般程式語言中的陣列(array),App Inventor使用了較為親民的用語。另外n個項目的陣列其項目編號是由0到n-1,App Inventor則是1到n。

-----廣告,請繼續往下閱讀-----

STEP4  根據選擇的感測器類型來控制TTS元件播報內容:

選擇感測器類型,實際上就是在ListPicker_SensorList中點選了某個項目,接著就要根據這個項目的編號index(請注意,不是項目內容!)來決定TTS元件的播報內容。在此我們使用一個副程式say來管理程式,讓程式更簡明易懂。在say副程式中,它會藉由接收到的sensor參數(也就是傳入的編號index)來決定TTS元件的播報內容與TextBox/Label的顯示內容。請看圖5說明:

圖5 say副程式中透過使用者所點選的項目編號來決定執行內容。

STEP5  使用Clock元件來控制TTS元件:

-----廣告,請繼續往下閱讀-----

我們將Clock元件的TimerInterval設定為2000毫秒,代表每兩秒呼叫一次say副程式,並傳入剛才所點選的感測器類型編號(SelectionIndex)。這樣就能控制TTS元件的播報內容與TextBox/Label的顯示內容(圖6)。

圖6 透過點選項目的編號來呼叫say副程式。

STEP6  開始/停止播報感測器數值:

如果在尚未建立與機器人的藍牙連線之前就要TTS念些什麼的話,就會得到-1 這個討厭的數值。所以我們使用「開始念/停止」按鈕來啟動或關閉Clock元件,並將現在的播報狀態(STOPSPEAKING)顯示在手機的狀態列。您可以隨時用這個按鈕來決定停止或繼續播報資料(圖7)。

-----廣告,請繼續往下閱讀-----

圖7點選按鈕來啟動/關閉計時器。

STEP7  斷線:

按下「斷線」按鈕之後,會中止藍牙連線(BluetoothClient.Disconnect指令),並使按鈕恢復到未連線時的狀態(圖8)。

圖8 按下「斷線」按鈕時中斷藍牙連線。

操作

實際執行的時候,請先確認NXT已經開機且藍牙也啟動了,並將顏色、聲音、光與超音波感測器依序接在NXT主機的1到4號輸入端。接著在您的Android裝置上點選程式畫面中的「連線」按鈕,會進到如圖4b的藍牙清單畫面,點選您所要的NXT主機名稱並連線成功後,接著選擇感測器類型,點選之後會顯示對應的感測器圖片與名稱,如圖9所示。

圖9 連線成功後,可選擇不同的感測器,會顯示不同圖案與字樣。

最後點選旁邊的「開始念/停止」按鈕就可以聽到手機把感測器數值念出來了。以下是選擇超音波感測器時的畫面,畫面也會同時顯示數值為58(圖10)。

圖10 手機開始唸出感測器數值,並顯示在畫面上。

TTS元件是用來語音輸出的元件,它可以說出我們所指定的內容,包括文字與數字。您可以讓機器人用說的方式來呈現它的狀況,例如撞到牆壁時,可以說出「Ouch!」等趣味效果。期待您從本期專欄的內容來激盪出更多有趣的火花。請繼續關注CAVE的機器人專欄唷!

 

歡迎大家由此連結下載本程式來玩玩看,或掃描以下的QRCode也可以直接將檔案下載到手機。或到App Inventor中文教學網上直接下載本範例的App Inventor原始檔與apk安裝檔。本程式已上架Google play,請到Google Play搜尋「CAVE教育團隊」就找得到我們的樂高機器人系列app了。

註1:想學如何開發App Inventor程式嗎?請到App Inventor中文學習網與我們一同學習。
註2:將Android手機設定為可安裝非Google Play下載的程式以及讓手機與樂高NXT主機連線等說明請參考此連結
註3:與NXT連線後如果出現[Error 402]之錯誤訊息請不必理會,程式依然能正確執行。

文章原文刊載於《ROBOCON》國際中文版2013/5月號

-----廣告,請繼續往下閱讀-----
馥林文化_96
54 篇文章 ・ 5 位粉絲
馥林文化是由泰電電業股份有限公司於2002年成立的出版部門,有鑒於21世紀將是數位、科技、人文融合互動的世代,馥林亦出版科技機械類雜誌及相關書籍。馥林文化出版書籍http://www.fullon.com.tw/

0

0
0

文字

分享

0
0
0
輕鬆使用Android裝置控制樂高機器人:單點觸控
馥林文化_96
・2012/06/26 ・2024字 ・閱讀時間約 4 分鐘 ・SR值 538 ・八年級

文/曾吉弘(CAVE教育團隊

暑假何處去?一起來玩機器人吧!本期CAVE的App Inventor機器人專欄要教您如何利用Android手機的觸碰面板來控制樂高機器人,控制起來超順暢。快亮出您的手機和手指吧!本次範例首先透過atan反正切函數將觸控點座標推算回與X軸夾角之後,再分別使用sin與cos函數轉換為左右馬達電力,您可清楚體驗不同的手指位置對於機器人動作的影響。

首先請把NXT 機器人準備好( 圖1),並將左側馬達接在NXT 的輸出端B ,右側則是輸出端C(註1)。請確認NXT 主機的藍牙是啟動的,接著將NXT 主機與Android 手機進行藍牙配對(註2),完成之後就可以把機器人放到一邊了,啟動藍牙之後你可以從NXT 主機的螢幕左上角看到藍牙的符號。

圖1  樂高NXT 機器人組裝範例。

-----廣告,請繼續往下閱讀-----

接下來依序介紹程式的各個功能:

STEP1:

首次進入程式的畫面如圖2a , 你可以看到只有 「NXT 裝置清單/ 連線」按鈕可以按,「斷線」按鈕則無法按下。點選「連線」按鈕後進入藍牙裝置清單(圖2),連線成功就可以看到黃色的觸控面板出現了。

圖2 程式首次執行的畫面→點選連線按鈕後進入藍牙裝置清單→連線成功後出現觸控面板

-----廣告,請繼續往下閱讀-----

STEP2:

接著是將ListPickerConnect 清單指定為藍牙配對裝置清單( 圖3), 點選「連線」按鈕之後, 會進入Android 裝置的藍牙連線清單(圖2),請找到剛剛配對完成的NXT 主機名稱(本範例為abc),點選之後就會由Android 裝置對NXT 主機發起藍牙連線。

圖3  ListPickerConnect 清單內容指定為藍牙配對裝置清單。

STEP3:

-----廣告,請繼續往下閱讀-----

本次程式的關鍵在於Animation 的ImageSprite 動畫精靈元件。它可根據我們手指頭拖拉而移動,也可以根據手機上Orientation sensor 的傾斜狀況來移動。或者可自行設定它的速度(speed)與指向(heading)欄位

來完成一個打磚塊遊戲(註3)。

如果要用手指頭拉動Imagesprite元件效果, 需把它放在Canvas 畫布元件中, 接著根據Canvas.Dragged事件回傳的座標來移動它的位置。ImageSprite 可讓你自由上傳圖檔做為其背景圖片, 不過別上傳太大的圖啊, 把畫面占滿就不好玩了。請在ImageSprite 的Picture 欄位點選「Add⋯」按鈕上傳圖片即可(圖4)。

圖4  上傳ImageSprite 背景圖檔。

-----廣告,請繼續往下閱讀-----

STEP4:

程式主要執行區在於Canvas.Dragged 拖拉事件。我們分段說明:

1 . 使用Ima g eSp r i t e .Mo v e To 指令,將XY欄位指定為CurrentX與CurrentY,這樣就能用手指拉著可愛的CAVE小圖走。

2. 在標籤Label上顯示XY座標,由於Canvas 的原點位於左上角,所以我們需要平移160像素才能把原點移到畫布中心。除以1.6是轉換成百分比以利後續的馬達電力換算。

-----廣告,請繼續往下閱讀-----

3. 接下來是兩個重要的變數X與Y:

• 變數X為觸碰點與X軸的夾角θ 公式為atan(y/x) – 45。atan是反正切函數, 可由y/x反推出夾角θ 。

• 變數Y為觸碰點與螢幕中心的距離,公式為√((x^2) + (y^2))。距離愈遠跑愈快,樂高NXT機器人的馬達電力範圍為100(正向全速旋轉)到-100(反向全速旋轉),數值超過上下限則就限制在100或-100。

4.最後將B馬達電力指定為sin(x)*y,C馬達電力指定為cos(x)*y。

-----廣告,請繼續往下閱讀-----

大功告成,擦擦汗吧!

圖5  Canvas.Dragged 拖拉事件,程式主執行區。

STEP5:

按下「停止」按鈕之後,會執行三件事:1. 使ImageSprite 歸位;2. 停下機器人以及3. 將畫面數值歸零。由於ImageSprite 圖案尺寸為30×30像素, 所以我們需將Canvas 畫布尺寸160 再減掉15 得出145 才會使ImageSprite 回到畫面正中間。

-----廣告,請繼續往下閱讀-----

STEP6:

按下「斷線」按鈕之後,會中止藍牙連線(BluetoothClient.Disconnect指令),並使按鈕恢復到未連線時的狀態,黃色的觸控面板也看不到了。這時候你可以再次發起連線。

圖6  按下停止按鈕停下機器人並使ImageSprite歸位。

圖7  按下「斷線」按鈕時中斷藍牙連線。

STEP7:

實際執行的時候, 請先確認NXT已經開機且藍牙也啟動了。接著在你的Android 裝置上點選程式畫面中的「連線」按鈕,會進到如圖2a 的藍牙清單畫面,點選NXT 主機名稱連線成功後就會出現觸控面板。快亮出你的手指頭來控制機器人吧。沿著畫面中心上下(Y 軸)拉動手指會讓機器人前進或後退;左右拉動(X 軸)則是原地左右轉。你可以從停止按鈕上的兩個數字看到ImageSprite 的XY 座標。

圖8  手指往左上方拖動時,機器人向左前方前進。/手指往右下方拖動時,機器人向右後方後退。

就本團隊的教學經驗而言,本範例是結合三角函數的絕佳範例。在筆者高中時期,三角函數只是生硬的公式,不過就是背背sin2θ 與sinθ 之間的關係式,無法有實際的應用。但在機器人領域中,三角函數是相當重要的技巧,可讓機器人用來定位、推算方位角等等。相信你在練習過本範例之後,對於三角函數的應用以及角度與數值之間的關係都會非常清楚唷!

圖9 座標示意圖

本程式可直接由Google Play 下載,請在GooglePlay 搜尋「CAVE 教育團隊」就找得到了,或掃描以下的QRCode 也可以唷!

註1: 機器人運動方向有可能因為車頭指向而和程式設定相反,只要將左右馬達電線互換即可。

註2:將Android 手機設定為可安裝非Market 下載的程式以及讓手機與樂高NXT 主機連線等說明請參考:http://www.appinventor.tw。

註3:打磚塊遊戲請由http://www.appinventor.tw 下載。

文章原文刊載於《ROBOCON》國際中文版2012/7月號

-----廣告,請繼續往下閱讀-----
文章難易度
馥林文化_96
54 篇文章 ・ 5 位粉絲
馥林文化是由泰電電業股份有限公司於2002年成立的出版部門,有鑒於21世紀將是數位、科技、人文融合互動的世代,馥林亦出版科技機械類雜誌及相關書籍。馥林文化出版書籍http://www.fullon.com.tw/