文章目錄[隱藏] 我們都知道Arduino控制板支持PWM的引腳有限,,但如果在Arduino上需要控制超出PWM引腳數(shù)量的舵機(jī)怎么辦呢,?答案是使用servo.h庫(kù)文件,它是Arduino控制舵機(jī)的標(biāo)準(zhǔn)庫(kù)之一,。 Servo.h查看Arduino庫(kù)文件列表,,可通過(guò)Arduino IDE的“Help”菜單下的“Reference”查看。 我們可以看到在Arduino標(biāo)準(zhǔn)庫(kù)中的servo庫(kù),,單擊連接后進(jìn)入,,可查看servo.h文件更詳細(xì)的內(nèi)容。 在上圖左邊是對(duì)servo庫(kù)文件的基本介紹,,右邊是主要的函數(shù)和示例,。 Servo庫(kù)文件使用我們知道舵機(jī)必須定期接收高電平脈沖控制信號(hào)才能維持轉(zhuǎn)動(dòng)。如果信號(hào)停止,,舵機(jī)也停止,。詳見(jiàn):舵機(jī)角度的控制。如果使用servo庫(kù)來(lái)設(shè)置控制信號(hào),就可以通過(guò)引入一些代碼,,實(shí)現(xiàn)如延遲,、檢查傳感器、等待等功能,。同時(shí),,由于servo庫(kù)一直在后臺(tái)運(yùn)行,而舵機(jī)一直在旋轉(zhuǎn),,它會(huì)經(jīng)常中斷其他正在執(zhí)行的代碼來(lái)啟動(dòng)那些高脈沖,,帶是這個(gè)切換的動(dòng)作快到我們感知不到。 使用servo庫(kù)來(lái)發(fā)送舵機(jī)控制信號(hào)一般需要四個(gè)步驟: 1,、 首先要告訴Arduino編程器,,希望在代碼開(kāi)始時(shí),即setup函數(shù)之前,,聲明使用Servo庫(kù)函數(shù),。 #include <Servo.h> // Include servo library 2、 在#include和setup函數(shù)之間為要發(fā)送的信號(hào)命名servo庫(kù)的實(shí)例,。如下servoLeft就是指定的實(shí)例名稱,。 Servo servoLeft; // Declare left servo 3、 在setup函數(shù)中,,使用給出的舵機(jī)信號(hào)的名稱后跟一個(gè)點(diǎn),,然后通過(guò)附加函數(shù)attach()調(diào)用信號(hào)引腳。這個(gè)例子告訴系統(tǒng)舵機(jī)信號(hào)servoLeft應(yīng)該通過(guò)數(shù)字引腳13來(lái)傳輸,。 servoLeft.attach(13); // Attach left signal to pin 13 4,、writeMicroseconds()函數(shù),用于設(shè)置脈沖持續(xù)時(shí)間,。 servoLeft.writeMicroseconds(1500); // 1.5 ms stay-still signal 5,、write()函數(shù), 作用是將一個(gè)角度值寫入舵機(jī),,設(shè)置軸轉(zhuǎn)動(dòng)的角度(該值是指角度),,0為在一個(gè)方向全速轉(zhuǎn)動(dòng),,180為在另一個(gè)方向上全速轉(zhuǎn)動(dòng),,接近90為復(fù)位。 servoLeft.write(90); // set servo to mid-point 6,、attached()函數(shù),,用于檢測(cè)servo變量是否正確連接至Arduino對(duì)應(yīng)引腳上。返回值為 true 和 false ,。 servoLeft.attached() 7,、detach()函數(shù), 作用是從對(duì)應(yīng)引腳上分離舵機(jī)變量。如果要將所有舵機(jī)變量分離,,則使用analogWrite()函數(shù)將引腳9和引腳10用于PWM輸出,。 servoLeft.detach() 8、read()函數(shù),, 用于讀取舵機(jī)的當(dāng)前角度值(傳遞給上次調(diào)用write()的值),。 servoLeft.read() 以上是servo.h庫(kù)文件的基本函數(shù)講解,如有不當(dāng)之處請(qǐng)諒解,。 |
|