树莓派+TCA9548+PCA9685+舵机:wiringPi实现
参考:https://blog.youkuaiyun.com/weixin_38956024/article/details/95101686
上篇文章《树莓派+PCA9685+舵机控制:wiringPi实现》已讲解树莓派+PCA9685+舵机,本篇文章讲解树莓派+TCA9548+PCA9685+舵机wiringPi实现。
1接线
很简单,本图供参考:
2代码:
#include <stdbool.h>
#include <stdio.h>
#include "wiringPi.h"
#include <wiringPiI2C.h>
#include <unistd.h>
bool PCA9685Init();
void ResetPca9685();
void PCA9685SetPwmFreq(unsigned short freq);
void PCA9685SetPwm(unsigned char channel, unsigned short on, unsigned short value);
void SetServoPulse(unsigned char channel, unsigned short pulse);
#define TCA9548_ADDRESS 0x70 //tca9548地址
#define PCA9685_ADDRESS 0x40 //pca9685地址
#define PCA9685_CLOCK_FREQ 25000000 //PWM频率25MHz
#define PCA9685_MODE1 0x00
#define PCA9685_MODE2 0x01
#define PCA9685_PRE_SCALE 0xFE
#define PCA9685_LED0_ON_L 0x06
#define PCA9685_LED0_ON_H 0x07
#define PCA9685_LED0_OFF_L 0x08
#define PCA9685_LED0_OFF_H 0x09
#define PCA9685_LED_SHIFT 4
bool WriteByte(int fd, unsigned char regAddr, unsigned char data);
unsigned char ReadByte(int fd, unsigned char regAddr);
bool TCA9548AInit();
bool PCA9685_initSuccess = false;
int PCA9685_fd = 0;
int TCA9548_fd = 0;
int main()
{
wiringPiSetup();
TCA9548AInit();

本文介绍使用树莓派、TCA9548、PCA9685和舵机进行控制的方法,提供了C和Python两种语言的代码实现,详细展示了如何通过wiringPi库进行初始化、设置PWM频率及脉冲,实现舵机角度调节。
最低0.47元/天 解锁文章
1万+





