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;
}