有一把扣下板機就能發射雷射光束的衝鋒槍,就像電影上一樣,主角跟敵人使用光束互相對戰,而衝鋒光束槍就是剛剛所敘述的,透過雲教授製作,將這把雷射光束的衝鋒槍帶到現實中,你可以和朋友一起作戰,或是在現實中找一些能夠躲藏的障礙物,一起和敵人對戰吧!
科幻電影裡經常出現主角與對手激戰所使用的光束槍,在現實生活中亦能透過CPF來製作一把屬於自己獨一無二的衝鋒光束槍,讓玩家利用雷射模組將自己與電影場景連結,未來可以延伸應用與其他夥伴開啟雙人對戰模式,讓大家都能深入其境,感受虛擬世界中激戰的快感。
宏碁雲教授 - 1個
Leonardo 開發板 - 1個
Grove 擴充板 - 1個
雷射模組 - 1個
按鈕開關 - 1個
震動馬達 - 1個
連接雲教授,開啟CPF Arduino,進入Lesson 8 插槽模式。
先將雲教授與相對應感應器連接至Grove擴充板,光敏感測器連接至A0插槽,雷射模組連接上D2插槽,震動馬達連接上D3插槽,按鈕連接上D6插槽,180度伺服馬達則是連接至D4插槽,如圖:
圖
點擊執行按鈕,可對目前感應器進行各別操作與顯示,插槽A0顯示光敏感測器的值,D2欄位可以開關雷射模組,D3欄位可以控制震動馬達的強弱,D6顯示按鈕為按下或放開(0 => 放開,1 => 按下),D4欄位則是可以控制180度伺服馬達的角度。
在開始撰寫程式碼之前,先來看一下本程式自訂的函式(function)介紹:
buttenSet()
取得button狀態(0 => 按下,1 => 放開)。
laserOn()
開啟雷射模組。
laserOff()
關閉雷射模組。
現在,要開始撰寫衝鋒光束槍的程式碼,點擊修改按鈕進入程式碼編輯介面,將預設的程式碼全部刪除。
我們首先寫一個主程式框架,接著撰寫一個函式buttenSet()
來取得按鈕感測器的狀態。
if(buttenSet() ==1){
laserOn();
}else{
laserOff();
}
function buttenSet(){
var buttenSensor = cpf.get("socket d6");
ui.set("socket d6", buttenSensor);
return buttenSensor;
}
程式解析:
buttonSet()
函式取得按鈕的數值為1時呼叫laserOn()
函式來開啟雷射模組;否則呼叫laserOff()
函式來關閉雷射模組。buttenSet()
函式來接收按鈕感測器的數值並回傳。buttenSet()
函式中,宣告buttonSensor變數來接收D6插槽按鈕感測器的數值。buttenSet()
函式中,執行ui.set(),將按鈕感測器的數值顯示於D6區塊上。buttenSet()
函式最後回傳按鈕感測器的數值。if(buttenSet() ==1){
laserOn();
}else{
laserOff();
}
function buttenSet(){
var buttenSensor = cpf.get("socket d6");
ui.set("socket d6", buttenSensor);
return buttenSensor;
}
function laserOn(){
cpf.set("socket d2", 1);
cpf.set("socket d3", 255);
}
function laserOff(){
cpf.set("socket d2", 0);
cpf.set("socket d3", 0);
}
程式解析:
laserOn()
函式。laserOff()
函式。以上已完成了程式碼的撰寫,最後在最後一行加上 cpf.repeat();
開啟迴圈進行重複執行的動作。
//衝鋒光束槍//
var buttenSensor;
if(buttenSet()==1){
laserOn();
}else{
laserOff();
}
function buttenSet(){
buttenSensor = cpf.get("socket d6");
ui.set("socket d6", buttenSensor);
return buttenSensor;
}
function laserOn(){
cpf.set("socket d2", 1);
cpf.set("socket d3", 255);
}
function laserOff(){
cpf.set("socket d2", 0);
cpf.set("socket d3", 0);
}
cpf.repeat();
目前這個作品屬於單人使用的裝置,在未來可以增加武器數量,與其他夥伴開啟雙人對戰模式,並且可以在玩家身上設置雷射接受裝置,當被射中時系統判定出局,且關閉衝鋒光束槍的使用,讓大家都能深入其境,感受虛擬世界中激戰的快感!