帶手指連桿機(jī)器人-arduino學(xué)習(xí)-中文教程_第1頁(yè)
帶手指連桿機(jī)器人-arduino學(xué)習(xí)-中文教程_第2頁(yè)
帶手指連桿機(jī)器人-arduino學(xué)習(xí)-中文教程_第3頁(yè)
帶手指連桿機(jī)器人-arduino學(xué)習(xí)-中文教程_第4頁(yè)
帶手指連桿機(jī)器人-arduino學(xué)習(xí)-中文教程_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Arduino是一塊基與開(kāi)放原始代碼的Simplei/o平臺(tái),並且具有使用類似java,C語(yǔ)言的開(kāi)發(fā)環(huán)境??梢钥焖貯rduino語(yǔ)言FlashProcessing…等軟件,作出互動(dòng)作品。Arduino可以使用開(kāi)發(fā)完成的電子元件例Switch臺(tái),例如說(shuō):flashprocessingMax/MSPVVVV或其他互動(dòng)軟件…Arduino開(kāi)發(fā)IDE界面基于開(kāi)放原始碼原則,可以免費(fèi)使用開(kāi)發(fā)出令人驚奇的互動(dòng)作品。Roboduino?DFRduinoArduino完全兼容,只是在原來(lái)的基礎(chǔ)上作了些改進(jìn)。ArduinoIO使用的孔座,做互動(dòng)作品需要面DFRduinoIO使用針座,使用我們的杜邦線就可以直接把各種傳感器連接到DFRduino上特色描DFRduino可使用ISP線,自我將新的IC程序燒入「bootloader」可依據(jù)電路圖,簡(jiǎn)化DFRduino模組,完成獨(dú)立云作的微處理控制器 光敏電阻伺服電機(jī)支援多樣的互動(dòng)程式如:Flash,Max/Msp,VVVV Prcessig使用低價(jià)格的微處理控制器(AMEG168V-10P 接口不需外接源另外有提供9DC 用方面利用FRuino,突破以往只能使用滑鼠,鍵盤,CCD成單性能描DigitalI/O出端0~13ogI/O出端0~5支持USB接口協(xié)議及供電(不需外接電源支持ISP功能TX/RX支持AREF子支持六組端子(Pin11,Pin10,Pin9,Pin6,Pin5,Pin3)USB5V~9VDC采用AtmelAtmega168V-10PIArduino語(yǔ)ArduinoC/C++基礎(chǔ)上的C語(yǔ)言,ArduinoAVR單片機(jī)(微控制器)相關(guān)的一些寄存器參數(shù)設(shè)置等都函數(shù)化了,不用我們?nèi)チ私馑牡讓?,讓不太了解AVR單片機(jī)(微控制器)的朋友那么這里就簡(jiǎn)單的注釋一下Arduino語(yǔ)言/*************基礎(chǔ)C語(yǔ)言關(guān)鍵字switchdo...語(yǔ)法符號(hào);/*運(yùn)算符 -*/% <>! - -數(shù)據(jù)類型 charbyte字節(jié)類 整數(shù)類unsignedintlongnsi 實(shí)數(shù)類數(shù)據(jù)類型轉(zhuǎn)換常量HIGH| 表示數(shù)字IO口的電平,HIGH表示高電平(1),LOW表示低電平(0)INPUT|OUTPUT表示數(shù)字IO口的方向,INPUT表示輸入(高阻態(tài)),OUTPUT表示輸出(AVR5V電壓40mA電流true| 以上為基礎(chǔ)c語(yǔ)言的關(guān)鍵字和符號(hào),有c語(yǔ)言基礎(chǔ)的都應(yīng)該了解其含義,這里也不結(jié)voidsetup()voidloop()功IPIPTOpinMode(pin,mode) 數(shù)字IO口輸入輸出模式定義函數(shù)pin表示為013 alu) O口輸出電平定義函數(shù)pin0~13,value表示為HIGHLOW。比如定義HIGH可驅(qū)動(dòng)LED。tdgitRed(pin) 模擬intogRead(pinIO口讀函數(shù),pin0~5(ArduinoDiecimila0~5,Arduinonano0~7)。比如可以讀模擬傳感器(10AD,0~5V表示為0~1023)。 ogWrite(pin,value)- 數(shù)字IO口輸出函數(shù),Arduino數(shù)字IO口標(biāo)注了的IO口可使用該函數(shù),pin表示3,5,6,9,10,11,value表示為0~255。比如可用于電機(jī)調(diào)速或音樂(lè)。擴(kuò)展shiftOut(dataPinclockPin,bitOrder,value)SPIIOSPI接口的74HC5958個(gè)IO擴(kuò)展,dataPin為數(shù)據(jù)口,clockPin為時(shí)鐘口,bitOrder為數(shù)據(jù)傳輸方向(MSBFIRST,LSBFIRST低位),value表示所要傳送的數(shù)據(jù)(0~255),另外還需要一個(gè)IO口做74HC595的使能控制。unsignedlongpulseIn(pin,value)脈沖長(zhǎng)度記錄函數(shù),返回時(shí)間參數(shù)(us),pin表示為0~13,valueHIGHLOW。比如valueHIGH,那么當(dāng)pin輸入為高電平時(shí),開(kāi)始計(jì)pin輸入為低電平時(shí),停止計(jì)時(shí)間函unsignedlongmillis()返回時(shí)間函數(shù)(單位ms),該函數(shù)是指,當(dāng)程序運(yùn)行就開(kāi)始計(jì)時(shí)并返回記錄的參數(shù),該參數(shù)溢出大概需要50天時(shí)間。 min(x,y)max(x,y)abs(x)constrain(x,a,b)約束函數(shù),下限ab,xab之間才能返回map(value,fromLow,fromHigh,toLow,toHigh) 約束函數(shù),value必須在fromLowtoLowfromHigh與toHigh之間。pow(base,exponent)開(kāi)方函數(shù),baseexponent次方 平sqrt(x)r eed(seed)隨機(jī)數(shù)端口定義函數(shù),seed表示讀模擬 ogRead(pin)函數(shù)longrandom(max)0,小maxlongrandom(min,max)隨機(jī)數(shù)函數(shù),返回?cái)?shù)據(jù)大于等于min,小于max。attachInterrupt(interrupt,,mode) 外部中斷只能用到數(shù)字IO23,interrupt表示中斷口初始01,表示一個(gè)功能函數(shù),mode:LOW低電平中斷,CHANGE有變化就中斷,RISING上升沿中斷,F(xiàn)ALLING 中斷開(kāi)關(guān),interrupt=1開(kāi),interrupt=0關(guān)。interrupts()noInterrupts()中斷Arduino使 http://q-robot .co 6intSerial.available()判斷緩沖器狀態(tài)intSerialread()讀串口并返回收到參數(shù)Serial Serial.print(data)Serial.println(data) 語(yǔ)言庫(kù)文件庫(kù)文 EEPROM-EEPROMEthernet-以太網(wǎng)控制器程序LiquidCrystal-LCDServo-SoftwareSerial-任何數(shù)字IOStepper-步進(jìn)電機(jī)控制程序Wire-TWI/I2C總線程序Matrix-LED矩陣控制程序Sprite-LED 第二課Arduino的數(shù)字、模擬端引導(dǎo)串口發(fā)過(guò)來(lái)的程序順利寫入flash區(qū)中,flash可以重復(fù)燒寫,因此想更新軟件就是這么的方便。下面我來(lái)簡(jiǎn)單的介紹一下驅(qū)動(dòng)的安裝和編譯環(huán)境的使用。首先連接程序用的線。首先將數(shù)據(jù)線的圓口一端插在Arduino328板子上·將數(shù)據(jù)線的扁口一端插在電腦的USB接口上,如下圖所示 ·driversFTDIUSBDrivers件夾,如圖 框Arduino0018開(kāi)發(fā)編譯環(huán)境很簡(jiǎn)潔,各個(gè)功能鍵功能描述接下來(lái)點(diǎn)Tools->Board選擇開(kāi)發(fā)板型號(hào)這里我們使用的是ArduinoDuemilanove328,Tools->SerislPort選擇串口,即USBArduino語(yǔ)言是以setup()開(kāi)頭,loop()作為主體的一個(gè)程序構(gòu)架。是這樣描述setup()的:用來(lái)初始化變行,功能類似c語(yǔ)言中的“main();”。DigitalOutput數(shù)字輸出實(shí)intledPin void{ }void{digitalWrite(ledPin,HIGH);//設(shè)定PIN13腳為HIGH=4V //設(shè)定延時(shí)時(shí)間,1000=1秒digitalWrite(ledPin,LOW); //設(shè)定PIN13腳為L(zhǎng)OW=0V }intledPinintledPin=intval;voidsetup(){pMe(LED數(shù)字IOUTP}void{ {ogWrite(ledPin,val);//輸 } {ogWrite(ledPin,val);}}DigitalInput數(shù)字輸入實(shí)功能:閉合開(kāi)關(guān)SW,PIN13腳上的LED亮,斷開(kāi)開(kāi)關(guān)SW,PIN13腳上的LEDintledPin intintswitchPin=intval=0;void{IO (ldPinOT pinMode(switchPin IO,INPUT}void{val=digitalRead(switchPin); //讀數(shù)字IO口上的狀態(tài)if(HIGH==val) digitalWrite(ledPin,LOW); //如果開(kāi)關(guān)斷開(kāi),LED滅 //如果開(kāi)關(guān)閉合,LED}ogInput模擬輸入Arduino使 http://robot.taoba 功能:調(diào)節(jié)電位器RPot,使輸入模擬量的變化來(lái)改變LED閃爍的intledPin intRPotPin 定模擬輸入IOintval=0; voidsetup(){ //設(shè)定數(shù)字I口的模式,OUP 輸}void{ nagRdP IO口上diitalWrite(ledPin,HIGH); //設(shè)定PIN13腳為HIGH=4V //延時(shí)時(shí)間為模擬輸入的值digitalWrite(ledPin,LOW); //設(shè)定PIN13腳為L(zhǎng)OW //延時(shí)時(shí)間為模擬輸入的值}第三課Arduino的串口通Arduino不但有14個(gè)數(shù)字接口和6個(gè)模擬接口外,還有1個(gè)更為常用的串口接口。在實(shí)際應(yīng)用中串口以只需要少串行接口按標(biāo)準(zhǔn)被分為RS-232、RS-422、RS-485。RS-232是在1962年發(fā)布的,也是目前PC機(jī)與通信工業(yè)中應(yīng)用最廣泛的一種串行接口,RS-232采取不平衡傳輸方式,即所謂單端通訊。典型的RS-232信號(hào)在正負(fù)電平之間擺動(dòng),在發(fā)送數(shù)據(jù)時(shí),發(fā)送端驅(qū)動(dòng)器輸出正電平在+5~+15V,負(fù)電平在-5~-15V電平。我們的單片機(jī)使用的是TTL電平的串行協(xié)議,因此單片機(jī)與pc通訊時(shí)需要進(jìn)行RS-232電平和TTL電平的轉(zhuǎn)換,最常用的電平轉(zhuǎn)換是MAX232,單片機(jī)與單片機(jī)通USB版本的Arduino則是通過(guò)USB轉(zhuǎn)成TTL串 程序的,數(shù)字口PIN0和PIN1就是TTL串口RX和TXArduino使 http//q- 串口通訊中最重要的一點(diǎn)就的通訊協(xié)議,一般串口通訊協(xié)議都會(huì)有波特率、數(shù)據(jù)位、停止位、校驗(yàn)位等參數(shù)。大家不會(huì)設(shè)置也不用怕,Arduino語(yǔ)言中Serial.begin()函數(shù)就能使大家輕松完成設(shè)置,我們只需要改變?cè)摵瘮?shù)的參數(shù)即可,例如Serial.begin(9600),則表示波特率9600bit/s(每秒比特?cái)?shù)bps),其余參數(shù)默認(rèn)即可??诎l(fā)送及Serial.println()帶換行符串口發(fā)送四個(gè)函數(shù)。下面我們用一段代碼來(lái)演示這些函數(shù)的用途。實(shí)驗(yàn)無(wú)須電路,只需要將的USB線連接即可charword;voidsetup(){ }void{ifSerial.available0)判斷串口緩沖器是否有數(shù)據(jù)裝{word= //串口{Serial.print("Robot"); Serial.println("isNO.1");//從串口發(fā)送字符串并換行}}}}編 Arduino使 http://q-robot .co 選擇串口監(jiān)視器的波特率為9600bps,在發(fā)送框里填上字母a,點(diǎn)send發(fā)送,下面的顯示框里就會(huì)顯示返回的數(shù)第四課ArduinoI2C/TWI通什么的I2C呢?I2C即Inter-IntegratedCircuit串行總線的縮寫,是PHILIPS公司推出的間串行傳輸總線。它以1根串行數(shù)據(jù)線(SDA)和1根串行時(shí)鐘線(SCL)實(shí)現(xiàn)了雙工的同步數(shù)據(jù)傳輸。具有接口線少,控制方式簡(jiǎn)化,器件封裝形式小,通信速率較高等優(yōu)點(diǎn)。在主從通信中,可以有多個(gè)I2C線器件同時(shí)接到I2C上,通過(guò)地址來(lái)識(shí)幸運(yùn)的是,Arduino供了I2C(Wire.h),這樣我們就可以很輕松的玩IIC通訊了這里使用ArduinoDiecimila2ArduinoNano(不一定非要nanoArduinoDiecimila、Mini甚至其他IIC器件都可以。如果IIC總線上掛了多個(gè)從機(jī),那么就要在總線上加上拉電阻。),ArduinoNano是Arduino中的新成員,估計(jì)大家還不太熟悉吧,這里我就簡(jiǎn)單介紹一下。Arduino使 換功能,12版的編譯環(huán)境支持nano硬件。成為主器件,這就是總線競(jìng)爭(zhēng)。在競(jìng)爭(zhēng)過(guò)程中數(shù)據(jù)不會(huì)被破壞成為主器件,這就是總線競(jìng)爭(zhēng)。在競(jìng)爭(zhēng)過(guò)程中數(shù)據(jù)不會(huì)被破壞下面我們就做個(gè)簡(jiǎn)單的I2C通訊實(shí)驗(yàn),通過(guò)編譯環(huán)境的串口監(jiān)視器向主機(jī)發(fā)送指令,主機(jī)收到后,再通過(guò)I2C總線發(fā)送給地址匹配的從機(jī),然后從LED亮。代碼分主從部分,主機(jī)部分寫ArduinoDiecimila,從機(jī)部分寫入ArduinoNano。在上代碼之前,我們先了解一下IIC的庫(kù)函數(shù)Wire.h里面的常用函數(shù) //初始化Wire設(shè)置IIC requestFrom(address,count)//在啟動(dòng)IIC總線后,可以繼 另一個(gè)地址,和次 IIC byte //用于判斷數(shù)據(jù)是否有效有效才始接byte nReiv(hnd nRueshnd 主機(jī)代碼:(從編譯器串口監(jiān)視器發(fā)送數(shù)字1,2,3,4來(lái)控制從機(jī)的LED亮與滅#include<Wire.h>voidsetup(){ //啟動(dòng)I2C總線,地址缺省表示為主機(jī) //啟動(dòng)串口,設(shè)置波特率為9600Serial.println("Ready");//發(fā)送字符}void{intif(Serial.available(0)//判斷串口緩沖器是否有數(shù)據(jù)裝{ {Wire.beginTransmission(44通 //發(fā)送數(shù)字1開(kāi)LED //停止發(fā)送Serial.println("49 49OK,49數(shù)字1ASCII }else{Wire.beginTransmission(4);//與地址4的從機(jī)連接通訊 //發(fā)送數(shù)字0關(guān)LED //停止發(fā)送Serial.println("50OK"); //串口上顯示50OK表示完成}else{}else{We.bgiTnsissin(5Wre.snd0)//發(fā)送數(shù)字0Wire.beginTransmission(5);//與}else{We.bgiTnsissin(5Wre.snd0)//發(fā)送數(shù)字0 //停止發(fā)送Serial.println("52OK"); //串口上顯示52OK表示完成}else}}從機(jī)A代碼:(接收到主機(jī)發(fā)送的1點(diǎn)亮LED,接收到0關(guān)掉#include<Wire.h>intLED=2;voidsetup(){ //設(shè)置從機(jī)地址為4 IO模Arduino使 http//q- void{}voidreceiveEvent(int {intc {digitalWrite(LED,HIGH果為1開(kāi)}else{digitalWrite(LED,LOW);//如果為0關(guān)}}從機(jī)B代碼:(接收到主機(jī)發(fā)送的1點(diǎn)亮LED,接收到0關(guān)掉#includeintintLED=void{Wirebgin址為 ReeivereeiEvent);pi}void{}voidreceiveEvent(int{intc=Wire.receive();{}else{}Arduino使 第五課Arduino1602字符液晶1602是最常用的一種,很具有代表性,1602晶分482(關(guān)但使用Arduino板驅(qū)動(dòng)1602液晶,還真有點(diǎn)費(fèi)勁,因?yàn)樗荒芪徊僮鳌8鶕?jù)提供的例程,很容易看出他們intDI=12;intRW=intDB{3456,78910};//使用數(shù)組來(lái)定義總線需要的管腳intEnable=2; mandWrite(intvalue)//pollallthe{inti=fori=DB[0iDI; {digitalWrite(i,value&value>>=} i(EnalLdelMroecons//sendapulseto/puse1msgod//pause1msaccordingto}voidLcdDataWrite(intvalue)//pollallthe{inti=0;digitalWrite(RW,LOW);for(i=DB[0];i<=DB[7];i++)digitalWrite(i,value&value>>=} //sendapulsetoenable //pause1msaccordingto}Arduino使 htp:/ bt.a voidsetup{inti=for(i=Enable;i<=DI;{} //initiatizelcdafterashortpause neededbytheLCDscontrollermandWrite(0x38);//set: //8-bitinterface,1displaylines,5x7fontmandWrite(0x06);//entrymodeset: //incrementautomatically,nodisplayshiftmandWrite(0x0E);//displaycontrol://turndisplayon,cursoron,noblinkingmandWrite(0x01);//cleardisplay,setcursorpositiontozeromandWrite(0x80);//displaycontrol://turndisplayon,cursoron,noblinking}voidloop(void)mandWrite(0x02);//setcursorpositionto//Writee taWrte(' Wrte('LcdDataWrite('');}Arduino使 http://robot.taoba 行調(diào),本實(shí)驗(yàn)使用的是灰膜液晶,VEE直接接到地即可。它的讀寫操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。(說(shuō)明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址指令3I/D:光標(biāo)移動(dòng)方向,高電平右S:屏幕上所有文字是否左移或者右移。高電平表示有光標(biāo),低電平表示無(wú)光標(biāo)B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍指令5:光標(biāo)或顯示移 指令6DL4位總線,低電平8N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示F:低電平時(shí)顯示5x75x10的點(diǎn)陣字符指令7:字符發(fā)生器RAM地址設(shè)置指令8:DDRAM地址設(shè)置指令11ArduinoDM的數(shù)字端口只有14個(gè),那么LCD1602就占用了10個(gè),浪費(fèi)了不少資源,對(duì)我們以后的電路擴(kuò)展帶來(lái)了極大的不便。于是我就可以使用該液晶的4總線驅(qū)動(dòng)方式,可以節(jié)省3個(gè)數(shù)字端口出來(lái)作其他擴(kuò)展。本人編寫的工intLCD1602_RS=12;intLCD1602_RW=11;intintDB[]6,7,8, charstr1[]=" eto"; charstr2[]=" mand_Write(intcommand) {intdigitalWrite(LCD1602_RS,LOW);digitalWrite(LCD1602_RW,LOW);digitalWrite(mand&for(i=DB[0];i<=for(i=DB[0];i<=9;{digitalWrite(i,temp&080)tp<=1;}for(i=DB[0];i<=10;{digitalWrite(i,temp&0x80);temp<<=1;}digitalWrite(LCD1602_EN,HIGH);digitalWrite(LCD1602_EN,LOW);}voidLCD_Data_Write(intdat) {intdigitalWrite(LCD1602_RS,HIGH);digitalWrite(LCD1602_RW,LOW);digitalWrite(LCD1602_EN,LOW);temp=dat&0xf0;for(i=DB[0];i<=9;{digitalWrite(i,temp&0x80);temp<<=1;}digitalWrite(LCD1602_EN,HIGH);digitalWrite(LCD1602_EN,LOW);temp=(dat&0x0f)<<4;for(i=DB[0];i<=10;{digitalWrite(i,temp&0x80);temp<<=1;}digitalWrite(}**digitalWrite(}**********voidLCD_SET_XY(intx,inty {intif(y==0) address=0x80+x; address=0xC0+x;}voidLCD_Write_Char(intx,inty,intdat) {LCD_SET_XY(x,y}voidLCD_Write_String(intX,intY,char*s)//寫字符Arduino使 htp:/q-robottaobo {LCD_SET_XY(X,Y //設(shè)while {s++;}}voidsetup(void){inti=for(i=6;i<=12;{}mand_Write(0x28);//425x7del(0)del(0) mad_Wrte0}voidloop(void){ }編譯后,進(jìn)Arduino,顯示如圖 #incudeLCD4Bitlcd lcd.cursorTo(2, //line=2,lcd.leftScroll(20,50); 注意:若使用LCD4Bit.h的話,RW需要接地.第六課Arduino驅(qū)動(dòng)直流電驅(qū)動(dòng)模塊DF-MDV1.2,電路連接非常簡(jiǎn)單。注 擬不壓值,從而控制加到電機(jī)兩端的電壓高低來(lái)實(shí)現(xiàn)調(diào)速。intEN1=9; intIN1=8;intIN2=intEN2 intIN3=5;intIN4intIN3=5;intIN4=4;void{deIN1OUPU}void{intfor(value=0;value<=255;{ //改變電平方向,電機(jī)反轉(zhuǎn) ogWrite(EN1,value);//調(diào)速ogWrite(EN2,value);//調(diào)速}}Arduino使 http//q- 第七課Arduino讀紅外測(cè)距傳感器Arduino讀紅外測(cè)距傳感器GP2D12實(shí)例,大家參考器材:Arduino開(kāi)發(fā)板,GP2D12,1602字符液晶,連接線若干是 是標(biāo)準(zhǔn)電流消耗:33-50從曲線圖中我們可以看出,輸出電壓并非是線性的所以這個(gè)測(cè)距也只能個(gè)大概如果要精度高的話就需要做非線性校正,這里我們就不討論這個(gè)題了。實(shí)驗(yàn)原理GP1根據(jù)離的遠(yuǎn)近輸出相應(yīng)電壓,經(jīng)Arduino開(kāi)發(fā)板0號(hào)模擬口輸入,轉(zhuǎn)換成數(shù)字量,根據(jù)公 intledpin=intledpin=intLCD1602_RS=12;intLCD1602_RW=11;intLCD1602EN=1intB[]=6,78char charstr2[]="Renge:00cm";charstr3[]="Rengevoidsetup(void){inti=for(i=6;i<=13;{}}voidloop(void){floattemp;intval;{val= //改變被除數(shù),可以減小點(diǎn)誤差 //由G2D12成反比所以要用一個(gè)常量相減改變這常,可以減小點(diǎn)誤差。va{ //超出范圍顯示Renge}{}}}Arduino使 htp://q- 第八課Arduino控制舵舵機(jī),又稱伺服馬達(dá),是一種具有閉環(huán)控制系統(tǒng)的機(jī)電結(jié)構(gòu)。舵機(jī)主要是由外殼、電路板、無(wú)馬達(dá)、齒輪與位置檢測(cè)器所構(gòu)成。其工作原理是由控制器發(fā)出(脈沖寬度調(diào)制信號(hào)給舵機(jī),經(jīng)電路板上的IC處理后計(jì)算出轉(zhuǎn)動(dòng)方向,再驅(qū)動(dòng)無(wú)馬達(dá)轉(zhuǎn)動(dòng),透過(guò)齒輪將動(dòng)力傳至擺臂,同時(shí)由位置檢測(cè)器(電位器)返回位置信號(hào),判斷是否已經(jīng)到達(dá)設(shè)定位置,一般舵機(jī)只能旋轉(zhuǎn)180度。舵機(jī)有3根線,棕色為地,紅色為電源正,橙色為信號(hào)線,但不同牌子的舵機(jī),線的顏色可能不同,請(qǐng)機(jī)的機(jī)的轉(zhuǎn)動(dòng)位置是靠控制 (脈沖寬度調(diào)制信號(hào)的占空比來(lái)實(shí)現(xiàn)的,標(biāo)準(zhǔn)(脈沖寬度調(diào)制信號(hào)的周期固定為0ms,占空比0.5~2.5ms的正脈沖寬度和舵機(jī)的轉(zhuǎn)角-90°~90對(duì)注于牌同控解 ArduinoArduino使夢(mèng)工 實(shí)驗(yàn)需要擴(kuò)展板一個(gè),舵機(jī)實(shí)驗(yàn)需要擴(kuò)展板一個(gè),舵機(jī)3只。由于只是做演示用,舵機(jī)5v電源就暫時(shí)使用Arduino用,因?yàn)槎鄠€(gè)舵機(jī)轉(zhuǎn)動(dòng)時(shí)電流比較大,Arduino上的電源可能會(huì)因過(guò)熱而保護(hù)甚至損壞,電源選擇跳線需要接到外部供電,不可使用USB供電。Arduino給我們提供了一個(gè)很好的舵機(jī)調(diào)用函數(shù)庫(kù)(舵機(jī)函數(shù)庫(kù)地址),可以讓Arduino任意IO口控制舵機(jī),下列代碼使用Arduino的編譯環(huán)境中的串口監(jiān)視器發(fā)送數(shù)據(jù)來(lái)控制舵機(jī)旋轉(zhuǎn)角度。#includeServoservo1;//定義舵機(jī)1Servoservo2;//定義舵機(jī)2Servoservo3;//定義舵機(jī)3voidsetup(){ servo1.setumPulse(2200);//定義旋轉(zhuǎn)的時(shí)間 }void{staticstaticintv=if({ Ser d口數(shù)h({case'0'...'9vv*10ch0';//字符換算成10casea,則表示是servo1的數(shù)據(jù),比如串口發(fā)送v=caseb,則表示是servo2的數(shù)據(jù),比如串口發(fā)送v=casec,則表示是servo3的數(shù)據(jù),比如串口發(fā)送v=}}}第九課Arduino通過(guò)無(wú)線數(shù)傳通訊實(shí)通訊。下面先介紹一下APC220的特性和參數(shù)配置。(1)。APC220工作頻率15Mzo(1)。APC220工作頻率15Mzo455Hz460Hzto4MH(1KHz調(diào)制頻率間隔空中傳輸速率1200接口速率1200接口效驗(yàn)方式接口緩沖空間工作濕度10%~90%(無(wú)冷凝工作溫度20℃電源3.35.5V50mV發(fā)射電流接收電流休眠電流尺寸39mmx19mmx。APC220的上位機(jī)軟。USB轉(zhuǎn)接器的使用PC錯(cuò)位,請(qǐng)看下圖的紅色標(biāo)記,避免連接錯(cuò)誤。USB器插到電腦上需要安裝驅(qū)動(dòng)程序驅(qū)動(dòng)大家應(yīng)該比較熟練了吧,這里就不多講了,驅(qū)動(dòng)地址。PCUSBAPC伴侶選選擇PCSeri

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論