树莓派之驱动串口总线舵机


在我们做机器人项目的时候,不可避免的要和总线舵机打交道,今天就介绍怎么去测试总线舵机。

前言

驱动舵机之前需要先去安装pigpio库和配置串口
一、安装pigpio库
二、配置串口

一、硬件连接

在这里插入图片描述

二、编写程序

#!/usr/bin/python3

import serial
import pigpio
import time

pi = pigpio.pi()  #初始化 pigpio库
serialHandle = serial.Serial("/dev/ttyAMA0", 115200)  #初始化串口, 波特率为115200


##
##命令发送
##
def servoWriteCmd(id, cmd, par1 = None, par2 = None):
    buf = bytearray(b'\x55\x55')
    try:
        len = 3   #若命令是没有参数的话数据长度就是3
        buf1 = bytearray(b'')

	## 对参数进行处理
        if par1 is not None:
            len += 2  #数据长度加2
            buf1.extend([(0xff & par1), (0xff & (par1 >> 8))])  #分低8位 高8位 放入缓存
        if par2 is not None:
            len += 2
            buf1.extend([(0xff & par2), (0xff & (par2 >> 8))])  #分低8位 高8位 放入缓存
        buf.extend([(0xff & id), (0xff & len), (0xff & cmd)])
        buf.extend(buf1) #追加参数

	##计算校验和
        sum = 0x00
        for b in buf:  #求和
            sum += b
        sum = sum - 0x55 - 0x55  #去掉命令开头的两个 0x55
        sum = ~sum  #取反
        buf.append(0xff & sum)  #取低8位追加进缓存
        serialHandle.write(buf) #发送
    except Exception as e:
        print(e)

def portInit(): #配置用到的IO口
    pi.set_mode(17, pigpio.OUTPUT)  #配置RX_CON 即 GPIO17 为输出
    pi.write(17, 0)
    pi.set_mode(27, pigpio.OUTPUT)  #配置TX_CON 即 GPIO27 为输出
    pi.write(27, 1)

def portWrite():  #配置单线串口为输出
    pi.write(27, 1)  #拉高TX_CON 即 GPIO27
    pi.write(17, 0)  #拉低RX_CON 即 GPIO17
    

def portRead():   #配置单线串口为输入
    pi.write(27, 0) #拉低TX_CON 即 GPIO27
    pi.write(17, 1) #拉高RX_CON 即 GPIO17


portInit()
while True:
    try:
        portWrite() #将单线串口配置为输出
        servoWriteCmd(1,1,0,1000) #发送命令 参数1 舵机id=1, 参数2 命令 = 1, 参数3 位置 = 0, 参数4 时间 = 1000ms
        time.sleep(1.1)
        servoWriteCmd(1,1,1000,2000)
        time.sleep(2.1)
    except Exception as e:
        print(e)
        break

需要修改为对应的舵机的ID,这里使用的是1,舵机出厂默认是1

三、测试

直接在树莓派运行这个程序,发现舵机会转动
在这里插入图片描述
测试成功。

  • 3
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值