今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi)
本人所用树莓派4B 装载的系统与版本如下:
版本可用命令 (lsb_release -a) 查询:
Python 版本3.7.3:
IIC驱动_PCA9685(16路舵机驱动模块)
文章提供测试代码讲解,整体代码贴出、测试效果图
目录
开启树莓派IIC配置:
启用IIC:
sudo raspi-config
pip3 install adafruit-pca9685
(这里的pi是你的用户名,这一步用于授权IIC)
sudo usermod -a -G i2c pi
重启树莓派
验证启用:
i2cdetect -l
i2cdetect -y 1
连接硬件:
代码编写:
改代码实现了循环0-180度转动MG996R舵机:
# -*- coding: utf-8 -*- from __future__ import division import time import Adafruit_PCA9685 pwm = Adafruit_PCA9685.PCA9685() servo_min = 150 # Min pulse length out of 4096 servo_max = 600 # Max pulse length out of 4096 def set_servo_pulse(channel, pulse): pulse_length = 1000000 # 1,000,000 us per second pulse_length //= 60 # 60 Hz print('{0}us per period'.format(pulse_length)) pulse_length //= 4096 # 12 bits of resolution print('{0}us per bit'.format(pulse_length)) pulse *= 1000 pulse //= pulse_length pwm.set_pwm(channel, 0, pulse) def set_servo_angle(channel,angle): angle=4096*((angle*11)+500)/20000 pwm.set_pwm(channel,0,int(angle)) #设置PCA9685的PWM频率为50Hz,这是控制伺服器时常用的频率。 pwm.set_pwm_freq(50) print('Moving servo on channel 0, press Ctrl-C to quit...') #代码后面设置的是channel 4和5的伺服器 while True: set_servo_angle(4,0) time.sleep(1) set_servo_angle(5,0) time.sleep(1) set_servo_angle(4,45) time.sleep(1) set_servo_angle(5,45) time.sleep(1) set_servo_angle(4,90) time.sleep(1) set_servo_angle(5,90) time.sleep(1) set_servo_angle(4,180) time.sleep(1) set_servo_angle(5,180) time.sleep(1)
测试效果图:
网上学习资料贴出:
标签:树莓,set,angle,servo,16,pulse,time,驱动 From: https://blog.csdn.net/qq_64257614/article/details/140225271