樹莓派之驅動串列埠匯流排舵機

2021-10-20 07:34:11 字數 2206 閱讀 7282

在我們做機械人專案的時候,不可避免的要和匯流排舵機打交道,今天就介紹怎麼去測試匯流排舵機。

驅動舵機之前需要先去安裝pigpio庫和配置串列埠

一、安裝pigpio庫

二、配置串列埠

#!/usr/bin/python3

import serial

import pigpio

import

time

pi = pigpio.pi(

)#初始化 pigpio庫

serialhandle = serial.serial(

"/dev/ttyama0", 115200)

#初始化串列埠, 波特率為115200

####命令傳送

##def servowritecmd(id, cmd, par1 = none, par2 = none):

buf = bytearray(b'\x55\x55'

) try:

len = 3 #若命令是沒有引數的話資料長度就是3

buf1 = bytearray(b''

)## 對引數進行處理

if par1 is not none:

len += 2 #資料長度加2

buf1.extend(

[(0xff & par1), (0xff &

(par1 >> 8))])

#分低8位 高8位 放入快取

if par2 is not none:

len += 2

buf1.extend(

[(0xff & par2), (0xff &

(par2 >> 8))])

#分低8位 高8位 放入快取

buf.extend(

[(0xff & id), (0xff & len), (0xff & cmd)])

buf.extend(buf1)

#追加引數

##計算校驗和

sum= 0x00

for b in buf: #求和

sum += b

sum=sum - 0x55 - 0x55 #去掉命令開頭的兩個 0x55

sum= ~sum #取反

#取低8位追加進快取

serialhandle.write(buf)

#傳送 except exception as e:

print(e)

def portinit(

): #配置用到的io口

pi.set_mode(17, pigpio.output)

#配置rx_con 即 gpio17 為輸出

pi.write(17, 0)

pi.set_mode(27, pigpio.output)

#配置tx_con 即 gpio27 為輸出

pi.write(27, 1)

def portwrite(

): #配置單線串列埠為輸出

pi.write(27, 1)

#拉高tx_con 即 gpio27

pi.write(17, 0)

#拉低rx_con 即 gpio17

def portread(

): #配置單線串列埠為輸入

pi.write(27, 0)

#拉低tx_con 即 gpio27

pi.write(17, 1)

#拉高rx_con 即 gpio17

portinit(

)while true:

try:

portwrite(

)#將單線串列埠配置為輸出

servowritecmd(1,1,0,1000)

#傳送命令 引數1 舵機id=1, 引數2 命令 = 1, 引數3 位置 = 0, 引數4 時間 = 1000ms

time.sleep(1.1)

servowritecmd(1,1,1000,2000)

time.sleep(2.1)

except exception as e:

print(e)

break

需要修改為對應的舵機的id,這裡使用的是1,舵機出廠預設是1

直接在樹莓派執行這個程式,發現舵機會轉動

測試成功。

樹莓派python控制舵機 樹莓派控制舵機資料

舵機介紹 樹莓派pwm函式介紹 舵機角度和占空比對應的關係動畫。對應關係如下,範圍為 90 到 90 為了方便計算,可以將其對映到0 180 角度20ms內脈衝寬度 占空比對映後角度 90 0.5ms 2.5 0 45 1ms5.0 45 0 1.5ms 7.5 90 45 2ms10.0 135 ...

樹莓派控制舵機

說在前面 在網上找了一圈有關樹莓派控制舵機的 發現好多都是一模一樣的,重點是它們都貼著 原創 標籤。樹莓派不能直接輸出模擬電訊號,但我們可以使用pwm 脈寬調變 方法來模擬這一點。我們製作乙個固定頻率的數碼訊號,在那裡我們將改變脈衝寬度,將 轉換 改為 平均 輸出電壓的電平,我們可以使用這個 平均 ...

樹莓派串列埠

串列埠使用例程及說明 pyserial api sudo apt get install python serial python m serial.tools.list ports 此命令可以檢視裝置的檔案節點。class serial.serial init port none,baudrate...