资源简介
树莓派_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试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
- 一个简单的python爬虫
- csv文件行列转换python实现代码
- Python操作Mysql教程手册
- Python Machine Learning Case Studies
- python获取硬件信息
评论
共有 条评论