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