#以下為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中,多個晶元可以連線到同一匯流排結構下,同時每個晶元都可以作為實施資料傳輸的控制源,這種方式簡化了訊號傳輸匯流排...