日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Arduino】基于Arduino的循迹小车电路连接与程序编写

發(fā)布時間:2023/12/31 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Arduino】基于Arduino的循迹小车电路连接与程序编写 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • L298P工作原理:
    • L298P與其他元件的連接方法:laughing:
      • 與Arduino的連接
      • 與紅外傳感器的連接:smile_cat:
      • 電機的連接
    • 程序編寫:smiley:
    • Aruino函數(shù)說明
      • 初始宏定義
      • 功能函數(shù)定義
      • 初始化函數(shù)
      • 主任務循環(huán)
      • 完整代碼如下:haircut:
      • 無法循跡、出現(xiàn)錯誤怎么調(diào):apple:

Author:1071094493@qq.com


L298P工作原理:

? 上圖是本文中使用的L298P驅(qū)動,他的作用是將輸入的3.3V或5V低壓信號轉(zhuǎn)換為高壓信號。

? 上圖是L298P的原理圖,從上圖可以看出對于L298P芯片而言當In1(單片機輸入)為高電平時輸出Out1將會和Vs(電源)連通也為高電平,當為低電平時Out1將會和地相連。對于(In2-Out2)(In3-Out3)(In4-Out4)這三種組合也是同樣的道理,通過電路結(jié)構(gòu)我們發(fā)現(xiàn),只有圖中的EnA與EnB同時為高電平時,四個輸出接口(Out1、Out2、Out3、Out4)才會出現(xiàn)有效值。利用這個特點我們可以通過拉低EnA和EnB的值來關閉輸出實現(xiàn)剎車的目的。

L298P與其他元件的連接方法😆

與Arduino的連接

首先將L298P電機驅(qū)動板查到Arduno板上如下圖所示:

安裝效果如下圖

與紅外傳感器的連接😸

? 本次實驗采用的紅外傳感器如下圖所示,有三個引腳VCC、GND和Out引腳。其中VCC為電源正極引腳,GND為電源負極引腳,Out為輸出腳。白色小燈泡發(fā)射紅外線,黑色小燈泡負責接收紅外信號。調(diào)節(jié)模塊上面藍色可調(diào)變阻器的阻值可以調(diào)節(jié)紅外傳感器的探測范圍

? 當模塊可以收到紅外信號時模塊信號燈亮起,此時可以看到模塊上有兩個紅燈會亮(一個為電源燈,另一個為信號燈)。同時Out端電壓由高電平變?yōu)榈碗娖健M瑯拥牡览碛捎诤谏占t外光線能力強、白色反射能力強,當紅外對準白色區(qū)域時紅外線會被反射回來,Out由高到低,當對準黑線時白燈發(fā)射的紅外信號會被黑線吸收,模塊收不到紅外信號Out端就會被拉高,輸出高電平。

電機的連接

將電機驅(qū)動板與Arduino開發(fā)板按照第一步插在一起后按照上圖連好電機與紅外傳感器即可。

程序編寫😃

Aruino函數(shù)說明

函數(shù)名函數(shù)寫法參數(shù)說明
PWM輸出函數(shù)analogWrite(number,value);number是十進制數(shù)字,對應Arduino引腳號。value為0-255之間的值。
開關數(shù)字量函數(shù)digitalWrite(number,HIGH/LOW)number同上,第二個參數(shù)為HIGH時引腳輸出高電平,為LOW時輸出低。

初始宏定義

下方代碼是對接口的宏定義,采用宏定義而非變量原因在于,宏定義在程序運行時不可改變。

//對接口進行重命名(此處需要根據(jù)自己的驅(qū)動引腳分布進行改變-本文以L298P為例) #define ENA 10 #define ENB 11//IN1與IN2在電路中通過反相芯片進行反相因此不必再定義In2和In4 //IN3與IN4反相 #define IN1 12 #define IN3 13//將電機接口朝上 //L298P 從左至右分別為OUT 1 2 3 4//定義紅外傳感器輸入接口 //左側(cè)紅外使用8腳輸入,右側(cè)使用9腳 //壓到白線為低電平,壓到黑線輸出高電平 #define L_SENSE 8 #define R_SENSE 9

紅外傳感器信號采集變量定義

//定義全局變量用于讀取紅外傳感器的值 int L=0; int R=0;

功能函數(shù)定義

void start_run() {//開始運行analogWrite(ENA,100);analogWrite(ENB,100);digitalWrite(IN1,HIGH);digitalWrite(IN3,HIGH); }void stop_run() {//剎車analogWrite(ENA,0);analogWrite(ENB,0);digitalWrite(IN1,HIGH);digitalWrite(IN3,HIGH); }void direct_run() {//直行analogWrite(ENA,100);analogWrite(ENB,100);digitalWrite(IN1,HIGH);digitalWrite(IN3,HIGH); }void left_run() {//向左轉(zhuǎn)analogWrite(ENA,100);analogWrite(ENB,50);digitalWrite(IN1,HIGH);digitalWrite(IN3,HIGH); }void right_run() {//向右轉(zhuǎn)analogWrite(ENA,50);analogWrite(ENB,100);digitalWrite(IN1,HIGH);digitalWrite(IN3,HIGH); }

初始化函數(shù)

void setup() {//初始化接口模式輸出pinMode(ENA,OUTPUT);pinMode(ENB,OUTPUT);pinMode(IN1,OUTPUT);pinMode(IN3,OUTPUT);//定義接口模式紅外輸入pinMode(L_SENSE, INPUT);pinMode(L_SENSE, INPUT);//設置串口波特率為9600Serial.begin(9600);//上電即開始運行start_run(); }

主任務循環(huán)

void loop() {//分別讀取左右兩個紅外傳感器的狀態(tài)L=digitalRead(L_SENSE);R=digitalRead(R_SENSE);//當兩側(cè)同時為低電平時左右都不壓線if(L==LOW&&R==LOW){direct_run();}else if(L==LOW&&R==HIGH)//當右側(cè)壓線時向左轉(zhuǎn){right_run();}else if(L==HIGH&&R==LOW)//當左側(cè)壓線時向右轉(zhuǎn){left_run();}else{direct_run();//默認情況下直行 } }

完整代碼如下💇

//對接口進行重命名 #define ENA 10 #define ENB 11//IN1與IN2在電路中通過反相芯片進行反相 //IN3與IN4反相 #define IN1 12 #define IN3 13//將電機接口朝上 //L298P 從左至右分別為OUT 1 2 3 4//定義紅外傳感器輸入接口 //左側(cè)紅外使用8腳輸入,右側(cè)使用9腳 //壓到白線為低電平,壓到黑線輸出高電平 #define L_SENSE 8 #define R_SENSE 9//定義全局變量用于讀取紅外傳感器的值 int L=0; int R=0;void setup() {//初始化接口模式輸出pinMode(ENA,OUTPUT);pinMode(ENB,OUTPUT);pinMode(IN1,OUTPUT);pinMode(IN3,OUTPUT);//定義接口模式紅外輸入pinMode(L_SENSE, INPUT);pinMode(L_SENSE, INPUT);//設置串口波特率為9600Serial.begin(9600);start_run(); }

無法循跡、出現(xiàn)錯誤怎么調(diào)🍎

1:檢查電池電量是否充足

2:代碼沒有問題,經(jīng)過檢驗可以進行循跡,不要隨便修改。

3:采用兩個紅外傳感器就行,傳感器之間距離不要太遠,也不要太靠近。兩傳感器分置黑線兩側(cè)、距離黑線2-3CM為佳。

4:紅外傳感器不要和驅(qū)動輪在同一天直線上,否則小車來不及反應,容易跑偏。

5:上電之后默認為直行,檢查兩個電機是否均為向前轉(zhuǎn)動,如果不是調(diào)換下電機兩個接口使其正向轉(zhuǎn)動。

6:此處定義紅外信號采集腳為8、9腳,如果無法循跡調(diào)換左右兩個紅外傳感器輸入腳試試,比如左側(cè)傳感器插入到9腳中。

總結(jié)

以上是生活随笔為你收集整理的【Arduino】基于Arduino的循迹小车电路连接与程序编写的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。