版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGEPAGE27\o"ViewallpostsinArduino"Arduino,\o"Viewallpostsin教程"教程\o"CommentonArduino教程一:數(shù)字輸出"11Comments?Arduino的數(shù)字I/O被分成兩個(gè)部分,其中每個(gè)部分都包含有6個(gè)可用的I/O管腳,即管腳2到管腳7和管腳8到管腳13。除了管腳13上接了一個(gè)1K的電阻之外,其他各個(gè)管腳都直接連接到ATmega上。我們可以利用一個(gè)6位的數(shù)字跑馬燈,來對(duì)Arduino數(shù)字I/O的輸出功能進(jìn)行驗(yàn)證,以下是相應(yīng)的原理圖:電路中在每個(gè)I/O管腳上加的那個(gè)1K電阻被稱為限流電阻,由于發(fā)光二極管在電路中沒有等效電阻值,使用限流電阻可以使元件上通過的電流不至于過大,能夠起到保護(hù)的作用。該工程對(duì)應(yīng)的代碼為:intBASE=2;intNUM=6;intindex=0;voidsetup(){for(inti=BASE;i<BASE+NUM;i++){pinMode(i,OUTPUT);}}voidloop(){for(inti=BASE;i<BASE+NUM;i++){digitalWrite(i,LOW);}digitalWrite(BASE+index,HIGH);index=(index+1)%NUM;delay(100);}下載并運(yùn)行該工程,連接在Arduino數(shù)字I/O管腳2到管腳7上的發(fā)光二極管會(huì)依次點(diǎn)亮0.1秒,然后再熄滅:這個(gè)實(shí)驗(yàn)可以用來驗(yàn)證數(shù)字I/O輸出的正確性。Arduino上一共有十二個(gè)數(shù)字I/O管腳,我們可以用同樣的辦法驗(yàn)證其他六個(gè)管腳的正確性,而這只需要對(duì)上述工程的第一行做相應(yīng)的修改就可以了:intBASE=8;Sep01\o"ViewallpostsinArduino"Arduino,\o"Viewallpostsin教程"教程\o"CommentonArduino教程二:數(shù)字輸入"3Comments?
在數(shù)字電路中開關(guān)(switch)是一種基本的輸入形式,它的作用是保持電路的連接或者斷開。Arduino從數(shù)字I/O管腳上只能讀出高電平(5V)或者低電平(0V),因此我們首先面臨到的一個(gè)問題就是如何將開關(guān)的開/斷狀態(tài)轉(zhuǎn)變成Arduino能夠讀取的高/低電平。解決的辦法是通過上/下拉電阻,按照電路的不同通常又可以分為正邏輯(PositiveLogic)和負(fù)邏輯(InvertedLogic)兩種。在正邏輯電路中,開關(guān)一端接電源,另一端則通過一個(gè)10K的下拉電阻接地,輸入信號(hào)從開關(guān)和電阻間引出。當(dāng)開關(guān)斷開的時(shí)候,輸入信號(hào)被電阻“拉”向地,形成低電平(0V);當(dāng)開關(guān)接通的時(shí)候,輸入信號(hào)直接與電源相連,形成高電平。對(duì)于經(jīng)常用到的按壓式開關(guān)來講,就是按下為高,抬起為低。在負(fù)邏輯電路中,開關(guān)一端接地,另一端則通過一個(gè)10K的上拉電阻接電源,輸入信號(hào)同樣也是從開關(guān)和電阻間引出。當(dāng)開關(guān)斷開時(shí),輸入信號(hào)被電阻“拉”向電源,形成高電平(5V);當(dāng)開關(guān)接通的時(shí)候,輸入信號(hào)直接與地相連,形成低電平。對(duì)于經(jīng)常用到的按壓式開關(guān)來講,就是按下為低,抬起為高。為了驗(yàn)證Arduino數(shù)字I/O的輸入功能,我們可以將開關(guān)接在Arduino的任意一個(gè)數(shù)字I/O管腳上(13除外),并通過讀取它的接通或者斷開狀態(tài),來控制其它數(shù)字I/O管腳的高低。本實(shí)驗(yàn)采用的原理圖如下所示,其中開關(guān)接在數(shù)字I/O的7號(hào)管腳上,被控的發(fā)光二極管接在數(shù)字I/O的13號(hào)管腳上:\o"ViewallpostsinArduino"Arduino,\o"Viewallpostsin教程"教程\o"CommentonArduino教程三:模擬輸入"5Comments?Arduino的優(yōu)勢(shì)在于對(duì)數(shù)字信號(hào)的識(shí)別和處理,但我們所生活的真實(shí)世界并不是數(shù)字(digital)化的,簡(jiǎn)單到只要用0和1就能夠表示所有的現(xiàn)象。例如溫度這一我們已經(jīng)司空見慣的概念,它只能在一個(gè)范圍之內(nèi)連續(xù)變化,而不可能發(fā)生像從0到1這樣的瞬時(shí)跳變,類似這樣的物理量被人們稱為是模擬(analog)的。Arduino是無法理解這些模擬量的,它們必須在經(jīng)過模數(shù)轉(zhuǎn)換后變成數(shù)字量后,才能被Arduino進(jìn)一步處理。像溫度這樣的數(shù)據(jù)必須先被轉(zhuǎn)換成微處理器能夠處理的形式(比如電壓),才能被Arduino處理,這一任務(wù)通常由各類傳感器(sensor)來完成的。例如,電路中的溫度傳感器能夠?qū)囟戎缔D(zhuǎn)換成0V到5V間的某個(gè)電壓,比如0.3V、3.27V、4.99V等。由于傳感器表達(dá)的是模擬信號(hào),它不會(huì)像數(shù)字信號(hào)那樣只有簡(jiǎn)單的高電平和低電平,而有可能是在這兩者之間的任何一個(gè)數(shù)值。至于到底有多少可能的值則取決于模數(shù)轉(zhuǎn)換的精度,精度越高能夠得到的值就會(huì)越多。Arduino所采用的ATmega8微處理器一其有6個(gè)模數(shù)轉(zhuǎn)換器(ADC,AnalogtoDigitalConverter),每一個(gè)模數(shù)轉(zhuǎn)換器的精度都是10bit,也就是說能夠讀取1024(2^10=1024)個(gè)狀態(tài)。在Arduino的每一個(gè)模擬輸入管腳上,電壓的變化范疇是從0V到5V,因此Arduino能夠感知到的最小電壓變化是4.8毫伏(5/1024=4.8mV)。電位計(jì)(potentiometer)是一種最簡(jiǎn)單的模擬輸入設(shè)備,它實(shí)際上就是一個(gè)可變電阻箱,通過控制滑塊所在的位置我們可以得到不同的電壓值,而輸入信號(hào)正是從滑塊所在的位置接入到電路中的。這一實(shí)驗(yàn)我們將通過改變電位計(jì)的值來控制發(fā)光二極管閃爍的頻率。電位計(jì)上一共有三個(gè)管腳,分別連接到Arduino的電源、地和模擬輸入的5號(hào)管腳上,發(fā)光二極管則連接到數(shù)字I/O的13號(hào)管腳上,原理圖如下所示:相應(yīng)的代碼為:intledPin=13;intpotPin=5;intvalue=0;voidsetup(){pinMode(ledPin,OUTPUT);}voidloop(){value=analogRead(potPin);digitalWrite(ledPin,HIGH);delay(value);digitalWrite(ledPin,LOW);delay(value);}在Arduino中,對(duì)模擬輸入端口不需要調(diào)用pinMode()函數(shù)將其指定為輸入或者是輸出模式,這點(diǎn)同數(shù)字I/O端口是有所不同的。通過旋轉(zhuǎn)電位計(jì)的軸,我們能改變電位計(jì)中間那根連線同地之間的電阻量,從而也就能改變從模擬輸入的5號(hào)管腳上所讀入的模擬量的值。當(dāng)電位計(jì)完全旋轉(zhuǎn)到頭時(shí),輸入到模擬輸入管腳上的電壓為0V,用analogRead()函數(shù)讀出的值為0;當(dāng)電位計(jì)完全旋轉(zhuǎn)到另一頭時(shí),輸入到模擬I/O管腳上的電壓為5V,此時(shí)用analogRead()函數(shù)讀出的值為1023;當(dāng)電位計(jì)旋轉(zhuǎn)到中間的某個(gè)位置時(shí),輸入到模擬輸入管腳上的電壓是0V到5V之間的某個(gè)值,而用analogRead()函數(shù)讀出的則是位于0到1023之間的某個(gè)對(duì)應(yīng)值。讀出的模擬量在我們的實(shí)驗(yàn)中被用來確定發(fā)光二極管點(diǎn)亮和熄滅的時(shí)間,以反映模擬量的變化。電位計(jì)運(yùn)用的是分壓原理,通過旋轉(zhuǎn)到不同的位置來得到不同的電壓值。從這種意義上講,它能夠被用來對(duì)當(dāng)前旋轉(zhuǎn)到的位置進(jìn)行度量,因此可以被用在轉(zhuǎn)向輪等旋轉(zhuǎn)裝置中。今天發(fā)現(xiàn)PCB板上另外一個(gè)錯(cuò)誤,就是將模擬輸入對(duì)應(yīng)管腳號(hào)標(biāo)反了,試了好久才意識(shí)到是這一問題。加上之前電源設(shè)計(jì)上的兩個(gè)小缺陷,一共有三個(gè)需要修改的地方。如果有機(jī)會(huì)再做PCB板的話,試著將這些問題解決一下:-)相應(yīng)的代碼為:intledPin=13;intswitchPin=7;intvalue=0;voidsetup(){pinMode(ledPin,OUTPUT);pinMode(switchPin,INPUT);}voidloop(){value=digitalRead(switchPin);if(HIGH==value){//turnLEDoffdigitalWrite(ledPin,LOW);}else{//turnLEDondigitalWrite(ledPin,HIGH);}}由于采用的是負(fù)邏輯電路,開關(guān)按下時(shí)用digitalRead()函數(shù)讀取到的值為L(zhǎng)OW,此時(shí)再用digitalWrite()函數(shù)將發(fā)光二極管所在的管腳置為高,點(diǎn)亮發(fā)光二極管。同理,當(dāng)開關(guān)抬起時(shí),發(fā)光二極管將被熄滅,這樣我們就實(shí)現(xiàn)了用開關(guān)來控制發(fā)光二極管的功能。\o"ViewallpostsinArduino"Arduino,\o"Viewallpostsin教程"教程\o"CommentonArduino教程四:模擬輸出"2Comments?就像模擬輸入一樣,在現(xiàn)實(shí)的物理世界中我們經(jīng)常需要輸出除了0和1之外的其他數(shù)值。例如,除了想用微控制器找開或者關(guān)閉電燈之外,我們還會(huì)想控制燈光的亮度,這時(shí)就需要用到模擬輸出。由于Arduino的微控制器只能產(chǎn)生高電壓(5V)或者低電壓(0V),而不能產(chǎn)生變化的電壓,因此必須采用脈寬度調(diào)制技術(shù)(PWM,PulseWidthModulation)來模仿模擬電壓。PWM是一種開關(guān)式穩(wěn)壓電源應(yīng)用,它是借助微處理器的數(shù)字輸出來對(duì)模擬電路進(jìn)行控制的一種非常用效的技術(shù),廣泛應(yīng)用在從測(cè)量、通信到功率控制與變換的許多領(lǐng)域中。簡(jiǎn)而言之,PWM是一種對(duì)模擬信號(hào)電平進(jìn)行數(shù)字編碼的方法,它通過對(duì)半導(dǎo)體開關(guān)器件的導(dǎo)通和關(guān)斷進(jìn)行控制,使輸出端得到一系列幅值相等但寬度不相等的脈沖,而這些脈沖能夠被用來代替正弦波或其它所需要的波形。在Arduino數(shù)字I/O管腳9、10和11上,我們可以通過analogWrite()函數(shù)來產(chǎn)生模擬輸出。該函數(shù)有兩個(gè)參數(shù),其中第一個(gè)參數(shù)是要產(chǎn)生模擬信號(hào)的引腳(9、10或者11);第二個(gè)參數(shù)是用于產(chǎn)生模擬信號(hào)的脈沖寬度,取值范圍是0到255。脈沖寬度的值取0可以產(chǎn)生0V的模擬電壓,取255則可以產(chǎn)生5V的模擬電壓。不難看出,脈沖寬度的取值變化1,產(chǎn)生的模擬電壓將變化0.0196V(5/255=0.0196)。本實(shí)驗(yàn)中我們將用模擬輸出來調(diào)暗發(fā)光二極管(LED),由于正常情況下LED對(duì)電壓的變化非常敏感,因此當(dāng)脈沖寬度變化時(shí)人眼會(huì)感覺到LED實(shí)際上是在不斷地熄滅和點(diǎn)亮,而不是逐漸變暗。解決這一問題可以采用濾波電路,它能使有用頻率信號(hào)通過而同時(shí)抑制(或大大衰減)無用頻率信號(hào)。實(shí)驗(yàn)中我們采用的是低通濾波器,它的原理非常簡(jiǎn)單,只需要一個(gè)電阻和一個(gè)電容,能夠很好地過濾掉電路中超過某一頻率的信號(hào)。此處給出的電路并不能校平所有脈沖,它之所以被稱為“低通濾波”是因?yàn)樗辉试S頻率低于某個(gè)限度的脈沖通過,對(duì)于高于這個(gè)限度的脈沖則被平衡為偽模擬電壓,濾波的頻率范圍由電阻器和電容器的比值決定。實(shí)驗(yàn)中采用的電路原理如下:相應(yīng)的代碼為:intpotPin=0;intledPin=11;bytebright_table[]={30,30,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,250,240,230,220,210,200,190,180,170,160,150,140,130,120,110,100,90,80,70,60,50,40,30,30,30};intMAX=50;intcount=0;intval=0;voidsetup(){pinMode(ledPin,OUTPUT);}voidloop(){analogWrite(ledPin,bright_table[count]);count++;if(count>MAX){count=0;}val=analogRead(potPin);val=val/4;delay(val);}該工程調(diào)用analogWrite()函數(shù)在數(shù)字I/O端口的11號(hào)管腳上模仿模擬輸出,每產(chǎn)生一次輸出后都設(shè)置了相應(yīng)的延時(shí),而延時(shí)的長(zhǎng)度由模擬輸入端口0號(hào)管腳上的電位器來決定。通過調(diào)整電位器的位置,我們可以觀察到發(fā)光二極管逐漸變亮后再逐漸變暗的效果。\o"ViewallpostsinArduino"Arduino,\o"Viewallpostsin教程"教程\o"CommentonArduino教程五:串口輸出"NoComments?在許多實(shí)際應(yīng)用場(chǎng)合中我們會(huì)要求在Arduino和其它設(shè)備之間實(shí)現(xiàn)相互通信,而最常見通常也是最簡(jiǎn)單的辦法就是使用串行通信。在串行通信中,兩個(gè)設(shè)備之間一個(gè)接一個(gè)地來回發(fā)送數(shù)字脈沖,它們之間必須嚴(yán)格遵循相應(yīng)的協(xié)議以保證通信的正確性。在PC機(jī)上上最常見的串行通信協(xié)議是RS-232串行協(xié)議,而在各種微控制器(單片機(jī))上采用的則是TTL串行協(xié)議。由于這兩者的電平有很大的不同,因此在實(shí)現(xiàn)PC機(jī)和微控制器的通信時(shí),必須進(jìn)行相應(yīng)的轉(zhuǎn)換。完成RS-232電平和TTL電平之間的轉(zhuǎn)換一般采用專用芯片,如MAX232等,但在Arduino上是用相應(yīng)的電平轉(zhuǎn)換電路來完成的。根據(jù)Arduino的原理圖我們不難看出,ATmega的RX和TX引腳一方面直接接到了數(shù)字I/O端口的0號(hào)和1號(hào)管腳,另一方面又通過電平轉(zhuǎn)換電路接到了串口的母頭上。因此,當(dāng)我們需要用Arduino與PC機(jī)通信時(shí),可以用串口線將兩者連接起來;當(dāng)我們需要用Arduino與微控制器(如另一塊Arduino)通信時(shí),則可以用數(shù)字I/O端口的0號(hào)和1號(hào)管腳。串行通信的難點(diǎn)在于參數(shù)的設(shè)置,如波特率、數(shù)據(jù)位、停止位等,在Arduino語言可以使用Serial.begin()函數(shù)來簡(jiǎn)化這一任務(wù)。為了實(shí)現(xiàn)數(shù)據(jù)的發(fā)送,Arduino則提供了Serial.print()和Serial.println()兩個(gè)函數(shù),它們的區(qū)別在于后者會(huì)在請(qǐng)求發(fā)送的數(shù)據(jù)后面加上換行符,以提高輸出結(jié)果的可讀性。在這一實(shí)驗(yàn)中沒有用到額外的電路,我們只需要用串口線將Arduino和PC機(jī)連起來就可以了,相應(yīng)的代碼為:voidsetup(){Serial.begin(9600);}voidloop(){Serial.println("HelloWorld!");delay(1000);}在將工程下載到Arduino模塊中之后,在Arduino集成開發(fā)環(huán)境的工具欄中單擊“SerialMonitor”控制,打開串口監(jiān)視器:接著將波特率設(shè)置為9600,即保持與工程中的設(shè)置相一致:如果一切正常,此時(shí)我們就可以在Arduino集成開發(fā)環(huán)境的Console窗口中看到串口上輸出的數(shù)據(jù)了:為了檢查串口上是否有數(shù)據(jù)發(fā)送,一個(gè)比較簡(jiǎn)單的辦法是在數(shù)字I/O端口的1號(hào)管腳(TX)和5V電源之間接一個(gè)發(fā)光二極管,如下面的原理圖所示:這樣一旦Arduino在通過串口向PC機(jī)發(fā)送數(shù)據(jù)時(shí),相應(yīng)的發(fā)光二極管就會(huì)閃爍,實(shí)際應(yīng)用中這是一個(gè)非常方便的調(diào)試手段;-)\o"ViewallpostsinArduino"Arduino,\o"Viewallpostsin教程"教程\o"CommentonArduino教程六:串口輸入"1Comment?串行通信是在實(shí)現(xiàn)在PC機(jī)與微控制器進(jìn)行交互的最簡(jiǎn)單的辦法。之前的PC機(jī)上一般都配有標(biāo)準(zhǔn)的RS-232或者RS-422接口來實(shí)現(xiàn)串行通信,但現(xiàn)在這種情況已經(jīng)發(fā)生了一些改變,大家更傾向于使用USB這樣一種更快速但同時(shí)也更加復(fù)雜的方式來實(shí)現(xiàn)串行通信。盡管在有些計(jì)算機(jī)上現(xiàn)在已經(jīng)找不到RS-232或者RS-422接口了,但我們?nèi)钥梢酝ㄟ^USB/串口或者PCMCIA/串口這樣的轉(zhuǎn)換器,在這些設(shè)備上得到傳統(tǒng)的串口。通過串口連接的Arduino在交互式設(shè)計(jì)中能夠?yàn)镻C機(jī)提供一種全新的交互方式,比如用PC機(jī)控制一些之前看來非常復(fù)雜的事情,像聲音和視頻等。很多場(chǎng)合中都要求Arduino能夠通過串口接收來自于PC機(jī)的命令,并完成相應(yīng)的功能,這可以通過Arduino語言中提供的Serial.read()函數(shù)來實(shí)現(xiàn)。在這一實(shí)驗(yàn)中我們同樣不需要任何額外的電路,而只需要用串口線將Arduino和PC機(jī)連起來就可以了,相應(yīng)的Arduino工程代碼為:intledPin=13;intval;voidsetup(){pinMode(ledPin,OUTPUT);Serial.begin(9600);}voidloop(){val=Serial.read();if(-1!=val){if('H'==val){digitalWrite(ledPin,HIGH);delay(500);digitalWrite(ledPin,LOW);}}}把工程下載到Arduino模塊中之后,在Arduino集成開發(fā)環(huán)境中打開串口監(jiān)視器并將波特率設(shè)置為9600,然后向Arduino模塊發(fā)送字符H,如下圖所示:該工程運(yùn)行起來之后會(huì)不斷調(diào)用Serial.read()函數(shù)從串口獲得數(shù)據(jù)。Arduino語言提供的這個(gè)函數(shù)是不阻塞的,也就是說不論串口上是否真的有數(shù)據(jù)到達(dá),該函數(shù)都會(huì)立即返回。Serial.read()函數(shù)每次只讀取一個(gè)字節(jié)的數(shù)據(jù),當(dāng)串口上有數(shù)據(jù)到達(dá)的時(shí)候,該函數(shù)的返回值為到達(dá)的數(shù)據(jù)中第一個(gè)字符的ASCII碼;當(dāng)串口上沒有數(shù)據(jù)到達(dá)的時(shí)候,該函數(shù)的返回值則為-1。Arduino語言的參考手冊(cè)中沒有對(duì)Serial.read()函數(shù)做過多的說明,我的一個(gè)疑問是如果PC機(jī)一次發(fā)送的數(shù)據(jù)太多,Arduino是否提供相應(yīng)的串口緩存功能來保證數(shù)據(jù)不會(huì)丟失?Arduino語言中提供的另外一個(gè)函數(shù)Serial.available()或許能夠幫助我們用實(shí)驗(yàn)來進(jìn)行驗(yàn)證:intledPin=13;intval;voidsetup(){pinMode(ledPin,OUTPUT);Serial.begin(9600);}voidloop(){val=Serial.read();if(-1!=val){if('H'==val){digitalWrite(ledPin,HIGH);delay(500);digitalWrite(ledPin,LOW);Serial.print("Available:");Serial.println(Serial.available(),DEC);}}}函數(shù)Serial.available()的功能是返回串口緩沖區(qū)中當(dāng)前剩余的字符個(gè)數(shù),按照Arduino提供的該函數(shù)的說明,串口緩沖區(qū)中最多能緩沖128個(gè)字節(jié)。我們可以一次給Arduino模塊發(fā)送多個(gè)字符,來驗(yàn)證這一功能:在這一實(shí)驗(yàn)中,每當(dāng)Arduino成功收到一個(gè)字符H,連接在數(shù)字I/O端口管腳13上的發(fā)光二極管就會(huì)閃爍一次:\o"ViewallpostsinArduino"Arduino,\o"Viewallpostsin教程"教程\o"CommentonArduino教程七:XBee無線通信"4Comments?借助XBee擴(kuò)展板我們可以很方便地將XBee模塊連接到Arduino上,XBee模塊的工作原理也非常簡(jiǎn)單,它與Arduino之間其實(shí)就是通過串行接口(即Tx和Rx引腳)進(jìn)行通信。對(duì)于簡(jiǎn)單的點(diǎn)對(duì)點(diǎn)通信來講,只需要通過串行接口向XBee模塊寫數(shù)據(jù)就可以實(shí)現(xiàn)數(shù)據(jù)的發(fā)送;當(dāng)XBee模塊通過無線通道接收到數(shù)據(jù)時(shí),通過讀串行接口可以很方便地獲得這些數(shù)據(jù)。原理弄清楚之后,其實(shí)我們可以將XBee模塊看成是Arduino的串口,通過相應(yīng)的串口操作函數(shù)來實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送。首先請(qǐng)按照\o"PermanentLinktoArduinoXBee模塊使用手冊(cè)"ArduinoXBee模塊使用手冊(cè)中的說明配置好你的兩個(gè)XBee模塊,然后將相應(yīng)的跳線連接到XBEE一端:這里我們使用一個(gè)最簡(jiǎn)單的工程來進(jìn)行相應(yīng)的實(shí)驗(yàn):intledPin=13;intval;voidsetup(){pinMode(ledPin,OUTPUT);Serial.begin(9600);}voidloop(){//senddatatoanotherXBeemoduleSerial.print('A');delay(1000);//receivedatafromanotherXBeemoduleval=Serial.read();if(-1!=val){if('A'==val){digitalWrite(ledPin,HIGH);delay(500);digitalWrite(ledPin,LOW);delay(500);}}}該工程首先通過Serial.print()函數(shù)向XBee模塊發(fā)送一個(gè)字母A,該字母會(huì)被XBee模塊通過無線網(wǎng)絡(luò)發(fā)送出去,并被另外一個(gè)XBee模塊接收到。緊接著再通過Serial.read()函數(shù)從XBee模塊讀取從無線網(wǎng)絡(luò)接收到的數(shù)據(jù),如果是字母A的話,則點(diǎn)亮相應(yīng)的發(fā)光二極管。將該工程編譯并分別下載到兩個(gè)Arduino模塊中,注意下載的時(shí)候不要連接XBee擴(kuò)展板,這是因?yàn)閄Bee模塊會(huì)占用串口,從而導(dǎo)致下載無法正確完成。下載完成后將XBee擴(kuò)展板連接到Arduino上,并分別給兩者上電。這兩個(gè)Arduino模塊都會(huì)向?qū)Ψ桨l(fā)送字母A,然后從對(duì)方接收字母A,并對(duì)點(diǎn)亮數(shù)字I/O管腳13上連接的發(fā)光二極管。你可以試著將兩個(gè)模塊放在房間里的不同位置,來對(duì)XBee模塊的傳輸性能進(jìn)行測(cè)試。\o"ViewallpostsinArduino"Arduino,\o"Viewallpostsin基本電路"基本電路,\o"Viewallpostsin教程"教程\o"CommentonArduino電機(jī)驅(qū)動(dòng)擴(kuò)展板"11Comments?除了使用傳感器對(duì)各種外部物理量進(jìn)行感知之外,能夠?qū)?shí)際物體的運(yùn)動(dòng)進(jìn)行相應(yīng)的控制也是互動(dòng)設(shè)計(jì)中不可或缺的一部分。在所有這類動(dòng)力裝置中,電機(jī)顯然是最常見、最基本、最便宜的解決方案了,常用的電機(jī)的種類有很多種,如直流電機(jī),步進(jìn)電機(jī),伺服電機(jī),減速電機(jī)等,并且每一種電機(jī)的控制方法都有所不同。如果你是一個(gè)電子高手,控制普通的直流電機(jī)用幾個(gè)三極管就行了,否則話像L293這樣的芯片將是一個(gè)更好的選擇。L293芯片的核心是兩個(gè)H-橋,所有的H-橋芯片都具有如下一些引腳:邏輯輸入邏輯電壓電源電壓電源輸出地其中邏輯電壓引腳采用與微控制器相同的電壓和電流,電源電壓采用與運(yùn)行電機(jī)所需要的電壓和電流。邏輯輸入引腳連接到用來向H-橋輸出控制信號(hào)的微控制器上的引腳,而電源輸出引腳則連接到電機(jī)上。這么專業(yè)的術(shù)語翻譯到Arduino上可以這樣來理解。首先,我們需要兩套電源,一套用來給Arduino供電,一套用來給電機(jī)供電。其次,我們需要用到Arduino的數(shù)字I/O管腳來控制L293,并把電機(jī)接到L293上接受控制。說到這里,正好解釋一下Arduino的供電系統(tǒng),通常Arduino有三種供電方式:USB供電電池供電變壓器供電后兩者在Arduino上統(tǒng)稱為外部供電。供電方式的選擇是通過Arduino上的電源選擇跳線來實(shí)現(xiàn)的,當(dāng)把跳線接到“USB”一端時(shí),采用的是USB供電方式,這時(shí)整個(gè)Arduino及其附屬電路上的電源都由PC的USB接口提供,此時(shí)電流一般比較小,只能驅(qū)動(dòng)功率比較小的電路,如LED等。當(dāng)把跳線接到“EXT”一端時(shí),采用的是外部供電方式,這時(shí)一般能夠驅(qū)動(dòng)比較大的設(shè)備,如電機(jī)等。Arduino內(nèi)部一套電源轉(zhuǎn)換電路,可以用來將外部供電時(shí)的電壓(6-12V)轉(zhuǎn)換成內(nèi)部所需要的5V電壓,使用L293控制電機(jī)正是需要這兩套電源。下面這個(gè)就是基于L293D芯片的Arduino專用電機(jī)驅(qū)動(dòng)擴(kuò)展板,它能夠用來驅(qū)動(dòng)兩個(gè)直流電機(jī)。使用該擴(kuò)展板來驅(qū)動(dòng)直流電機(jī)非常簡(jiǎn)單,只需要將擴(kuò)展板插到Arduino上,同時(shí)將直流電機(jī)連接到擴(kuò)展板上的motors引腳上就可以了。正如上面所提到的,此時(shí)應(yīng)該采用Arduino的外部供電方式,并使用變壓器或者電源為Arduino提供電力。這里我選用的是9V變壓器和9V的直流電機(jī):電機(jī)擴(kuò)展板上motors引腳的上面兩針是用來接電機(jī)1的,下面兩針是用來接電機(jī)2的。電路連接好之后,剩下的工作就是如何用程序進(jìn)行控制了。使用這一擴(kuò)展板我們能夠控制直流電機(jī)的轉(zhuǎn)動(dòng)方向和轉(zhuǎn)動(dòng)速度,其中對(duì)轉(zhuǎn)動(dòng)方向的控制是通過Arduino上的數(shù)字I/O引腳12和13來實(shí)現(xiàn)的,對(duì)轉(zhuǎn)速的控制則是通過數(shù)字I/O引腳9和10來實(shí)現(xiàn)的。如果要控制直流電機(jī)1,我們需要向引腳9輸出相應(yīng)的PWM信號(hào)來控制電機(jī)的速度,同時(shí)設(shè)置引腳12和13的高低電壓來控制電機(jī)的方向。如果要控制直流電機(jī)2,則需要向引腳10輸出相應(yīng)的PWM信號(hào)來控制電機(jī)的速度,此時(shí)也是通過設(shè)置引腳12和13的高低電壓來控制電機(jī)的方向的。電機(jī)擴(kuò)展板上帶有S1和S2兩個(gè)按鈕,分別對(duì)應(yīng)于Arduino數(shù)字I/O的7號(hào)和6號(hào)管腳,并且在按下時(shí)為低電平。因此我們可以像下面的程序這樣利用S1來控制電機(jī)1的正反轉(zhuǎn):intswitchPin=7;//switchpinintdir1Pin=12;//direction1intdir2Pin=13;//direction2intspeedPin=9;//sppedpinvoidsetup(){pinMode(switchPin,INPUT);pinMode(dir1Pin,OUTPUT);pinMode(dir2Pin,OUTPUT);pinMode(speedPin,OUTPUT);}voidloop(){//switchispressedif(digitalRead(switchPin)==LOW){//setsppedanalogWrite(speedPin,250);//setdirectiondigitalWrite(dir1Pin,LOW);digitalWrite(dir2Pin,HIGH);}else{analogWrite(speedPin,100);digitalWrite(dir1Pin,HIGH);digitalWrite(dir2Pin,LOW);}}在將上述程序下載到Arduino上并運(yùn)行起來之后,我們就可以通過按S1鍵,來改變電機(jī)的旋轉(zhuǎn)速度和方向了:)P.S.在調(diào)試這一電機(jī)擴(kuò)展板的奇遇是,在將其插入到ArduinoDiecimila的貼片版本上時(shí),發(fā)現(xiàn)MC33269異常熱,并且電機(jī)偶爾才能工作。進(jìn)一步設(shè)計(jì)發(fā)現(xiàn)如果把整個(gè)擴(kuò)展板很好地插入到Arduino上時(shí),5V和Gnd之間居然是短路的。一開始并沒有發(fā)現(xiàn)問題在哪,后來才發(fā)現(xiàn)擴(kuò)展板上的電容C9與USB接頭的外殼短路了!將其錫去掉一下,并抬高擴(kuò)展板時(shí)問題得到解決。實(shí)際使用時(shí)請(qǐng)檢查下圖電容下面的引腳是否與USB接口的外殼短路了,特別是對(duì)于貼片版本來講,最好在通電前用萬用表檢查一下5V和Gnd之間的電阻值:)\o"ViewallpostsinArduino"Arduino,\o"ViewallpostsinDIY"DIY,\o"Viewallpostsin手冊(cè)"手冊(cè)\o"CommentonArduino下載線使用手冊(cè)"3Comments?Arduino使用的是Atmel公司的AVR單片機(jī),一般為ATmega8和ATmega168,這一系列的單片機(jī)都支持ISP(InSystemProgrammability)編程,無需依賴昂貴的編程器就可以完成程序的下載。Arduino電路在設(shè)計(jì)上考慮到了ISP功能,也留出了相應(yīng)的接口(ICSP),從而允許我們通過ISP下載線來完成bootloader的下載。新買來的Arduino模塊上一般都已經(jīng)預(yù)先下載好了bootloader,因此上電之后就能夠直接通過Arduino集成開發(fā)環(huán)境下載相應(yīng)的Arduino程序。正常情況下我們?cè)谟肁rduino時(shí)是不需要ISP下載線的,但在某些情況下可能會(huì)出現(xiàn)在Arduino集成開發(fā)環(huán)境中無法正常下載程序的現(xiàn)象,這很可能是由于bootloader受損所致。解決的辦法就是重新將bootloader燒寫到ATmega芯片中,此時(shí)你就需要用到這里介紹的ISP下載線了。Arduio網(wǎng)站上給出的并口下載線電路我只成功地更新過ATmega8的bootloader,而無法為Diecimila上的ATmega168下載bootloader。此外,Arduino給出的這一下載線電路過于簡(jiǎn)單,沒有做相應(yīng)的隔離和保護(hù),經(jīng)常使用可能會(huì)對(duì)Atmega芯片帶來一定的損害。AVR建議使用一片74HC244來隔離并口和ATmega芯片,下面是我所使用的下載線的原理圖:以及自制的下載線:使用并口下載線的時(shí)候,我們需要先到計(jì)算機(jī)的BIOS中將并口設(shè)為ECP(Theextendedcapabilitiesport)模式,同時(shí)將I/O基地址設(shè)置成378:此時(shí)在Windows的設(shè)備管理器中,我們會(huì)發(fā)現(xiàn)并口已經(jīng)被標(biāo)記為“ECP打印機(jī)端口”:用鼠標(biāo)右鍵單擊后從彈出的菜單中選擇“屬性”命令打開屬性對(duì)話框,在“資源”頁面中我們會(huì)看到相應(yīng)I/O基地址的設(shè)置已經(jīng)生效:現(xiàn)在就可以用ISP下載線連接計(jì)算機(jī)并口和Arduino上的ICSP接口了,請(qǐng)?zhí)貏e留意連接方向:ISP下載線六口插座上標(biāo)有小三角的一端應(yīng)該靠近Arduino的ICSP接口上標(biāo)為1的一端。雖然計(jì)算機(jī)并口能夠?yàn)橄螺d電路提供一定的電壓,但一般我還是建議給Arduino模塊加上5V電壓(通過USB線和外接電源都可以),以保證下載過程的穩(wěn)定。硬件準(zhǔn)備好之后,我們就可以通過相應(yīng)的軟件將bootloader燒到Arduino中。支持AVR下載線的軟件比較多,如AVRDUDE和SLISP等,我們?cè)谶@里使用的是PonyProg。下載并安裝好PonyProgv2.07aBETA版本,啟動(dòng)PonyProg時(shí)會(huì)提示你進(jìn)行相應(yīng)的校準(zhǔn)和設(shè)置工作。首先選擇“Setup”菜單中的“Calibration”命令進(jìn)行校準(zhǔn),然后再選擇“Setup”菜單中的“IntrefaceSetup…”命令進(jìn)行相應(yīng)的并口設(shè)置:根據(jù)你的Arduino模塊上的芯片類型,從“Device”菜單中的“AVRmicro”子菜單中選擇“ATmega8”或者“ATmega168”。你也可以從工具欄上的Device下拉框中進(jìn)行相應(yīng)的選擇:首先從“Command”菜單中選擇“ReadAll”命令,從Arduino模塊上讀出ATmega中的當(dāng)前數(shù)據(jù)和設(shè)置,其中最重要的是之后要設(shè)置的熔絲位。然后選擇“File”菜單中的“OpenProgram(FLASH)File…”命令,打開“Openprogram(FLASH)contentfile”對(duì)話框。從你的Arduino安裝目錄下找出對(duì)應(yīng)于的bootloader。對(duì)于Arduino0010版本來講,我們可以在hardware\bootloaders目錄下找到atmega8和atmega168兩個(gè)目錄,分別對(duì)應(yīng)ATmega8和ATmega168芯片所對(duì)應(yīng)的bootloader(文件擴(kuò)展名為.hex),在atmega168目錄下可以找到ATmegaBOOT_168_diecimila.hex和ATmegaBOOT_168_ng.hex兩個(gè)文件,分別對(duì)應(yīng)Diecimila和NG模塊。你需要根據(jù)你的Arduino模塊的具體情況,加載相應(yīng)的bootloader文件。AVR通過熔絲來控制芯片內(nèi)部的一些功能,比如JTAG,時(shí)鐘的使用,掉電檢測(cè)電壓,是否允許調(diào)試等。熔絲位的配置是為Arduino下載bootloader過程中最復(fù)雜的一步,而且設(shè)置出錯(cuò)很有可能導(dǎo)致芯片鎖死,所以一定要仔細(xì)。選擇“Command”菜單中的“SecurityandConfigurationBits…”命令,打開相應(yīng)的熔絲設(shè)置對(duì)話框。Arduino的bootloader對(duì)熔絲位有一定的要求,主要是同外部時(shí)間設(shè)置相關(guān)的。對(duì)于串口模塊采用的ATmega8來講,相應(yīng)的熔絲字節(jié)要設(shè)置成0xCA(FuseHighByte)和0xFF(FuseLowByte),具體每位的含義可以參見WolfPaulus的文章。在PonyProg中對(duì)ATmega8的熔絲位設(shè)置為下圖所示:對(duì)于NG和Diecimila采用的ATmega168來講,相應(yīng)的熔絲字節(jié)要設(shè)置成0xF8(ExtendedFuseByte),0xDF(FuseHighByte)和0xFF(FuseLowByte)。在PonyProg中對(duì)ATmega168的熔絲位設(shè)置為下圖所示:熔絲位設(shè)置好之后,選擇“Command”菜單中的“WriteAll”命令,將bootloader下載到Arduino中。下載過程中Arduino上的發(fā)光二極管L會(huì)不斷閃爍。下載完成之后,我們可以通過Arduino集成開發(fā)環(huán)境下載一個(gè)Arduino工程,來驗(yàn)證新下載的bootloader是否能夠正常工作。\o"ViewallpostsinArduino"Arduino,\o"ViewallpostsinDIY"DIY\o"CommentonDIYArduino:HelloWorld"NoComments?終于要開始寫第一個(gè)Arduino程序了,就跟之前學(xué)習(xí)所有語言一樣,第一個(gè)程序自然是HelloWorld了。不過這次有點(diǎn)特殊,要讓Arduino顯示一個(gè)“HelloWorld”字符串恐怕有點(diǎn)難度,這是因?yàn)锳rduino模塊上沒有提供任何可供顯示字符的設(shè)備。而這對(duì)Arduino新手來講,也就意味著程序的調(diào)試將是一個(gè)令人頭疼的問題。最簡(jiǎn)單的辦法是在Arduino提供的數(shù)字端口(DigitalI/O)上連接發(fā)光二極管,然后通過控制發(fā)光二極管的亮滅來表明程序的當(dāng)前運(yùn)行狀態(tài),這的的確確可以算得上是最原始的調(diào)試方法。我的第一個(gè)Arduino程序正是要通過對(duì)數(shù)字I/O的13號(hào)管腳的控制,來實(shí)現(xiàn)與其相連的發(fā)光二極的亮滅。之所以要選擇13號(hào)管腳步,是因?yàn)閺脑韴D上可以看出該管腳與ATmega的引腳之間連接了一個(gè)1K的電阻,能夠起到限流的作用,以保護(hù)二極管不被燒壞。發(fā)光二極管是有正負(fù)極性的,因此必須連接正確才能夠讓其正常發(fā)光。剛買來的發(fā)光二極腿比較長(zhǎng)的一端是正極,需要接在Arduino數(shù)字I/O的13號(hào)管腳上;腿比較短的一端是負(fù)極,需要接在GND管腳上。運(yùn)行Arduino的集成開發(fā)環(huán)境,選擇File->New菜單創(chuàng)建一個(gè)新的Arduino工程接著在Arduino集成開發(fā)環(huán)境的主窗口中輸入相應(yīng)的代碼:intledPin=13;voidsetup(){pinMode(ledPin,OUTPUT);}voidloop(){digitalWrite(ledPin,HIGH);delay(1000);digitalWrite(ledPin,LOW);delay(1000);}不難看出,一個(gè)最簡(jiǎn)單的Arduino程序至少要實(shí)現(xiàn)兩個(gè)函數(shù):setup()和loop()。其中setup()這個(gè)函數(shù)主要用來完成相應(yīng)的初始化工作,在上面的例子中是將數(shù)字I/O的13號(hào)管腳設(shè)置為數(shù)字輸出。loop()這個(gè)函數(shù)則是Arduino程序的主函數(shù),相當(dāng)于C語言中的main()函數(shù),一個(gè)Arduino程序要完成的主要功能都在該函數(shù)中實(shí)現(xiàn),在上面的例子中是通過變換13號(hào)管腳的高低電平,并設(shè)置一秒的延時(shí),從而使發(fā)光二極管能夠間歇性地不斷亮滅。從原理上講,用Arduino語言編寫的程序最后會(huì)被翻譯成相應(yīng)的C代碼,再用AVR-GCC編譯后下載到ATmega單片機(jī)中運(yùn)行。因此設(shè)計(jì)Arduino語言的目的就是簡(jiǎn)化單片機(jī)編程,雖然這樣效率上會(huì)有一些損失,但卻能夠極大地促進(jìn)單片機(jī)在更廣泛領(lǐng)域內(nèi)的使用,基本上算是沿襲了PC機(jī)上軟件設(shè)計(jì)語言從匯編語言到C語言再到高級(jí)語言這一過程,因此很多技術(shù)和做法其實(shí)可以借鑒。用Arduino語言編寫的代碼需要先驗(yàn)證(Verify),以保證語法的正確性,然后再編譯生成相應(yīng)的機(jī)器碼。對(duì)Arduino代碼的驗(yàn)證可以通過Sketch->Verify/Compile菜單命令完成,也可以通過工具欄上的按鈕完成:代碼成功通過驗(yàn)證和編譯之后,就可以將其下載到Arduino模塊中了。由于昨天已經(jīng)將bootloader成功地?zé)龑懙搅薃Tmega中,因此下載Arduino應(yīng)用的任務(wù)就可以完全交由bootloader來完成了。Arduino的bootloader與集成開發(fā)環(huán)境的交互是通過串口來完成的,因此需要用串口線將Arduino與PC機(jī)的串中連接起來。我的串口線是自制的,按照Arduino的原理圖,只需要接2,3和5三根線,其中前兩根用于數(shù)據(jù)的收發(fā),最后一根是地線。串口線連接好之后,在Arduino集成開發(fā)環(huán)境的Tools->SerialPort菜單下選擇與PC相連的串口:一開始我很奇怪為什么沒有設(shè)置波特率和其它串行通信參數(shù)的地方,后來在Arduino的網(wǎng)站上才知道這些參數(shù)都保存在一個(gè)名為preferences.txt的配置文件中,該文件一般保存在類似于C:\DocumentsandSettings\Administrator\ApplicationData\Arduino這樣的目錄下。下面是我在該文件中找到的與串口通信相關(guān)的一些參數(shù):serial.stopbits=1
serial.databits=8
serial.download_rate=19200
serial.parity=N
不難看出,Arduino模塊采用的是192008N1方式來進(jìn)行串口通信的。確定了這些之后,按下Arduino模塊的復(fù)位按鈕,隨后立即執(zhí)行File->UploadtoI/OBoard菜單命令將編譯好的程序下載到Arduino模塊中。Arduino的bootloader被設(shè)計(jì)成如果在給定的時(shí)間(通常有7到8秒)內(nèi)沒有接收到任何來自集成開發(fā)環(huán)境的命令,就自動(dòng)運(yùn)行之前已經(jīng)下載的程序,所以我們必須保證在正確的時(shí)間段內(nèi)給Arduino模塊發(fā)送程序下載的指令。除了通過菜單命令外,下載程序也可以通過快捷鍵Ctrl+U,或者直接點(diǎn)擊工具欄上的相應(yīng)按鈕來完成:將Arduino程序上傳到Arduino模塊中需要花一些時(shí)間,并且取決于工程的大小。當(dāng)程序上傳成功之后,可以在Arduino集成開發(fā)環(huán)境的console窗口中看到上傳后的程序大小,以及該Arduino模塊能夠接受的最大程序的大?。含F(xiàn)在再次復(fù)位Arduino模塊,會(huì)看到發(fā)光二極管立即閃了一下,表明bootloader正常工作了。接著再過一段時(shí)間,大約7到8秒,會(huì)看到發(fā)光二極管間歇性地不斷亮滅,這就表明第一個(gè)Arduino程序已經(jīng)成功地運(yùn)行起來了,CONGRATULATIONS!我在這期間遇到的唯一問題是剛開始的時(shí)候無法通過串口線下載程序,最初懷疑是串口通信的問題,后來慢慢排查發(fā)現(xiàn)Arduino模塊能夠從串口收數(shù)據(jù),但卻無法從串口發(fā)數(shù)據(jù)。仔細(xì)檢查了硬件發(fā)現(xiàn)原來我在Arduino模塊上接的是串口的公頭,自然收發(fā)的兩條線沒有同PC機(jī)完全正常地連接上,后來換成一個(gè)母頭就一切正常了。這一過程中的另一收區(qū)是仔細(xì)讀了Arduino關(guān)于串口部分的原理圖,原來這部分還是一個(gè)實(shí)用的TTL轉(zhuǎn)232的電平轉(zhuǎn)換電路,其中只用到了電阻、二極管和三極管,省去了一個(gè)MAX232芯片。至此,DIYArduino模塊的工作算是暫告一段落,剩下的是如何對(duì)各個(gè)硬件功能進(jìn)行詳細(xì)的驗(yàn)證,這可以結(jié)合實(shí)際的項(xiàng)目來完成。我計(jì)劃下一步做一些簡(jiǎn)單的Arduino工程,大部分可能都來源于Arduino網(wǎng)站或者是網(wǎng)上收集到的資料,以驗(yàn)證我的Arduino模塊,同時(shí)也可以當(dāng)作入門的教程供大家參考。Aug26\o"ViewallpostsinArduino"Arduino,\o"ViewallpostsinDIY"DIY\o"CommentonDIYArduino:PCB和焊接"7Comments?讀了一些有關(guān)Arduino的介紹性的文章之后,才知道這么一個(gè)小東東居然在國外是大紅大紫,雖然沒有完全想清楚其中的原因,但似乎并不妨礙自己DIY它的決心。Arduino采用開放源代碼的模式,其原理圖和電路圖都可以從其網(wǎng)站免費(fèi)得到。在權(quán)衡比較了一番之后,我決定從其采用串口方式的版本開始,這一方面是因?yàn)樵硐鄬?duì)簡(jiǎn)單,能夠降低組裝和調(diào)試的難度,另一方面則考慮到USB模擬的串口并不總是那么穩(wěn)定。決定開工之后,花了一上午的時(shí)間畫好了原理圖,基本湊和吧。可輪到電路圖時(shí)可就不一樣了,封裝和走線對(duì)我這業(yè)務(wù)選手來講的確不是件容易的事情?;藘蓚€(gè)晚上的時(shí)間,最后還是決定放棄,因?yàn)锳rduino官方提供的電路圖在我看來確實(shí)比自己布的要漂亮多了,看來這一修養(yǎng)只能在隨后的日子里慢慢積累了。去做電路板時(shí)遇到一些問題,由于我問到的制造電路板的廠商基本上只認(rèn)Protel,根本不知道還有EagleCAD一說,甚至有人還將其與AutoCAD混為一談,告訴我這個(gè)軟件不是用來畫電路圖的。沒有辦法,只好回家一頓Google,將其生成Gerber文件后再將送過去。這一過程也算有點(diǎn)收獲,除了知道何為Gerber文件以及如何在EagleCAD中生成Gerber文件之外,還找到了一個(gè)用來查看Gerber文件的好工具:CAM350。電路板從送去到拿到一般需要一周多的時(shí)間,這期間的主要任務(wù)當(dāng)然是購買元器件了。一開始并沒有注意到Arduino串口版本的元件列表,以為與NG版本一樣也采用的是ATmega168,問了好些地方都沒得賣,最好只好高價(jià)比香港快遞過來,估計(jì)貴了不止一倍。最后在組裝的時(shí)候才發(fā)現(xiàn)原來串口版本采用的仍舊是ATmega8,而這在村里還算是很好買到的,這一個(gè)郁悶??!元件都準(zhǔn)備妥當(dāng)之后,電路板也做出來了,雖然不是與Arduino官方一致的藍(lán)色,但還是挺漂亮的;-)將元件焊接到PCB板上又是一次對(duì)基本功的訓(xùn)練,好在這一版本的Arduino采用的都是分立元件,焊接上沒有遇到太大的麻煩。期間再一次深刻體會(huì)到了工具的重要性,不時(shí)幻想自己手中那把最便宜的鉻鐵啥里也能更新?lián)Q代一下,雖然他的壽命還不到短短的一個(gè)月。焊接完成之后,萬里長(zhǎng)征估計(jì)還只完成了第一步,要讓Arduino能夠正常的運(yùn)行起來,肯定還有相當(dāng)多的調(diào)試和排錯(cuò)的工作要做,而這也正是DIY的樂趣所在;-)\o"ViewallpostsinArduino"Arduino,\o"Viewallpostsin電子積木"電子積木\o"CommentonArduino電子積木專用傳感器擴(kuò)展板V4"2Comments?真沒想到,一塊傳感器擴(kuò)展板居然被我改到了第四版,而且估計(jì)還會(huì)繼續(xù)修改下去。最初的傳感器擴(kuò)展板在設(shè)計(jì)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年設(shè)施環(huán)境計(jì)算機(jī)自動(dòng)控制設(shè)備合作協(xié)議書
- 2024年自動(dòng)化儀表項(xiàng)目合作計(jì)劃書
- 2024年金屬制繩、纜項(xiàng)目發(fā)展計(jì)劃
- 2024年家居護(hù)理用品合作協(xié)議書
- Thidiazuron-Standard-生命科學(xué)試劑-MCE
- Tetromycin-C1-生命科學(xué)試劑-MCE
- Tetracycline-hydrochloride-Standard-生命科學(xué)試劑-MCE
- 4 3 比例的應(yīng)用 同步練習(xí) 人教版數(shù)學(xué)六年級(jí)下冊(cè)
- Sunset-Yellow-FCF-Standard-生命科學(xué)試劑-MCE
- Steviol-Standard-生命科學(xué)試劑-MCE
- 第12課 明朝的興亡【知識(shí)精研】 《中國歷史》 中職中專 高效課堂課件
- 99版-干部履歷表-A4打印
- 現(xiàn)患率調(diào)查匯總表
- 低壓電纜測(cè)絕緣施工方案
- 電動(dòng)機(jī)基礎(chǔ)知識(shí)介紹
- 重慶十八中學(xué)2024屆物理八上期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 大數(shù)據(jù)營(yíng)銷 試卷2
- 魚塘所有權(quán)證明
- 重點(diǎn)實(shí)驗(yàn)室匯報(bào)
- 醫(yī)療器械自查表【模板】
- 1999年制干部履歷表
評(píng)論
0/150
提交評(píng)論