树莓派GPIO的使用(电机驱动)

1.首先要引入头文件wiringPi.h

芯片的 GPIO 库,wiringPi库包含了一个命令行工具 gpio,它可以用来讴置 GPIO 管脚,可以用来读写GPIO 管脚,甚至可以在 Shell 脚本中使用来达到控制 GPIO 管脚的目的

#include <wiringPi.h>

2.宏定义设置引脚——高电平使能以及电机脉冲

看清楚电机需要多少个gpio的,不同电机定义的gpio数目也不一样,但道理都是一样,类推

#define ENA 23 //高电平使能
#define ENB 28 

#define IN1 24 //电机脉冲
#define IN2 27
#define IN3 29
#define IN4 25

注:这里宏定义设置的引脚参数和官方上的树莓派原理图不一样的(物理引脚号,红色框),代码上写的是映射后的GPIO(编码引脚号,绿色框),可以用输入命令行gpio readall就可以查看GPIO状态

所以在设置宏定义时,用的(绿色框)映射之后的GPIO,和原理图上(红色框)的对应起来就可以了

 

3.初始化

void Setup()
{
	wiringPiSetup();      //调用wiringpi库setup函数
	pinMode(ENA, OUTPUT); //设置GPIO的状态为输出(OUT)
	pinMode(ENB, OUTPUT);
	pinMode(IN1, OUTPUT);
	pinMode(IN2, OUTPUT);
	pinMode(IN3, OUTPUT);
	pinMode(IN4, OUTPUT);

	softPwmCreate(IN1, 0, 100);
	softPwmCreate(IN2, 0, 100);
	softPwmCreate(IN3, 0, 100);
	softPwmCreate(IN4, 0, 100);

	pwmSetMode(PWM_MODE_MS);
}

一定要将所用的GPIO的状态更改为OUT(输出状态,2.中的截图表格中的第4列可以看到状态)

4.然后自定义函数来驱动电机

void GoStright(int left, int right)
{
	digitalWrite(ENA, 1);
	digitalWrite(ENB, 1);

	softPwmWrite(IN1, right); //右轮速度
	softPwmWrite(IN2, 0);
	softPwmWrite(IN3, left);  //左轮速度
	softPwmWrite(IN4, 0);
}

5.最后再主函数main调用就可以了

int main(int argc, char *argv[])
{
    GoStright(50, 50);

    return 0;
}
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西伯利亚大橘猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值