树莓派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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章