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