资源简介
树莓派_python_PCA9685_16路舵机自定义角度控制源码,输入需要控制的角度就可以达到控制舵机移动,代码默认是控制0号端口,其他1-15自行修改
代码片段和文件信息
# -*- coding: UTF-8 -*-
import smbus
import time
pca9685_adr=0x40
pca9685_mode1adr=0x00
pca9685_mode2adr=0x01
pca9685_subadr1=0x02
pca9685_subadr2=0x03
pca9685_subadr3=0x04
pca9685_allcalladr=0x05
pca9685_led0_on_l=0x06
pca9685_led0_on_h=0x07
pca9685_led0_off_l=0x08
pca9685_led0_off_h=0x09
pca9685_all_led_on_l=0xfa
pca9685_all_led_on_h=0xfb
pca9685_all_led_off_l=0xfc
pca9685_all_led_off_h=0xfd
pca9685_pre_scale=0xfe
pca9685_testmode=0xff
pca9685_mode=0x00
bus=smbus.SMBus(1)
class PCA9685(object):
def __init__(self address=pca9685_adr):
self._address =address
self._bus = smbus.SMBus(1)
def init(self):
bus.write_byte_data(self._addresspca9685_mode1adr0x0)
# bus.write_byte_data(self._addressmode1adr0x21)
def setsq(selfhz):
hz=float(hz)
data=(25000000/(4096*hz))-1
data=int(data)
oldmode1=bus.read_byte_data(self._addresspca9685_mode1adr)
newmode1 = (oldmode1&0x7F) | 0x10
bus.write_byte_data(self._addresspca9685_mode1adrnewmode1)
bus.write_byte_data(self._addresspca9685_pre_scaledata)
bus.write_byte_data(self._addresspca9685_mode1adroldmode1)
time.sleep(0.005)
bus.write_byte_data(self._addresspca9685_mode1adroldmode1|0xa1)
self.init()
def hex1(selfx1):
if x1<0xff:
x_l=x1
x_h=0x00
else :
x_h=x1/256
x_l=x1-x_h*256
return x_lx_h
def write_16(selfledu_16):
(u_16_lu_16_h)=self.hex1(u_16)
bus.write_byte_data(self._addressledu_16_l)
bus.write_byte_data(self._addressled+1u_16_h)
def allinit(self):
self.write_16(pca9685_all_led_on_l0)
self.write_16(pca9685_all_led_off_l300)
def setallpwm(selfledonledoff):
self.write_16(pca9685_all_led_on_lledon)
self.write_16(pca9685_all_led_off_lledoff)
def setpwm(selfnledonledoff):
print ledonledoff
self.write_16(pca9685_led0_on_l+4*nledon)
self.write_16(pca9685_led0_on_l+4*nledoff)
def getsq(self):
data=bus.read_byte_data(self._addresspca9685_pre_scale)
hz=25000000/(4096*(data+1))
return hz
def setallangle(selfangle):
if angle>180:angle=180
if angle<0:angle=0
self.setsq(50)
time1=float(angle+45)/90
ledoff=int((time1/20)*4096)
self.write_16(pca9685_all_led_on_l0)
self.write_16(pca9685_all_led_off_lledoff)
def setangle(selfnangle):
“““
if angle<16:angle=16
hz=self.getsq()
print hz
time=float(1000/hz)#一个周期的时间
if angle>180:angle=180
time1=float(angle+45)/90
print timetime1
ledoff=int((time1/time)*4096)
print ledoff
“““
if angle>180:angle=180
if angle<0:angle=0
#self.setsq(50)
time1=flo
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-12-28 22:41 dj\
文件 3188 2016-06-04 21:18 dj\PCA9685.py
文件 410 2018-12-30 01:22 dj\testdj1.py
相关资源
- python从入门到实践课后试一试代码.
- Python PyQt5编写的天气预报
- Hopfield Neural Network——神经网络pytho
- 计算N50的python脚本
- python调用opencv进行人脸检测
- DP算法Python源代码
- Python 产生任意形状的封闭图形,并将
- python实现决策树分类算法
- ID3决策树python代码
- python 12306 查询余票代码
- 机器学习实战python2SVM 训练数据
- PEP8中文版PythonCodingRule.pdf
- python爬虫抓取百度贴吧中邮箱地址
- python获取新浪A股实时股票数据并实时
- 文本分类算法LDA
- python Django websocket 实时消息推送
- python serial模块
- mod_wsgi.so全版本
- Python 标准库 中文版
- 改进的SIR模型评估k个重要点算法(
-
gameob
jects-0.0.3 for python3 - opencv-python的dll
- 《Python标准库》中文版
- 使用Python操作摄像头[Windows]
- python的简单测试代码
- 贝叶斯方法预测的demo(Python版本)
- 天眼查抓取脚本tianyancha.py
- 逻辑回归 python代码+训练数据
- python3实现多线程破解tomcat简单密码
- scipy-0.18.1-cp27-27m-win_amd64.whl
评论
共有 条评论