步驟1:給我一盞燈
我們可以通過Arduino開發環境使用C語言來編寫程序控制MeArm,也可以在圖形介面用拖拉方式產生程序,現在我們開始第一堂課:“給我一盞燈”
使用S4A
步驟1 :: S4A程序
步驟2:拖拉成此程序
步驟3:點擊綠色旗子,可以看到MeArm的LED燈亮了。
使用ArduBlock
步驟1:選擇工具/ArduBlock
步驟2:拖拉成此程式
步驟3:按“上傳至Arduino”即可看到MeArm的LED燈亮了。
使用mBlock(Scratch2)
步驟1:檔案-打開項目
步驟2::01.sb2
使用Arduino IDE
步驟1:打開_01.ino
步驟2:單擊“上傳”,是一個右向箭頭符號,可以看到MeArm的LED燈亮了。
說明:LED的腳位為3(S4A中腳位為12),所以當設置該腳位為HIGH時,燈就亮了。
注:您可在S4A內直接打開上方的“ .sb”檔(圖形介面),也可在ArduBlock內直接打開替換的“ .abp”檔(圖形介面),也可在Arduino中直接打開上方的“ .ino”檔(C語言),直接上傳到手臂運行,也產生同樣的效果。
步驟2:3秒后熄滅它
如果我們要在3秒后熄滅LED燈,然后在delay 3000毫秒后,設腳位為LOW即可。
步驟3:再閃一下,寶貝
燈既然能亮能滅,那何不閃爍一下呢?就讓我們間隔設置1秒
步驟4:變數初體驗
假設我們將閃爍時間從間隔0.2秒改為間隔0.1秒或0.05秒,要手動改變每個設定就會很累,這時可用變數來增加效率,我們只要設定一次變數,未來要改變時間間隔時就只要更動一次變數內容即可。
步驟5:變數也可以自嗨
既然有了變數,那么就讓它多變幾次,您可以試一下變數或減半,或加倍,或加0.1秒,或減0.25秒喔。
mytime = mytime/2;
mytime = mytime * 2;
mytime = mytime + 100;
mytime = mytime-250;
步驟6:使用照妖鏡讓變數現出原形
既然變數這么方便,所以
“ Serial.println(變數名);”
其中,序列號是序列
第7步:如果,我是真的,只需按一下“串行監視器”就可以看到資料內容了。的。..
“如果”是一種判斷式,就像“如果下雨,就帶雨傘。如果刮風,就穿風衣”。情況成立例如:
“如果(10> 1),則亮LED燈。”
這時因為10一定大于1,所以LED燈就會亮了。
步驟8:如果,變數也來湊熱鬧
通常我們對準變數跟“如果”搭配使用,例如本例中的light變數,它可能代表的是光線亮度,當我們在判斷是否開燈時,就可以根據光值,例如此例若light值小于10就開燈。
int light = 5;
if(light 《10)
{
digitalWrite(3,HIGH);
delay(1000);
}
步驟9:如果的好朋友:布林
在前例中的“ if(light 《10)”判斷式,若成立,則稱為“真”,反之則為“假”。這“真假”兩種值我們又稱為“布林”,也就是“ true/錯誤。”亦即結果為真,則進行后續動作,若為假,則不做任何動作。
步驟10:向左走,向右走(if-else)
因為布林有兩種值,那當然可以“若真則向左邊,否則向右邊”
if(true){
左轉
}否則{
右轉
}
步驟11:向左走,向右走(if-else)續1
了解(if-else)功能后,接下來就可以對判斷式加變化,例如:
if(num | 3 == 0)
{其中“若是3的倍數,則點燈,否則熄燈。” {
digitalWrite(2,HIGH);
} else {
digitalWrite(2,LOW);
}
步驟12:向左走,向右走(if-else)續2
因為判斷式是程式設計的重要基礎,所以值得咱們再熟練熟練,接續上一個教程,你能寫出來嗎?
結果,“如果是單數,則LED閃一下,否則閃兩下”
步驟13:回圈:叫我大神,重覆的事情交給我做就對了
除了判斷式之外,電腦最世界無敵猛的把戲就是回圈了,重覆的事情找它做就對了。
例如:連續閃爍LED 5次
基本指令格式為“ for(int i = 0; i 《5; i ++)”
步驟14:用回圈幫你從1加到100
還記得數學神童高斯怎么累加1到100嗎,若能妥善運用回圈,就算不是神童也能算出最后答案哩。
第15步:回圈也可以只加加偶數喔
若回圈只能做一成不變的事那就小看回圈了。在此例中,咱們要在每一個輪回內加入判斷式,若成立才做動作,也就是在1到100之中,我們跳過奇數,只累加偶數。
步驟16:回圈的間隔(步驟)
接續上一個只加偶數的問題,本節要介紹“回圈的間隔”,是一種隔幾次才做一次的概念。所以若要加總1到100之間的偶數,意思就是:
結果,“從0開始,每隔2次(中間空1次)才加總”
步驟17:那能不能用step計算一年有幾個星期天呢
接續上一個“間隔”概念,你能算出一年有多少個星期天嗎?(要間隔多少呢?)
步驟18:回圈2:當條件符合就一直做,一直做,一直做…
無論任何程序語言,回圈都是如此的重要,所以在此要再介紹回圈的另一種格式,同時。這指令的要點就是如果條件為真,就一直做到天荒地老。像本例的條件(2》 1)永遠為
步驟19:回圈2的標準型
為了不讓電腦跑回圈跑到掛,通常會加一條件限制,讓布林值不要永遠都是“ true”,并獲得所需的結果。本節內容即是如何用而加總1至100。
步驟20:讓LED閃到歪腰
若要重覆做一個永遠不變的事情,用while是最方便的,本節即是要挑戰如何讓LED燈持續閃爍到天荒地老。
步驟21:函數:每次閃爍一次都要寫4行,真麻煩啊
為了讓程式更簡潔,設計師習慣將“相同的程式碼包成一個黑箱,只要執行黑箱即可”。這個黑箱就叫函數或副程式。妥善利用副程式不僅程式看起來簡潔,而且運行效率提高,一舉兩得。
結果,本例要展示如何將“閃爍”程式碼包進黑箱。
步驟22:函數+回圈:讓它閃10次
包成黑箱后,我們便可視其為一條指令,將其放到回圈中,要連續執行多次都行。本例展示如何在回圈中呼叫副程式,讓LED閃爍10次。
步驟23:回圈也可做在函數內部
多個可以在回圈中運行副程式,反過來當然也可以在副程式中運行回圈。此例要展示的即為直接在副程式中設定要執行的回圈次數。
步驟24:函數的參數(僅限C語言,Ardublock尚無此功能)
副程序的作用強大,還可以更靈活使用,例如我們
步驟25:可以給多個參數嗎?(只有C語言,Ardublock尚無此)功能)
副程序既可以接受參數,而且還可以同時接受多個。所以如果我們要設置LED閃爍一次,每次重復幾秒鐘,只要透過參數指定就
步驟26:挑戰再挑戰(僅C語言,Ardublock尚無此功能)
帶有參數的副程式既強大又常用,接下來的練習是鍛煉自己是否能做出一個加總的副程式,例如若要加總1到100,則只要寫一條指令
sum(100);
步驟27:伺服馬達初體驗
花了那么多篇幅講了程式最核心的概念,現在要進入機器手臂正題了,只要你前面有跑過,相信我,接下來花不了多少時間你就能學會駕馭機器手臂了。
結果,機器手臂是由伺服馬達所帶動,我們只要設定伺服馬達所接的腳位,接下來再設定所要轉到的角度即可。要注意的是伺服馬達的角度范圍是0到179度,如果角度超出兩邊范圍,或部件卡住,或因為螺絲鎖太緊導致馬達轉不到指定角度,則會因為電流過載而降低馬達和主板壽命。
此范例是將一顆伺服馬達設定接到腳位11,然后轉到0度。
第一顆馬達為底座馬達。
步驟28:伺馬達角度范圍0?179度
既然伺服馬達的角度范圍是0?179度,那咱們就依序
步驟29:試一下第二顆馬達,但只能45?145度
搞定了第一顆,那第二顆就依樣畫葫蘆唄。但這次只能從45度到145度。第二顆馬達可調整前后角度。
第30步:試一下第三顆馬達,但只能90?179度
搞定前兩顆星,第三顆馬達能調整水平,咱也依樣畫葫蘆,但限制只能從90度到179度。
步驟31:試一下第四顆星星,但只能0?50度
最后一顆馬達是夾具馬達,度數在0至50度之間。如果未遵循標準組裝步驟組成夾具,則出現夾具緊或開大絕,這時則需打掉重練。
步驟32:讀搖桿資料,0?1023
本機手臂附有二顆星搖桿,每一顆皆有橫縱兩向,總共四向,所以能控制4顆顆星,搖桿依次接A0,所以我們只要重新知道這幾個腳位的值就會知道搖桿的角度。每個腳位值的范圍從0到1024。此例中我們讀A0腳位的值然后由
步驟33:將搖桿指令分類為大,中,小
為了用戶操作方便,我們只將搖桿區分為2個動作,也就是前進和后退。根據此概念,我們可以設定若搖桿值超過612,則是前進,若小于412,則是后退,若介在中間則不
步驟34:結合搖桿與馬達
接下來要將搖桿與馬達結合在一起,也就是如果搖桿前進,則則馬達增加1度,反之則減一度。
第35步:布局終于出現了
因為一次要讀取四個輸入,然后借以控制四個輸出,這時若使用陣列,會讓程式顯得更簡潔。在此例中,我們要設定一個含有4個元素的陣列,給初值然后再印出來。
步驟36:將全部整合起來,手臂就全聽你的了
接下來要把所有整合起來,這樣就
(圖片來源:Wei-Yu Chen)
步驟37:機器手臂的自動模式
既然已經知道馬達的控制方法,咱們便可以預先設定每顆馬達的角度,然后一直重覆,這就是我們常在電視上看到的自動機器手臂的酷樣。此范例只是個參考,你也可以試著調到所需要的角度和次數,建立自己的生產線喔。
步驟第38頁:如何回復原型手臂模式
請在Arduino環境中(非Ardublock),燒入附件程序即可。所以大家多多練習,不用怕回不
責任編輯:wv
-
軟件
+關注
關注
69文章
5152瀏覽量
89207
發布評論請先 登錄














評論