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


軟件開(kāi)發(fā)最好的公司是哪家:引領(lǐng)軟件開(kāi)發(fā)服務(wù)新風(fēng)尚












評(píng)論