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