樹莓派pca9685舵機驅動板python驅動

2021-09-19 19:23:40 字數 1814 閱讀 8449

#以下為python源程式  

#輸入通道與角度。即可選通並使該通道的舵機轉動到相應的角度

from __future__ import division #匯入 __future__ 檔案的 division 功能函式(模組、變數名....) #新的板庫函式 //=

import time

# import the pca9685 module.

import adafruit_pca9685 #匯入adafruit_pca9685模組

# uncomment to enable debug output.

#import logging

#logging.basicconfig(level=logging.debug) #除錯列印日誌輸出

# initialise the pca9685 using the default address (0x40).

pwm = adafruit_pca9685.pca9685() #把adafruit_pca9685.pca9685()引用位址賦給pwm標籤

# alternatively specify a different address and/or bus:

#pwm = adafruit_pca9685.pca9685(address=0x41, busnum=2)

#2^12精度 角度轉換成數值 #angle輸入的角度值(0--180) #pulsewidth高電平占空時間(0.5ms--2.5ms) #/1000將us轉換為ms #20ms時基脈衝(50hz)

#pulse_width=((angle*11)+500)/1000; //將角度轉化為500(0.5)<-->2480(2.5)的脈寬值(高電平時間) angle=180時 pulse_width=2480us(2.5ms)

#date/4096=pulse_width/20 ->有上pulse_width的計算結果得date=4096*( ((angle*11)+500)/1000 )/20 -->int date=4096((angle*11)+500)/20000;

def set_servo_angle(channel, angle): #輸入角度轉換成12^精度的數值

date=4096*((angle*11)+500)/20000 #進行四捨五入運算 date=int(4096*((angle*11)+500)/(20000)+0.5)

pwm.set_pwm(channel, 0, date)

# set frequency to 50hz, good for servos.

pwm.set_pwm_freq(50)

print('moving servo on channel x, press ctrl-c to quit...')

while true:

# move servo on channel o between extremes.

channel=int(input('pleas input channel:'))

angle=int(input('pleas input angle:'))

set_servo_angle(channel, angle)

#time.sleep(1)

樹莓派之PCA9685驅動無刷電機

關於i2c驅動,這裡用的是wiringpi做進一步封裝,i2c驅動的函式如下 include int checki2cdevicei ist unsigned char devaddr bool writebyte int fd,unsigned char regaddr,unsigned char...

了解PCA9685通過IIC控制多個舵機

iic概述 i2c inter integrated circuit bus 積體電路匯流排,該匯流排由nxp 原philips 公司設計,多用於主控制器和從器件間的主從通訊,在小資料量場合使用,傳輸距離短,任意時刻只能有乙個主機等特性。經常iic和spi介面被認為指定是一種硬體裝置,但其實這樣的說...

PCA9685通過IIC協議控制舵機的方式

iic協議的概述 iic即inter integratedcircuit 積體電路匯流排 是一種多向控制匯流排,由飛利浦半導體公司在八十年代初設計,主要是用來連線整體電路 ics 在iic中,多個晶元可以連線到同一匯流排結構下,同時每個晶元都可以作為實施資料傳輸的控制源,這種方式簡化了訊號傳輸匯流排...