步驟1:了解Arduino IDE
安裝Arduino之后,請(qǐng)打開(kāi)它并參考上面的照片,因?yàn)槲蚁蚰故玖薎DE(集成開(kāi)發(fā)環(huán)境)的幾個(gè)關(guān)鍵部分。
1。標(biāo)有1的圓圈環(huán)繞著上傳按鈕。將Arduino插入計(jì)算機(jī)后,單擊此按鈕將代碼上傳到Arduino。
2。 void setup是您的代碼部分,將僅運(yùn)行一次。當(dāng)Arduino通電或重新啟動(dòng)時(shí),它將運(yùn)行您在void設(shè)置部分放置的所有代碼
3。 void循環(huán)是您的代碼部分,將一遍又一遍。運(yùn)行void設(shè)置后,您將在void循環(huán)中運(yùn)行所有代碼。所不同的是,您在void循環(huán)中的所有代碼都運(yùn)行完后,Arduino將返回到您的void循環(huán)部分的開(kāi)頭,然后再次運(yùn)行它。這一次又一次地重復(fù),因此稱為循環(huán)。
4。串行監(jiān)視器按鈕。此按鈕打開(kāi)串行監(jiān)視器。串行監(jiān)視器允許您向Arduino發(fā)送命令并從Arduino接收消息。有關(guān)以后如何執(zhí)行操作的更多信息
5。這是Arduino控制臺(tái)。如果Arduino在上傳到開(kāi)發(fā)板上或編譯代碼時(shí)遇到問(wèn)題,將在此處打印錯(cuò)誤消息。
6。在頂部的“工具”菜單中,可以選擇一個(gè)“板”選項(xiàng)。使用它來(lái)選擇正確的電路板類型。通常,Arduino開(kāi)發(fā)板的類型寫在設(shè)備上的某個(gè)地方。
7。這是選擇哪個(gè)com端口將Arduino連接到計(jì)算機(jī)的選項(xiàng)。如果您無(wú)法解決問(wèn)題。拔下Arduino,查看列表,重新插入Arduino。新的com端口是用于Arduino的端口。
步驟2:基本串行通信簡(jiǎn)介
請(qǐng)打開(kāi)您從GitHub下載的“ BasicSerial”示例https://github.com/kyesh/ArduinoTutorial
這是我將要解釋的代碼。與此空白代碼編輯器和空代碼編輯器僅有幾處區(qū)別。
以雙斜杠“//”開(kāi)頭的行是注釋。編譯/運(yùn)行代碼時(shí),Arduino將忽略它們。這使程序員可以提供有關(guān)其程序如何工作的信息,以幫助自己或其他程序員弄清楚代碼的工作原理。
下一步,我想請(qǐng)您閱讀Arduino頁(yè)面上的以下鏈接。如果您不熟悉編程,請(qǐng)不要對(duì)他們毫無(wú)用處。我將用更簡(jiǎn)單的術(shù)語(yǔ)重新解釋它們。隨著編程技巧的發(fā)展,您將需要習(xí)慣于閱讀和理解文檔。
http://www.arduino.cc/en/reference/serial
http://www.arduino.cc/en/Serial/Begin
http://www.arduino.cc/en/Serial/Println
1。 Serial.println()稱為函數(shù)。編程中的大多數(shù)事情都涉及使用函數(shù)。在本教程的后面,您將學(xué)習(xí)如何編寫自己的函數(shù)! Serial.println()是將在Arduino的串行線上打印的函數(shù)。連接到計(jì)算機(jī)后,您可以通過(guò)單擊串行監(jiān)視器查看打印的內(nèi)容。
2。 “我打印一次”是Serial.println()函數(shù)的參數(shù)。參數(shù)是您對(duì)該函數(shù)的輸入,在這種情況下,該參數(shù)告訴函數(shù)要打印的內(nèi)容。嘗試將其更改為“ I love hotdogs”之類的名稱,然后再次運(yùn)行代碼。確保用引號(hào)(“”)括住您的單詞。
3。如果您查看串行監(jiān)視器上顯示的第一行,它會(huì)顯示“我打印一次”。我有時(shí)您會(huì)在打印第一行之前得到一個(gè)或兩個(gè)有趣的角色。不用擔(dān)心這個(gè)。另請(qǐng)注意,此操作僅打印一次,因?yàn)樗l(fā)生在代碼的空白設(shè)置部分。注意:要查看第一行,您必須取消選中標(biāo)有“自動(dòng)滾動(dòng)”的框,然后滾動(dòng)回到頂部(或者眼睛很快)。
4。請(qǐng)注意,“我一次又一次地打印”如何繼續(xù)一遍又一遍地打印。這是因?yàn)樗诖a的空循環(huán)部分中。該代碼將一遍又一遍,直到宇宙的盡頭!或者直到您斷開(kāi)/重新編程Arduino。
5。此框可讓您通過(guò)串行將命令發(fā)送到Arduino。例如,如果您有一個(gè)機(jī)器人發(fā)送直線驅(qū)動(dòng)命令,請(qǐng)右轉(zhuǎn),然后左轉(zhuǎn)。我們不會(huì)對(duì)此進(jìn)行處理,但是您將來(lái)可以探索這很酷的東西。
步驟3:接線LED
現(xiàn)在讓我們控制一些電力!為了展示我們強(qiáng)大的功能,我們將使LED(指示燈)閃爍。
讓我們通過(guò)打開(kāi)LED來(lái)簡(jiǎn)單地開(kāi)始。
要做這將需要1個(gè)LED,1 220歐姆電阻,1個(gè)面包板和一些電線。
1。 LED是發(fā)光二極管。二極管是一種設(shè)備,電流只能以一種方式通過(guò)它們。 LED的短邊是負(fù)極。您將把它插入面包板的負(fù)極。
2。我們將使用Arduino作為L(zhǎng)ED的電源。這意味著您需要將其插入計(jì)算機(jī)才能正常工作。每個(gè)Arduino的布置都不同,但引腳應(yīng)標(biāo)明。我已經(jīng)在板上標(biāo)出了5伏和GND(0伏)的位置。
2-1。 5V,這是Arduino上的5伏電源。這需要連接到面包板上的正極導(dǎo)軌。
2-2。 GND就是做完工作(也稱為0伏)后電力返回的地方。這需要連接到面包板的負(fù)極。
3。這是一塊面包板。
3-1。這對(duì)于電路的布線和原型制作非常有幫助。負(fù)軌-這是一個(gè)帶有減號(hào)的軌道,旁邊是藍(lán)色條紋。通常用作接地導(dǎo)軌。連接到導(dǎo)軌上一個(gè)點(diǎn)的所有內(nèi)容都連接到導(dǎo)軌上的每個(gè)點(diǎn)。如圖所示,面包板上有兩個(gè)負(fù)極。一個(gè)在板子的左側(cè),一個(gè)在板子的右側(cè)。
3-2。正極導(dǎo)軌-這是帶有加號(hào)并在其旁邊帶有紅色條紋的導(dǎo)軌。這通常用作正電壓軌,在我們的情況下為5伏。連接到導(dǎo)軌上一個(gè)點(diǎn)的所有內(nèi)容都連接到導(dǎo)軌上的每個(gè)點(diǎn)。如圖所示,面包板上有兩個(gè)陽(yáng)軌。一個(gè)在板子的左側(cè),一個(gè)在板子的右側(cè)。
3-3,行,就像微型導(dǎo)軌。它們?nèi)€連接。例如,第1行將1a到1e連接在一起。板上的大間隙表示1f到1j連接在一起,但沒(méi)有連接到1a到1e。
將所有這些布線在一起
1)將5V連接到面包板的正極導(dǎo)軌
2)將GND連接到面包板的負(fù)極軌上
3)將LED的短端連接到面包板的負(fù)極軌上
4)將LED的長(zhǎng)端連接到1a
5)將電阻從1c連接到正極軌上
6)欣賞LED的細(xì)微發(fā)光(如果嘗試翻轉(zhuǎn)時(shí)LED不發(fā)光)
現(xiàn)在,讓它閃爍,將電阻從正電源軌移至負(fù)電源軌,然后每秒移回正電源軌。我敢肯定,當(dāng)您很快意識(shí)到這非常繁瑣時(shí),您寧愿不必手動(dòng)移動(dòng)電阻器。好吧,您真幸運(yùn)!下一步,我們將向您展示如何讓Arduino為您完成所有這些辛苦工作!
步驟4:使Arduino閃爍
下一步,我們將讓Arduino為我們閃爍。
首先,您必須將電阻從導(dǎo)軌上移開(kāi)并將其連接到Arduino的13針上。
通常,我強(qiáng)烈建議您先嘗試閱讀和理解所使用功能的文檔,然后再進(jìn)行簡(jiǎn)化說(shuō)明。
http://www.arduino.cc/en/Reference/PinMode
http://www.arduino.cc/en/Reference/DigitalWrite
HTTP://www.arduino.cc/en/Reference/Delay
請(qǐng)打開(kāi)眨眼示例
1。 pinMode()是一個(gè)函數(shù),它說(shuō)明您要使用的引腳。第一個(gè)參數(shù)是您正在談?wù)摰囊_。在這種情況下,引腳13。第二個(gè)參數(shù)是OUTPUT,這表示您希望能夠在程序中將引腳13設(shè)置在0伏和5伏之間。
2。 digitalWrite()是將指定引腳設(shè)置為L(zhǎng)OW(0伏)或HIGH(5伏)的函數(shù)。第一個(gè)參數(shù)是13我們要控制的引腳。第二個(gè)參數(shù)是HIGH或LOW。將其設(shè)置為高電平就像將電阻器連接到正電源軌時(shí)一樣。將其設(shè)置為L(zhǎng)OW就像將其連接到負(fù)極軌一樣。
3。 delay()是一個(gè)函數(shù),用于在一定時(shí)間內(nèi)停止Arduino??梢韵胂筮@是當(dāng)您在切換導(dǎo)軌之間等待一秒鐘時(shí)。這將等待以毫秒或1/1000秒為單位的指定時(shí)間量
挑戰(zhàn):嘗試使照明燈保持開(kāi)啟狀態(tài)2秒鐘,關(guān)閉狀態(tài)持續(xù)0.5秒
5:輸入,變量和開(kāi)關(guān)
電路接線。
看一下壓線圖進(jìn)行接線。
使用的電阻是10k電阻。之所以稱為下拉電阻,是因?yàn)楫?dāng)開(kāi)關(guān)斷開(kāi)(未按下)時(shí),它將電壓下拉回零伏。當(dāng)開(kāi)關(guān)閉合(按下)時(shí),電阻太大,對(duì)電壓幾乎沒(méi)有影響,所以只有5伏。
用arduino打開(kāi)名為L(zhǎng)imitSwitch的文件。
像往常一樣,請(qǐng)先閱讀文檔,然后再進(jìn)行簡(jiǎn)化說(shuō)明。
http://www.arduino.cc/en/Reference/DigitalRead
1。此命令創(chuàng)建一個(gè)名為pin12Value的新變量。藍(lán)色“ int”部分指定變量的類型。 int是整數(shù)的縮寫。 Arduino需要知道正在使用什么類型的變量,以將它們有效地存儲(chǔ)在內(nèi)存中,并對(duì)它們進(jìn)行操作,例如加,減,乘和除。第二部分是變量的名稱以及稍后在代碼中如何引用它。
2。 digitalRead()此函數(shù)返回1(高)或0(低),具體取決于它正在讀取的引腳上施加5伏還是施加到正在讀取的引腳上施加0伏。
3。下一部分稱為作業(yè)。我們將pin12Value設(shè)置為1還是0,具體取決于是否按下了限位開(kāi)關(guān)且12針為高電平。結(jié)果4?,F(xiàn)在,我們使用Serial.println(pin12Value)來(lái)打印pin12Value的值。如果您在按下限位開(kāi)關(guān)時(shí)觀察到串行監(jiān)視器,您會(huì)注意到它從0變?yōu)?。因此,如果打印了HIGH和LOW而不是1s和0s,這看起來(lái)會(huì)更好而且更容易理解。我們可以使用if語(yǔ)句來(lái)完成此操作!
在解釋之前,請(qǐng)嘗試通讀并理解以下if語(yǔ)句的文檔。
http://www.arduino.cc/zh_CN/Reference/If
在Arduino中打開(kāi)LimitSwitchIf并運(yùn)行
1。這是一個(gè)if語(yǔ)句。如果條件為true,則大括號(hào)內(nèi)的代碼將運(yùn)行。如果條件不成立,則將跳過(guò)大括號(hào)中的代碼。
2。這是if語(yǔ)句的條件。這是一個(gè)問(wèn)題,pin12Value是否等于1?如果答案為是,則表達(dá)式的計(jì)算結(jié)果為true。小心并意識(shí)到==與=符號(hào)不同。 ==在問(wèn)一個(gè)問(wèn)題。他們平等嗎? =是一個(gè)命令,用于將左側(cè)的內(nèi)容設(shè)置為等于右側(cè)的內(nèi)容。
3。這是該語(yǔ)句為true時(shí)花括號(hào)中的代碼。
挑戰(zhàn):使用您學(xué)過(guò)的知識(shí),可以在按下開(kāi)關(guān)時(shí)打開(kāi)LED并在釋放時(shí)關(guān)閉LED
要查看如何完成挑戰(zhàn),請(qǐng)打開(kāi)LimitSwitchLED
挑戰(zhàn)2:使用您學(xué)到的知識(shí),通過(guò)不同的開(kāi)關(guān)分別打開(kāi)2個(gè)LED。
查看如何完成挑戰(zhàn)打開(kāi)LimitSwitchLED2
步驟6:為H橋和驅(qū)動(dòng)電機(jī)接線
因此,接下來(lái)部分將使用H橋。盡管我不希望您理解它,但我希望您查看H橋的文檔,以便了解電子元器件的規(guī)格表。如果您遇到不熟悉的組件,則應(yīng)該能夠使用其上刻有編號(hào)的Google為其搜索規(guī)格表。
http://www.ti.com/lit/ds/symlink/sn754410.pdf
SN7544 H橋具有16個(gè)引腳,并且在表示該芯片的盒子內(nèi)的引腳標(biāo)記為1到16。該芯片能夠?yàn)閮蓚€(gè)電動(dòng)機(jī)供電。一個(gè)連接到芯片的左半部,另一個(gè)連接到芯片的右半部?,F(xiàn)在我將描述每個(gè)引腳的作用。
1。)這是電動(dòng)機(jī)1的使能線。當(dāng)該電壓為HIGH時(shí),為5伏??梢则?qū)動(dòng)馬達(dá)。當(dāng)它為低時(shí),0伏電動(dòng)機(jī)將無(wú)法運(yùn)行??梢詫⑵渑cPWM信號(hào)一起使用(我們將在后面介紹),通過(guò)非??斓卮蜷_(kāi)和關(guān)閉它來(lái)控制電動(dòng)機(jī)的速度。
2。)這是電動(dòng)機(jī)1的控制線。您可以將其與引腳7一起使用,以控制電動(dòng)機(jī)1旋轉(zhuǎn)的方向。如果引腳2設(shè)置為高電平,而引腳6設(shè)置為低電平。電機(jī)將單向旋轉(zhuǎn)。如果將它們翻轉(zhuǎn),則引腳6為高電平而引腳2為低電平,則電動(dòng)機(jī)將改變方向。在所有其他狀態(tài)下,電動(dòng)機(jī)都不旋轉(zhuǎn)。
3。)此引腳連接到電動(dòng)機(jī)1的一側(cè)。電動(dòng)機(jī)1的另一端連接到引腳6
4 。)轉(zhuǎn)到您的地線,0伏。
5。)與4
6相同。)此引腳連接到電動(dòng)機(jī)1的另一側(cè)。
7。)這是電動(dòng)機(jī)1的另一條控制線。
8。)此引腳需要5伏的電壓才能使芯片正常工作。這將為芯片供電
9。)這是電動(dòng)機(jī)2的啟用線。
10。)這是電動(dòng)機(jī)2的控制線。
11 。)連接到電動(dòng)機(jī)2的一側(cè)。電動(dòng)機(jī)2的另一側(cè)連接到引腳14
12。)與4
13相同。)與4相同。
14。)這連接到電動(dòng)機(jī)2的另一側(cè)。
15。)這是電動(dòng)機(jī)2的另一條控制線。
16。 )這是電動(dòng)機(jī)1和電動(dòng)機(jī)2的電源。在此示例中,我建議使用9伏電池。
現(xiàn)在可以將其接線!
看一下摩擦圖。需要注意的幾個(gè)關(guān)鍵事項(xiàng)。確保將Arduino的GND(0伏)與電池的-(0伏)連接。并且請(qǐng)勿將Arduino的5V與電池的+(9伏)連接。這會(huì)傷害您的Arduino。
接線后,打開(kāi)_1Motor并運(yùn)行它。
挑戰(zhàn):用開(kāi)關(guān)為電機(jī)接線,使其在按下時(shí)旋轉(zhuǎn)一個(gè)方向,然后松開(kāi)解決方案:_1MotorWithSwitch
挑戰(zhàn):做到這一點(diǎn),以便一個(gè)開(kāi)關(guān)使電動(dòng)機(jī)沿一個(gè)方向旋轉(zhuǎn)。另一個(gè)開(kāi)關(guān)使其反向旋轉(zhuǎn)。提示:您可能需要了解if語(yǔ)句的“和”運(yùn)算符。
解決方案:_1MotorTwoSwitches
挑戰(zhàn):掛上第二個(gè)馬達(dá)并對(duì)其進(jìn)行一些有趣的操作。
注意:如果您要開(kāi)始四處行駛,可以從這里購(gòu)買一些車輪https://solarbotics.com/product/
第7步:模擬輸入
現(xiàn)在,我們將向您展示如何讀取模擬輸入。那里有許多模擬傳感器,您可以將其用作機(jī)器人的傳感器。
以下示例:
電位器(本演示將使用什么電位計(jì))
Range Finders https://www.pololu.com/product/2474
溫度傳感器http://www.adafruit.com/products/165
還有更多(只需使用Google模擬量,無(wú)論您想要哪種類型的傳感器)
電位計(jì)是您可以使用的最簡(jiǎn)單的模擬量輸入之一。您可以轉(zhuǎn)動(dòng)旋鈕來(lái)更改該值。
按照裝飾圖進(jìn)行接線。
請(qǐng)務(wù)必查看文檔
http://www。 arduino.cc/zh-CN/Reference/AnalogRead
打開(kāi)程序PrintAnalogValue并連接電位計(jì)嘗試一下。
如果您注意到這與限位開(kāi)關(guān)示例非常相似,除了我們正在使用“ analogRead()”函數(shù)和標(biāo)記為A0至A5的引腳。 A代表模擬,在嘗試獲取模擬輸入時(shí)必須使用這些引腳。轉(zhuǎn)動(dòng)電位計(jì)時(shí),您還將獲得0到1023之間的值。這就是使其成為模擬輸入的原因。 LOW不會(huì)得到0,HIGH不會(huì)得到1。取而代之的是,Low為0,HIGH為1023。介于兩者之間的所有電壓都由數(shù)字1到1022表示。
挑戰(zhàn):
看看您是否可以找出POT_ChangeTheSpeed,POT_MoveTheLight和POT_RaisingTheBar的工作原理并將其連接! p》
步驟8:PWM信號(hào)和控制電動(dòng)機(jī)速度
現(xiàn)在,我們將使用電位計(jì)來(lái)控制電動(dòng)機(jī)的速度
正如我之前所說(shuō),H橋上的使能線可用于控制電動(dòng)機(jī)速度。
有關(guān)接線,請(qǐng)參見(jiàn)弗里辛格圖。
唯一的與上次的主要區(qū)別是H橋上的引腳1現(xiàn)在連接到Arduino的引腳5而不是5伏電源線。
PWM信號(hào)是打開(kāi)和關(guān)閉非??斓男盘?hào)。通常,它們的取值范圍是0到255。其中0表示它們從不開(kāi)啟,而255表示它們一直處于開(kāi)啟狀態(tài)。介于兩者之間的值表示它們僅在一部分時(shí)間內(nèi)處于打開(kāi)狀態(tài)。 Arduino表示支持PWM的引腳位于引腳編號(hào)旁的?。
打開(kāi)
第9步:編寫函數(shù)
輸入本節(jié)我們將繼續(xù)編寫您自己的函數(shù)。
提示:避免命名變量和函數(shù)相同。
正如我之前所說(shuō),編程中的所有內(nèi)容都基于某種形式的函數(shù)?,F(xiàn)在,您將學(xué)習(xí)如何編寫自己的代碼。函數(shù)背后的想法是執(zhí)行一項(xiàng)復(fù)雜的任務(wù)并將其隱藏起來(lái),以使您的代碼更易于使用和理解。正如我確定的那樣,您已經(jīng)開(kāi)始意識(shí)到要使電動(dòng)機(jī)運(yùn)轉(zhuǎn),就需要您跟蹤多種情況,您要使其運(yùn)行的速度,您要其運(yùn)行的方向以及哪些引腳需要處于高電平和LOW可使所有功能正常工作。
在名為MotorFunctions的文件中,您可以在下面看到我們?yōu)槟帉懙囊恍┦纠瘮?shù)及其說(shuō)明。
1。)函數(shù)的這一部分聲明是返回類型。我們選擇void是因?yàn)榇撕瘮?shù)將不會(huì)返回任何內(nèi)容。例如,如果您想返回一個(gè)數(shù)字,則可以使用int。如果您有一個(gè)將兩個(gè)數(shù)字加起來(lái)并返回它們的和的函數(shù),這可能會(huì)派上用場(chǎng)。
2。)函數(shù)的這一部分是函數(shù)名稱。這是您稍后在代碼中用來(lái)調(diào)用函數(shù)的名稱。
3。)這些是函數(shù)的參數(shù)。在這里,您可以指定要使用的參數(shù)數(shù)量以及將要調(diào)用的參數(shù)。對(duì)于這個(gè),我們有一個(gè)參數(shù)motorSpeed,它是一個(gè)數(shù)字,因此我們使用了int類型。指定參數(shù)就像聲明變量一樣,因?yàn)樗鼈儽举|(zhì)上是與您的函數(shù)從所謂的函數(shù)共享的變量。
4。)這是函數(shù)運(yùn)行的代碼。
5.)Return語(yǔ)句,因?yàn)槲覀儾环祷厝魏蝺?nèi)容,所以我們只需放置此語(yǔ)句。如果我們要退貨。我們會(huì)將其放置在return語(yǔ)句之后。
責(zé)任編輯:wv
-
Arduino
+關(guān)注
關(guān)注
190文章
6498瀏覽量
192205
發(fā)布評(píng)論請(qǐng)先 登錄
Arduino與LabVIEW聯(lián)合編程指南
免費(fèi)分享Arduino入門+進(jìn)階(全套例程+書籍)

評(píng)論