最近常陪多媒體系的謝老師到成大物理治療系找蔡老師喝飲料,啊不是,是他們兩個在討論事情,我在旁邊喝飲料,哈哈哈。
目前在討論的課題是使用Leap motion去捕捉手部的動作以進行相關的應用
不過在討論的應用中有一個動作是需要使用者手部用力握球並計算其次數,由於Leap motion是使用視覺的方式來分析手部的動作,所以當手中握著一顆球時,這棵球會干擾手指動作角度的判斷,這時專門來喝飲料的人就派上用場了(可是吼,我明明只是來喝飲料交朋友的,為什麼我也要做!)
關於這個使用者手部用力握球的動作,只要使用者的手部肌肉有用力去做出握球的動作,目的就算達成了,所以我提出的方案就是利用壓感電阻(Force-Sensitive Resistor)去偵測手部是否有用力握球。
目前我手邊的壓感電阻是跟我導師班的學生借的,大小約是4.4cm見方,我把它接到Arduino上,寫程式去讀取其數值,發現其最大值是1023,在平放桌上,沒有加任何壓力的狀況下它就會有約500左右的背景值,若是把它彎曲,數值馬上就上升到1023,所以這一塊壓感電阻是不能在曲面上使用的。
***** 2016/1/11 補充 *****
我要承認一件事情,我犯了一件天下的男人都會犯的錯誤,就是.....太自以為是.....(這其實女人也會犯這個錯誤,哈哈哈)
拿到壓感電阻後,我想說啊不就是個電阻,兩條線一接就插到Arduino上去,三兩下就把程式寫好,搞定!但心中一直有個疙瘩,因為覺得很奇怪,為什麼"沒有加任何壓力的狀況下它就會有約500左右的背景值",後來終於忍不住上網查了一下,原來我少加了一個10k電阻來形成分壓電路,加上後數值就會介於未加壓的0與最大值1023之間了!
把壓感電阻與藍牙接到Arduino上,接法與Arduino上的程式碼可參考"由手機透過藍牙接收設備的類比資料"這一篇文章
在應用的架構上,我準備以Arduino去即時蒐集資料,再使用藍牙把資訊送回PC。為了方便讓謝老師可以把這一部份的訊息整合到他的程式中,所以我寫了一個簡單的範例程式說明如何接收回傳資料,這個程式是由上次顏色識別的接收程式修改而來,程式的寫法可參考"顏色識別進行情境控制"這一篇文章。
基本上是愈用力壓,顏色愈紅,呵呵呵
經測試的結果發現,此種壓感電阻雖然容易使用,但不精確,而且反應以乎太快了,輕壓一下就到最大值了(我想適合於做觸碰開關用),所以應該不適合用來偵測確實的力道或重量,但在這個應用例中只是要偵測使用者的手部肌肉是否有用力去做出握球的動作,所以可以透過器具的設計來達到想達成的目的。
原本想像中應是使用適合手掌握住大小的微硬球對半切,中間夾壓感電阻,不過在辦公室沒有樣的東西,所以我是使用上下具有硬板的便條紙,壓感電阻夾中間,上面的硬板底下放了一塊薄海棉
當我用力去壓時,一開始的力道會被海棉吸收掉,在加大力量到一定的力道後,壓感電阻才會感受到,當數值到達最大後就可認為使用者用力壓過一次了。做完了,繼續喝飲料交朋友囉!