当前位置:   article > 正文

OpenMV:21控制多个舵机(需要模块PCA9685)_openmv控制双舵机

openmv控制双舵机


今天我们来学习下 OpenMV的舵机拓展板来控制多个舵机同时使用

如果我们想控制三个以上的舵机,就需要用到舵机拓展板PCA9685

PCA9685使用的是I2C协议,我们可以直接使用PCA9685舵机拓展板来控制八个舵机

舵机的供电采用的是4.8V-6V的电源,我们可以用四节~五节干电池来进行供电(一节干电池就是1.2V的电压) ——不能使用3.7V的锂离子电池供电!

对于电源的供电,我们直接将电源连接到OpenMV的VCC和GND两个引脚即可

连接

将电机拓展板PCA9685插到OpenMV上,电源(4.8V~6V)连接到右侧的VCC和GND上
在这里插入图片描述

一个有八个引脚,可以控制八个舵机,每排引脚从上往下是:PWM(信号线)、VCC(电源线)、GND(地线)


舵机的编号从左到右编号为0-7
在这里插入图片描述


代码

控制单个舵机的旋转

核心代码:servo.position(i, x) # 控制第i号舵机旋转x°

pc8596.py


import utime
import ustruct

class PCA9685:
    def __init__(self, i2c, address=0x40):
        self.i2c = i2c
        self.address = address
        self.reset()

    def _write(self, address, value):
        self.i2c.writeto_mem(self.address, address, bytearray([value]))

    def _read(self, address):
        return self.i2c.readfrom_mem(self.address, address, 1)[0]

    def reset(self):
        self._write(0x00, 0x00) # Mode1

    def freq(self, freq=None):
        if freq is None:
            return int(25000000.0 / 4096 / (self._read(0xfe) - 0.5))
        prescale = int(25000000.0 / 4096.0 / freq + 0.5)
        old_mode = self._read(0x00) # Mode 1
        self._write(0x00, (old_mode & 0x7F) | 0x10) # Mode 1, sleep
        self._write(0xfe, prescale) # Prescale
        self
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/825726?site
推荐阅读
相关标签
  

闽ICP备14008679号