L298N 小车应用(附代码)
L298N
L298N是目前智能小車應用很廣泛的價格也比較便宜的電機驅動,用來驅動直流電機。
L298N
輸出A 輸出B 分別接兩個直流電機,電機兩根線隨便接,如果發現兩電機方向是反著的,就調換下接線就ok了。
12V供電 這個是外部電源為驅動板供電的接口,一般驅動電壓實際可以接受的輸入范圍是7~12V,此時可以使能板載的5V邏輯供電。當使用大于12V的驅動電壓時,為了避免穩壓芯片損壞,首先要拔掉板載5V輸出使能的跳線帽,然后在5V輸出端口外部接入5V電壓對L298N內部邏輯供電。
5V供電 引出5V電壓接到Arduino板,給Arduino板供電(驅動電壓7~12V)連接到UNO板的5V,同時Arduino板也要引出一條GND線,連接到L298N的GND與外部電源共地。
ENA ENB通道A使能,通道B使能,當你不用PWM時不需要拔掉跳線帽,當你需要PWM時,將需要拔掉跳線帽,接到arduino上的模擬輸入輸出接口。
IN1 IN2 IN3 IN4邏輯輸出口,其中IN1 IN2 控制一個電機的轉動,IN3 IN4 控制另一個電機的轉動,只要一個置高 一個置低,就可以讓電機轉動起來。
硬件連線
Ardunio <--> L298N 5V <--> 5V供電(非必要) GND <--> GND(非必要) 輸出引腳 <--> ENA ENB IN1~4外部電源 12V供電 GND不使用PWM實現小車的部分功能代碼
int input1=5; // 定義uno的pin 5 向 in1 輸出 int input2=6; // 定義uno的pin 6 向 in2 輸出 int input3=9; // 定義uno的pin 9 向 in3 輸出 int input4=10; // 定義uno的pin 10 向 in4 輸出 void setup() { Serial.begin (9600); //初始化各IO,模式為OUTPUT 輸出模式 pinMode(input1,OUTPUT); pinMode(input2,OUTPUT); pinMode(input3,OUTPUT); pinMode(input4,OUTPUT); }void loop(){ //forward 向前轉 digitalWrite(input1,HIGH); //給高電平 digitalWrite(input2,LOW); //給低電平 digitalWrite(input3,HIGH); //給高電平 digitalWrite(input4,LOW); //給低電平 delay(1000); //延時1秒 //stop 停止 digitalWrite(input1,LOW); digitalWrite(input2,LOW); digitalWrite(input3,LOW); digitalWrite(input4,LOW); delay(500); //延時0.5秒 //back 向后轉 digitalWrite(input1,LOW); digitalWrite(input2,HIGH); digitalWrite(input3,LOW); digitalWrite(input4,HIGH); delay(1000); }使用PWM調制控制小車
void forward();void turnleft();void turnright();void stopcar();int ENA1=5; int ENB1=6; int IN1=2; int IN2=3; int IN3=4; int IN4=7;int ENA2=9; int ENB2=10; int IN5=8; int IN6=11; int IN7=12; int IN8=13;void setup() {for(int i=2;i<=13;i++){pinMode(i,OUTPUT);}Serial.begin(9600); } int x=1500; void loop() { forward();delay(x);turnleft();delay(x/3);forward();delay(x);turnright();delay(x/3);stopcar(); } void forward(){analogWrite(ENA1,255);analogWrite(ENB1,255);digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);analogWrite(ENA2,255);analogWrite(ENB2,255);digitalWrite(IN5,HIGH);digitalWrite(IN6,LOW);digitalWrite(IN7,HIGH);digitalWrite(IN8,LOW); } void turnback(){analogWrite(ENA1,255);analogWrite(ENB1,255);digitalWrite(IN1,LOW);digitalWrite(IN2,HIGH);digitalWrite(IN3,LOW);digitalWrite(IN4,HIGH);analogWrite(ENA2,255);analogWrite(ENB2,255);digitalWrite(IN5,LOW);digitalWrite(IN6,HIGH);digitalWrite(IN7,LOW);digitalWrite(IN8,HIGH);} void stopcar(){analogWrite(ENA1,0);analogWrite(ENB1,0);digitalWrite(IN1,LOW);digitalWrite(IN2,LOW);digitalWrite(IN3,LOW);digitalWrite(IN4,LOW);analogWrite(ENA2,0);analogWrite(ENB2,0);digitalWrite(IN5,LOW);digitalWrite(IN6,LOW);digitalWrite(IN7,LOW);digitalWrite(IN8,LOW);}void turnleft(){analogWrite(ENA1,255);analogWrite(ENB1,255);digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);analogWrite(ENA2,255);analogWrite(ENB2,255);digitalWrite(IN5,LOW);digitalWrite(IN6,HIGH);digitalWrite(IN7,LOW);digitalWrite(IN8,HIGH);}void turnright(){analogWrite(ENA1,255);analogWrite(ENB1,255);digitalWrite(IN1,LOW);digitalWrite(IN2,HIGH);digitalWrite(IN3,LOW);digitalWrite(IN4,HIGH);analogWrite(ENA2,255);analogWrite(ENB2,255);digitalWrite(IN5,HIGH);digitalWrite(IN6,LOW);digitalWrite(IN7,HIGH);digitalWrite(IN8,LOW);}(程序代碼直接復制粘貼可能編譯出錯,因為有中文空格或者字符!盡管我是用英文輸入的,但經常編譯出現中文的錯誤。)
這樣的小車只能按照寫好的程序運動,如果我們用藍牙或者紅外遙控來控制小車才能使小車按照我們的想法隨意運動,下次介紹。
總結
以上是生活随笔為你收集整理的L298N 小车应用(附代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [css] 使用css3实现一个斑马线的
- 下一篇: [css] 用css3实现伪3D的文字