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